Forum >> Principianti >> Problema funzione exit()

Pagina: 1

Buongiorno a tutti, sono nuovissimo del forum in quanto ho cominciato ad usare da poco python.
Spiego in breve il problema che mi ritrovo certo del fatto che qualcuno possa aiutarmi senza problemi.




Sto facendo dei controlli, ossia :

    if Choix1.get():
        if Choix2.get():
            exit()
        else:    
            choix="b"
    else:
        choix="n"
    if Start1.get():
        if Start2.get():
            exit()
        else:
            start="h"
    else:
        start="m"
    if Scelta1.get():
        if Scelta2.get() or Scelta3.get():
            exit()
        else:
            scelta=1
    elif Scelta2.get():
        if Scelta3.get():
            exit()
        else:
            scelta=2
    else:
        scelta=3
    
questa è solo una parte del mio codice dato che il problema è relativo solo a questa parte.




Quando lancio il programma e uno di questi controlli non viene verificato mi chiede semplicemente di terminare il programma, qualunque argomento metta all'interno delle parentesi della funzione exit, invece vorrei che mi spuntasse un messaggio con l'errore specifico, è possibile fare ciò? Perchè ho visto diversi siti e spiegano exit("message"), ma non funziona nel mio caso, non saprei perchè.




Utilizzo Windows 10 ed il semplice Idle. (Python 3.7)




Spero di essere stato chiaro sufficientemente, qualora aveste dei dubbi sulla mia richiesta non esitate a chiedere.




Inoltre avrei un problema relativo alla GUI, questa è la sezione adatta anche per domande sulla GUI?





--- Ultima modifica di Braveheart20829 in data 2018-10-30 12:43:54 ---
> ho visto diversi siti e spiegano exit("message")

Ho un po' paura di chiederti quali sono questi "diversi siti"... se ne vedono di assurdità in giro. Il riferimento che devi guardare sempre è la documentazione ufficiale di python, nello specifico qui https://docs.python.org/3/library/constants.html#constants-added-by-the-site-module che è molto chiara.


In particolare, nota:
(...) They are useful for the interactive interpreter shell and
should not be used in programs
"Exit()" equivale a "exit(0)", vedi sotto.


"Exit('messaggio')" stampa il messaggio nello standard output e poi esce da python come se avessi chiamao "exit(1)", vedi sotto.


"Exit(0)" esce dalla shell di python "normalmente", ovvero innescando l'eccezione SystemExit che a sua volta esce dalla
shell di python restituendo alla shell del sistema operativo il codice di uscita "0" (che nella convenzione unix significa "il programma è terminato regolarmente").


"Exit(1)" o con un numero superiore esce dalla shell di python "in modo anomalo", ovvero innescando l'eccezione SystemExit che a sua volta esce dalla shell di python restituendo alla shell del sistema operativo il codice di uscita che hai messo (1 o superiore... nella convenzione unix vuole dire che c'è stata un'anomalia di qualche tipo).





Ora, non è che quando usi la shell interattiva di python c'è molto bisogno di usare un codice di uscita particolare... quando vuoi uscire, basta uscire. Exit() permette di passare comunque un codice di uscita, per quel che vale, ma non ce n'è bisogno.


D'altra parte, quando invece sei in uno script python (e non nella shell python) allora effettivamente potrebbe aver senso uscire dallo script restituendo un codice di uscita (0 se è andato tutto bene, 1 o altro se qualcosa è andato storto). Per fare questo però non dovresti usare exit(), ma sys.exit() che si comporta in modo analogo: https://docs.python.org/3/library/sys.html#sys.exit



Capisco, grazie mille per la risposta :)


Pagina: 1



Esegui il login per scrivere una risposta.