-
x-reynik-x.
User deleted
Ho scritto un programmino che dato un numero in input dice se è primo. Visto che era semplice ci ho aggiunto un'interfaccia grafica creata con Tkinter e le cose si sono complicate. Quando metto il numero e clicco sul bottone mi dice: CODICETypeError: not all arguments converted during string formatting
e riporta la seguente riga di codice:CODICEif n % 2 and n != 2:
ecco il file .py se avete python per favore scaricatelo e guardate il codice
P.S. Se volete lo posto il codice, sono 57 righe(commenti inclusi)File AllegatoPrime_founder.py
(Number of downloads: 10)
. -
~{Skydrake™}».
User deleted
Non vorrei sbagliarmi, ma credo che l'errore sia qui: CODICEIf n % 2
Dovresti invece scrivere (ad esempio)CODICEIf n % 2 = 0. -
.
Si esatto, prova con CODICEif n%2 == 0 and n != 0. -
x-reynik-x.
User deleted
No perché se scrivo così mi dà invalid sintax
e poi == significa "è uguale". -
~{Skydrake™}».
User deleted
CITAZIONE (x-reynik-x @ 29/11/2009, 17:45)e poi == significa "è uguale"
Appunto
L'operatore MOD (%) restituisce il resto della divisione tra il primo ed il secondo operando.. -
x-reynik-x.
User deleted
CITAZIONE (~{Skydrake™}» @ 29/11/2009, 17:33)Non vorrei sbagliarmi, ma credo che l'errore sia qui:CODICEIf n % 2
Dovresti invece scrivere (ad esempio)CODICEIf n % 2 = 0
ah giusto era un errore di distrazione! prima ho detto che non andava perché ho pensato che mi dicessi di mettere:CODICEif n % 2 = 0 ....
EDIT: mi dà di nuovo l'errore citato all'inizio:CODICETypeError: not all arguments converted during string formatting
e riporta la seguente riga di codice:CODICEif n % 2 == 0 and n != 2:
Edited by x-reynik-x - 29/11/2009, 18:53. -
~{Skydrake™}».
User deleted
CITAZIONE (x-reynik-x @ 29/11/2009, 18:29)ho pensato che mi dicessi di mettere:CODICEif n % 2 = 0 ....
E in effetti avevo scritto così, dato che non conosco Python, ma dopo il post di RootkitNeo credevo fosse tutto chiaroCITAZIONE (x-reynik-x @ 29/11/2009, 18:29)EDIT: mi dà di nuovo l'errore citato all'inizio:CODICETypeError: not all arguments converted during string formatting
e riporta la seguente riga di codice:CODICEif n % 2 and n != 2:
? Non hai corretto la riga?. -
x-reynik-x.
User deleted
si l'ho corretta ma ho citato il post di prima. e mi dà lo stesso quell'errore . -
~Andrey™.
User deleted
Dall'errore mi pare di capire che "n" non è un intero. Forse il numero immesso viene considerato una stringa, quindi dovresti convertirlo. Prova a controllare. . -
.
Quoto Andrea.
Non so come funziona in Python, ma puoi provare con un cast. -
x-reynik-x.
User deleted
Ho provato ma mi dà sempre quel maledetto errore! . -
.
Dopo ai print vedo una virgola credo.. tipo qui CODICEprint(n, "non e' primo e il suo primo divisore e'", x),
Perchè c'è la virgola?CODICEl = int(math.sqrt(float(n)) + 1)
Prova a mettere int al posto di float..
Non saprei che può essere di preciso, sembra venga visto come stringa, il problema è perchè non lo segnala prima..
PS: Non conosco i cast in python, ma in java per avere una variabile come intero (ad esempio) devo fare: (int)variabile, e non int(variabile); ma ripeto, non so come funziona in python.. -
x-reynik-x.
User deleted
C'era la virgola perché dopo c'era il break ma era superflua, funziona lo stesso anche senza.
In python per convertire in intero si fa int(variabile), ne sono sicuro.
Anche mettendo int(variabile) al posto di float riporta sempre la stessa riga, non capisco.....CODICEif n % 2 == 0 and n != 2:
e sempre lo stesso stramaledettissimo errore!!!!
. -
.
Provalo senza grafica, e guarda mica che qualche componente converte come stringa per gestire il dato.. non so boh, provalo senza intanto! . -
x-reynik-x.
User deleted
Grazie per il consiglio, ora provo! .