Forum >> Principianti >> Forma corretta di un enunciato if

Pagina: 1

Ciao, questo è un esercizio di ripasso del capitolo sulle decisioni.
Perché è sbagliato scrivere un enunciato if in questo modo?


if 1 + x > x ** sqrt(2)

y = y + x

Se elevo x negativo alla radice di 2 con la calcolatrice il risultato è un numero negativo.

Effettuando l'operazione in python risulta un numero immaginario e quindi compare il messaggio di errore in quanto non è possibile confrontare un numero float con uno immaginario.

Perché questa differenza tra calcolatrice e python?



--- Ultima modifica di Alex in data 2017-12-04 01:33:08 ---

--- Ultima modifica di Alex in data 2017-12-04 01:34:03 ---
Ciao caro, ma che errori ricevi, di sintassi o altro?

1. Vedo subito un if scritto con la I maiuscola.
2. Hai richiamato sqrt con from math import sqrt?

Fai sapere, sono curioso.
Cya


--- Ultima modifica di Daniele aka Palmux in data 2017-12-04 01:37:12 ---
L'errore lo dà per x negativo.

if 1 + x > x ** sqrt(2) :

y = y + x

Se elevo x negativo alla radice di 2 con la calcolatrice il risultato è un numero negativo.

Effettuando l'operazione in python risulta un numero immaginario e quindi compare il messaggio di errore in quanto non è possibile confrontare un numero float con uno immaginario.

Perché questa differenza tra calcolatrice e python?

--- Ultima modifica di Alex in data 2017-12-04 01:43:22 ---
Mi ricordo poco delle nozioni degli studi, ma la radice quadrata di un numero negativo credo sia un numero complesso.

Per effettuare tali operazioni esiste il modulo cmatch che è proprio il modulo per le operazioni sui numeri complessi.

Ora non ho modo di provare, ma fai sapere se il discorso ti torna.

Cya
Ok, mi ricordo poco anch'io.
La matematica è fondamentale per programmare.
Grazie


Avevo sbagliato a scrivere l'espressione nella calcolatrice:
Per elevare un numero negativo devo racchiuderlo tra parentesi es: (-3)^1.4 perché altrimenti lo considera come se fosse scritto -1 * 3^1.4

Elevando un numero negativo per un numero irrazionale risulta infatti un numero complesso, ecco perché l'enunciato if non è corretto.






--- Ultima modifica di Alex in data 2017-12-04 02:34:55 ---
Ὅμηρος 蟒蛇 said @ 2017-12-04 01:59:12:
Avevo sbagliato a scrivere l'espressione nella calcolatrice:
Per elevare un numero negativo devo racchiuderlo tra parentesi es: (-3)^1.4 perché altrimenti lo considera come se fosse scritto -1 * 3^1.4

Elevando un numero negativo per un numero irrazionale risulta infatti un numero complesso, ecco perché l'enunciato if non è corretto.
Con due teste ne abbiamo fatta una, ora c'è una spiegazione... ;)

Cya
Risolvendo la disequazione 1 + x > x ** sqrt(2) con wolfram risulta avere soluzioni reali per 0 <= x < 2.35209, quindi porre la condizione dell'enunciato if in questa forma dovrebbe essere corretto.


Pagina: 1



Esegui il login per scrivere una risposta.