Domanda PythonQuiz

Stato
Discussione chiusa ad ulteriori risposte.

.Gemini.

Utente Gold
29 Settembre 2011
825
18
207
302
Ecco a voi uno script fatto sempre per esercitarmi in python:)sisi:)!
Questo script stampa 5 domande e voi dovete rispondere in modo giusto ( le domande sono tutte cavolate, non ho sprecato tempo nel pensare che domande mettere :\), ogni domanda giusta è 1 punto... alla fine vi stampa quanti punti avete totalizzato!

Codice:
#variabili
p=0
si="si"
no="no"


#Script quiz
def quiz(p):
    inizio = raw_input("Benvenuto al PythonQuiz by Chaos\n\nVuoi iniziare?(scrivi 'no' senza apici per uscire) ")
    while inizio==no:
        return 
    while inizio==si:
        dom1=input("Quanto fa 1+1? ")
        if dom1==2:
            p=p+1
            print "Bravo, risposta esatta! Hai guadagnato 1 punto."
        else:
            print "Mi dispiace, risposta sbagliata! Non hai guadagnato nessun punto."
        dom2=input("Quanto fa 2+2? ")
        if dom2==4:
            p=p+1
            print "Bravo, risposta esatta! Hai guadagnato 1 punto."
        else:
            print "Mi dispiace, risposta sbagliata! Non hai guadagnato nessun punto."
        dom3=input("Quanto fa 3+3? ")
        if dom3==6:
            p=p+1
            print "Bravo, risposta esatta! Hai guadagnato 1 punto."
        else:
            print "Mi dispiace, risposta sbagliata! Non hai guadagnato nessun punto."
        dom4=input("Quanto fa 4+4? ")
        if dom4==8:
            p=p+1
            print "Bravo, risposta esatta! Hai guadagnato 1 punto."
        else:
            print "Mi dispiace, risposta sbagliata! Non hai guadagnato nessun punto."
        dom5=input("Quanto fa 5+5? ")
        if dom5==10:
            p=p+1
            print "Bravo, risposta esatta! Hai guadagnato 1 punto."
            if p==1:
                print "\n\nIl test è finito, hai totalizzato 1 punto!\n\n-------------------------------------\n\n\n\n"
                return quiz(p)
            else:
                print "\n\nIl test è finito, hai totalizzato",p,"punti!\n\n-------------------------------------\n\n\n\n"
                return quiz(p)
        else:
            print "Mi dispiace, risposta sbagliata! Non hai guadagnato nessun punto."
            if p==1:
                print "\n\nIl test è finito, hai totalizzato 1 punto!\n\n-------------------------------------\n\n\n\n"
                return quiz(p)
            else:
                print "\n\nIl test è finito, hai totalizzato",p,"punti!\n\n-------------------------------------\n\n\n\n"
                return quiz(p)
    while inizio!=si or no:
            print "\nCaratteri non validi!\n\n--------------\n\n\n\n"
            return quiz(p)


#Avvio script
quiz(p)


Accetto critiche costruttive :D
 
Codice:
    while inizio==no:
        return 
    while inizio==si:
Questo è concettualmente sbagliato, al posto del primo while sarebbe meglio un if; se invece vuoi iterare il quiz io lo farei in altro modo (vedi codice).
Inoltre racchiudi tutto il programma in una funzione, ma ripeti più volte la stessa frase (risposta giusta o sbagliata); in questo modo non sfrutti le funzioni per ridurre le linee di codice, anzi, ci metti una linea in più rispetto a non averne.

Ti propongo questa mia soluzione al tuo esercizio (grazie alle funzioni ho tolto più della metà delle linee di codice), anche questa penso che sia migliorabile di molto visto che non sono molto pratico di python:
Codice:
#variabili
p=0

#funzioni
def domanda(testo,rispCorretta):
    global p
    risposta=input(testo)
    if risposta==rispCorretta:
        p=p+1
        print "Bravo, risposta esatta! Hai guadagnato 1 punto."
    else:
        print "Mi dispiace, risposta sbagliata! Non hai guadagnato nessun punto."
        
#inizio
while True:
    inizio = raw_input("Benvenuto al PythonQuiz by Chaos\n\nVuoi iniziare?(scrivi 'no' senza apici per uscire) ")
    if(inizio=="no"):
        break
    domanda("Quanto fa 1+1? ",2)
    domanda("Quanto fa 2+2? ",4)
    domanda("Quanto fa 3+3? ",6)
    domanda("Quanto fa 4+4? ",8)
    domanda("Quanto fa 5+5? ",10)
    print "\n\nIl test e' finito, hai totalizzato ",p," punti!\n\n-------------------------------------\n\n\n\n"

PS. Ti faccio notare che per come funziona il python se come risposta a 1+1 scrivi 1+1 (o 10/5) te lo accetta come 2 XD
 
special_chaos mi spiego bene,
ogni volta che fai qualcosa (pure codice buggato) non postarlo nel forum. Se tutti fanno cosi avremmo un migliaio di intuil-topic al giorno.
Quando hai un prodotto che fa la differenza o del codice davvero interessante, solo allora esponiti.

chiudo

Predator
 
  • Mi piace
Reazioni: Lord Najel
Stato
Discussione chiusa ad ulteriori risposte.