Richieste di input

Denis (2230 points)
3 13 23
asked Oct 17, 2017 in Es1 by Denis (2,230 points)
closed Oct 17, 2017 by andrea.sterbini
Ciao a tutti, rileggendo il post in cui il professore ha pubblicato il primo homework, mi sono soffermato su questa frase che cito testualmente:

ATTENZIONE: NON LASCIATE RICHIESTE DI INPUT NEL PROGRAMMA, ALTRIMENTI VA IN TIMEOUT.
(o, se proprio volete, mettetele in un test           if __name__ == '__main__':           come detto a lezione

Non mi è chiaro cosa significa, si riferisce ad un eventuale input da parte dell'utente? E che cosa indica quell if?

Scusate la domanda banale per alcuni voi, ma seguendo il corso in teledidattica non so a cosa faccia riferimento sinceramente, e il 'come detto a lezione' mi ha fatto pensare a voi.

Grazie a chiunque mi risponderà
336 views
closed with note: answered

3 Answers

Best answer
split (8700 points)
15 59 79
answered Oct 17, 2017 by split (8,700 points)
selected Oct 17, 2017 by Denis
si, si riferisce principalmente a "input()", in generale non ci deve essere nulla che  chieda all'utente, il programma deve essere automatico, se no il programma si ferma a chiedere qualcosa, nessuno gli risponde e il tempo scade. quell'if vuol dire che esegue i comandi che metti dopo solo se il programma viene eseguito nel "main", serve a farti testare quando sei in shell o idle il tuo programma, perché lì lo esegue. il professore non li farà girare in quel modo e quindi quell'if non sarà eseguito

e poi non devi giustificarti di niente...non è banale, io credo di sapere cosa fa quell'if, ma non come o perché :D
Denis (2230 points)
3 13 23
commented Oct 17, 2017 by Denis (2,230 points)
Ok, immaginavo fosse qualcosa di simile, grazie!
Jury Francia (7520 points)
18 76 100
answered Oct 17, 2017 by Jury Francia (7,520 points)
Il professore si riferisce ai test che inseriamo noi nel codice del file program0x.py, ad esempio se nel tuo codice, dopo la funzione, la richiami passando gli argomenti, esempio:

print(funzione([lista], k))

quando avvii l'interprete ti stampa il risultato della funzione sui valori che hai scelto di passargli come argomento alla funzione, questo potrebbe causare problemi durante i test del professore. Mettendo quell' IF indichi che i tuoi test verranno eseguiti soltanto se esegui il codice dalla console/prompt.

'name' se non sbaglio è una variabile speciale, che ha valore 'main' se il programma viene avviato dal prompt, quindi con quella dicitura gli dici che se il programma è stato avviato dal prompt esegue anche il tuo test, altrimenti no.
andrea.sterbini (172780 points)
513 935 1789
answered Oct 17, 2017 by andrea.sterbini (172,780 points)

Quando si importa un modulo, la variabile del modulo che si chiama __name__ assume come valore il nome del modulo.
Quando invece si esegue il file chiamandolo da riga di comando (ad esempio con       python program01.py), la variabile __nome__ ha il valore '__main__'.
Quindi è possibile distinguere i due casi, ed è uso nella comunità dei programmatori python di inserire dopo un
if __name__ == '__main__':
alcune istruzioni di test che permettono di controllare (lanciandolo da riga di comando) se quel modulo funziona bene.
Queste istruzioni NON verranno eseguite quando il modulo viene importato come libreria in un altro programma, come succede ad esempio nel nostro grader.

In parole povere, se volete inserire delle istruzioni di test mettetele indentate dopo il suddetto if.

BTW: cari teledidatti usate liberamente il forum, che sta qui apposta sia per voi che per i due corsi in presenza! (benvenuti!)