Prime founder

« Older   Newer »
 
  Share  
.
  1. 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:
    CODICE
    TypeError: not all arguments converted during string formatting


    e riporta la seguente riga di codice:
    CODICE
    if 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 Allegato
    Prime_founder.py
    (Number of downloads: 10)

     
    Top
    .
  2. ~{Skydrake™}»
     
    .

    User deleted


    Non vorrei sbagliarmi, ma credo che l'errore sia qui:
    CODICE
    If n % 2

    Dovresti invece scrivere (ad esempio)
    CODICE
    If n % 2 = 0
     
    Top
    .
  3.  
    .
    Avatar

    Senior Member

    Group
    Staff
    Posts
    10,796

    Status
    Anonymous
    Si esatto, prova con
    CODICE
    if n%2 == 0 and n != 0
     
    Top
    .
  4. x-reynik-x
     
    .

    User deleted


    No perché se scrivo così mi dà invalid sintax
    e poi == significa "è uguale"
     
    Top
    .
  5. ~{Skydrake™}»
     
    .

    User deleted


    CITAZIONE (x-reynik-x @ 29/11/2009, 17:45)
    e poi == significa "è uguale"

    Appunto :D
    L'operatore MOD (%) restituisce il resto della divisione tra il primo ed il secondo operando.
     
    Top
    .
  6. x-reynik-x
     
    .

    User deleted


    CITAZIONE (~{Skydrake™}» @ 29/11/2009, 17:33)
    Non vorrei sbagliarmi, ma credo che l'errore sia qui:
    CODICE
    If n % 2

    Dovresti invece scrivere (ad esempio)
    CODICE
    If n % 2 = 0

    ah giusto era un errore di distrazione! prima ho detto che non andava perché ho pensato che mi dicessi di mettere:
    CODICE
    if n % 2 = 0 ....



    EDIT: mi dà di nuovo l'errore citato all'inizio:

    CODICE
    TypeError: not all arguments converted during string formatting


    e riporta la seguente riga di codice:

    CODICE
    if n % 2 == 0 and n != 2:


    Edited by x-reynik-x - 29/11/2009, 18:53
     
    Top
    .
  7. ~{Skydrake™}»
     
    .

    User deleted


    CITAZIONE (x-reynik-x @ 29/11/2009, 18:29)
    ho pensato che mi dicessi di mettere:
    CODICE
    if n % 2 = 0 ....

    E in effetti avevo scritto così, dato che non conosco Python, ma dopo il post di RootkitNeo credevo fosse tutto chiaro ;)

    CITAZIONE (x-reynik-x @ 29/11/2009, 18:29)
    EDIT: mi dà di nuovo l'errore citato all'inizio:

    CODICE
    TypeError: not all arguments converted during string formatting


    e riporta la seguente riga di codice:

    CODICE
    if n % 2 and n != 2:

    ? Non hai corretto la riga?
     
    Top
    .
  8. x-reynik-x
     
    .

    User deleted


    si l'ho corretta ma ho citato il post di prima. e mi dà lo stesso quell'errore
     
    Top
    .
  9. ~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.
     
    Top
    .
  10.  
    .
    Avatar

    Senior Member

    Group
    Staff
    Posts
    10,796

    Status
    Anonymous
    Quoto Andrea.
    Non so come funziona in Python, ma puoi provare con un cast
     
    Top
    .
  11. x-reynik-x
     
    .

    User deleted


    Ho provato ma mi dà sempre quel maledetto errore!
     
    Top
    .
  12.  
    .
    Avatar

    Senior Member

    Group
    Staff
    Posts
    10,796

    Status
    Anonymous
    Dopo ai print vedo una virgola credo.. tipo qui
    CODICE
    print(n, "non e' primo e il suo primo divisore e'", x),


    Perchè c'è la virgola?

    CODICE
    l = 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.
     
    Top
    .
  13. 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.....
    CODICE
    if n % 2 == 0 and n != 2:


    e sempre lo stesso stramaledettissimo errore!!!! :angry:
     
    Top
    .
  14.  
    .
    Avatar

    Senior Member

    Group
    Staff
    Posts
    10,796

    Status
    Anonymous
    Provalo senza grafica, e guarda mica che qualche componente converte come stringa per gestire il dato.. non so boh, provalo senza intanto! ;)
     
    Top
    .
  15. x-reynik-x
     
    .

    User deleted


    Grazie per il consiglio, ora provo!
     
    Top
    .
17 replies since 29/11/2009, 17:22   81 views
  Share  
.