Topic: limiti delle istruzioni condizionali  (Letto 83 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline bambam

  • python unicellularis
  • *
  • Post: 31
  • Punti reputazione: 0
    • Mostra profilo
limiti delle istruzioni condizionali
« il: Gennaio 13, 2020, 12:36 »
buongiorno sto provando ad eseguire una funzione in cui devo inserire 3 condizioni if prima di eseguire un comando :
leggendo ho visto che è possibile inserire più condizioni all interno della stessa istruzione condizionale "if" aggiungendo "and" tra una condizione e l altra ma così facendo non ho alcun risultato .
se eseguo le  le condizione dell if una alla volta il programma esegue correttamente , insieme non da errori ma non esegue quello che dovrebbe.


if  consoledb_backend.spiderctrlconsole(str(ID.get()))    and    consoledb_backend.snakectrlconsole(str(ID.get()))   and     (len(DATE.get()) ==8):
     consoledb_backend.addconsolepastirec(ID.get() ,DATE.get())
     DataConsoleList.delete(0,END)
     DataConsoleList.insert(END,ID.get() , DATE.get())

 

se elimino le condizioni aggiunte dopo l istruzione  and  esegue , tutte e 3 le istruzioni sinolarmente funzionano .
ci sono dei limiti di richiamo di altre funzioni ?
perchè non esegue?

Offline nuzzopippo

  • python neanderthalensis
  • ****
  • Post: 255
  • Punti reputazione: 0
    • Mostra profilo
Re:limiti delle istruzioni condizionali
« Risposta #1 il: Gennaio 13, 2020, 13:27 »
... perchè non esegue?

???

Ma lo sai che è una "strana" domanda? Una concatenazione di "and" è vera se tutte le condizioni poste sono vere, falsa altrimenti. Evidentemente, almeno una delle condizioni poste è falsa. Esempio "al volo" :

Python 3.6.9 (default, Nov  7 2019, 10:44:02)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license()" for more information.
>>> id_spyder = '1'
>>> id_snake = ''
>>> data = '13012019'
>>> if id_spyder and id_snake and len(data) == 8:
print('Svuoto DataConsoleList')
print('Aggiorno DataConsoleList')
else:
print('Non faccio nulla')


Non faccio nulla
>>> id_snake = '13'
>>> if id_spyder and id_snake and len(data) == 8:
print('Svuoto DataConsoleList')
print('Aggiorno DataConsoleList')
else:
print('Non faccio nulla')


Svuoto DataConsoleList
Aggiorno DataConsoleList
>>>

Come vedi, passando id_snake da "vuoto" a "valorizzato" lo "if" viene eseguito nel secondo caso, mentre nel primo no. Evidentemente Ti trovi in una condizione simile.

... forse, dovresti  infarinarti un po' sulla base dei valori booleani, questa pagina mi sembra fatta in modo piuttosto chiaro e semplice, una lettura non sarebbe male, fai particolare attenzione alle tavole di comparazione tra valori booleani.