Forum >> Principianti >> problema: :)

Pagina: 1

ciao ragazzi ho un quesito per voi :)



facendo un po' di pratica con i primi capitoli del libro mi sono imbattuto in un problema:

- se il numero è multiplo di 3 stampa "si"

- altrimenti stampa "no"

a = input("inserisci un numero")
if (a/3)==type(int):
   print("si")
else: print("no")
print type(a)
lo so che il problema lo posso risolvere anche con il resto uguale a 0. Solo che voglio capire perchè con l'altra soluzione mi stampa il ''no''.




grazie mille ragazzi e scusate ma sono alle prime armi sto ancora imparando.



a = input("inserisci un numero")
if (a/3)==type(int):
   print("si")
else: print("no")
print type(a)
lo so che il problema lo posso risolvere anche con il resto uguale a 0. Solo che voglio capire perchè con l'altra soluzione mi stampa il ''no''.
Eccolo il punto, usa l'operatore "%" e semplificati la vita.

Nel tuo if sbagli, non deve essere uguale a type(int), ma al limite solo int. Ma anche così non ottieni quello che credi, perché stai dicendo a Python di fare una divisione di interi e quindi otterrai ancora un intero, cosa che non ti aspetteresti nel caso di una divisione con resto. Ma ecco che arriva in soccorso proprio "%" che ti mostra il resto dell'operazione.

Non deve sorprenderti se:
>>> 12/3 == 13/3
True
>>> 12%3 == 13%3
False
Cya
Daniele aka Palmux said @ 2017-09-29 00:55:04:
a = input("inserisci un numero")
if (a/3)==type(int):
   print("si")
else: print("no")
print type(a)
lo so che il problema lo posso risolvere anche con il resto uguale a 0. Solo che voglio capire perchè con l'altra soluzione mi stampa il ''no''.
Eccolo il punto, usa l'operatore "%" e semplificati la vita.

Nel tuo if sbagli, non deve essere uguale a type(int), ma al limite solo int. Ma anche così non ottieni quello che credi, perché stai dicendo a Python di fare una divisione di interi e quindi otterrai ancora un intero, cosa che non ti aspetteresti nel caso di una divisione con resto. Ma ecco che arriva in soccorso proprio "%" che ti mostra il resto dell'operazione.

Non deve sorprenderti se:
>>> 12/3 == 13/3
True
>>> 12%3 == 13%3
False
Cya

Innanzitutto grazie per la risposta.

Allora spiegami una cosa per favore. Su Python 3.6 se stampo 7/2 mi risponde con 3.5

Su Python 2 invece mi risponde con 3

Per avere il resto faccio 7%2 e trovo il resto, in questo caso di 1.

Allora perché non va?

Lo so che con l'operatore % mi semplifico la vita, vorrei solo capire il perché questa cosa.



Allora spiegami una cosa per favore. Su Python 3.6 se stampo 7/2 mi risponde con 3.5

Su Python 2 invece mi risponde con 3

Per avere il resto faccio 7%2 e trovo il resto, in questo caso di 1.

Allora perché non va?

Lo so che con l'operatore % mi semplifico la vita, vorrei solo capire il perché questa cosa.
Su Python3 sì, il mio esempio era con Py2 e comunque hai sbagliato il confronto nell'esempio di prima.

Hai diversi strumenti per controllare se va bene l'operazione (Python3.6):
>>> 12/3
4.0
>>> 13/3
4.333333333333333
>>> float.is_integer(12/3)
True
>>> float.is_integer(13/3)
False
Ora ci siamo dai e non vorrei averti fatto casino con l'esempio in Python 2, non so perché ero convinto usassi quello.

Cya




Pagina: 1



Esegui il login per scrivere una risposta.