PDA

View Full Version : [Python] 4 niubbi


kikino
16-05-2011, 14:01
ho il seguente codice di Python che ieri sera ho scritto avendo approcciato per la prima volta il mondo della programmazione, non solo il Python.

import math
x0=input ("inserisci il punto di partenza x0: "),float
L=input ("inserisci il coeff dello sviluppo L: "),float
N=input ("inserisci il numero di passi da valutare N: ")
N=int(N)
# x=x0 L (X0-1)
i=1
while i < N :
i += 1
x = x0*L*(x0-1)
print (i,x)
x0=x



Brevemente, serve a iterare per il numero N di volte l'espressione commentata alla riga 6 e stampare le coppie "indice, risultato dell'iterazione" .

il problema è che SciTe non trova errori nella sintassi, ma esce con l'errore:

File "tests.py", line 10, in <module>
x = x0*L*(x0-1)
TypeError: can't multiply sequence by non-int of type 'tuple'
>Exit code: 1

Chiaramente l'errore è nella riga di generazione di x.
ma,
che tipo di errore?
dove io avrei definito la tupla che lui richiama nell'errore?
Non riesco a capire dove sbaglio.

Anche con un esempio meno "complicato" come il calcolo del discriminante di un'equazione di 2° grado non riusciva a sviluppare le operazioni algebriche, perchè?

thx in advance

Ziosilvio
16-05-2011, 14:13
Quando scrivi:
x0 = input("inserisci il punto di partenza x0: "),float
la variabile x0 risulta non un float, ma una coppia formata da un valore numerico e da un tipo float. Stessa cosa succede alla variabile L.
Non si possono moltiplicare coppie per coppie.

Se vuoi costringere x0 ad essere un float, devi usare:
x0 = float(input("inserisci il punto di partenza x0: "))
ossia richiamare la funzione di conversione a tipo float sull'input ricevuto al prompt "inserisci il punto di partenza x0: ".
In alternativa, va bene anche:
x0 = input("inserisci il punto di partenza x0: ")
x0 = float(x0)
In questo modo, se input non ti ha ancora valutato x0 come float (per esempio perché hai scritto 0 che è un int) lo costringi a farlo.

kikino
16-05-2011, 14:19
Chi meglio di ZioSilvio per rispondere a un 3ad sull'applicazione quadratica?
Ti batteva solo Feigenbaum!

Grazie provo con il tuo suggerimento e vedo cosa esce