Forum
>>
Principianti
>>
Estrazione elementi da lista
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da st3fano 90 |
2018-12-28 19:53:49 - Estrazione elementi da lista
|
Salve, per esercitarmi sto costruendo un questionario che "pesca" delle domande da una lista
domandee = ["domanda 1?", "40", "domanda 2?", "50", "domanda 3?", "60"] a = -2 b= -1 punteggio = 0 while a <=5 and b <= 5: for i in domandee: a = a+2 b = b+2 print (domandee [ a ]) risposta = input ("inserisci risposta") if risposta == domandee: print ("risposta corretta") punteggio = punteggio +1 else: print ("risposta sbagliata") print ("il tuo punteggio è", punteggio)Nella lista ci sono domande e risposte, le domande sono in posizione pari e le risposte in posizione dispari. Per permettere di discriminare le posizioni pari da quelle dispari l'indice si incrementa di 2 a ogni ciclo for, ma, ho pensato, per evitare che le variabili a e b si incrementano fino ad assumere un valore maggiore a quello degli elementi della lista ho inserito la condizione "while a and b <=5" Il problema è il seguente messaggio di errore: File "ok.py", line 10, in <module> print (domandeea) IndexError: list index out of range in pratica il valore di a si incrementa troppo, ma per quale motivo se quel valore è sottoposto a condizione ? Come mai è come se non mi considerasse il ciclo while? Sarà sicuramente un errore banale, ma sono un principiante. RIngrazio in anticipo per la risposta --- Ultima modifica di Stef Viv in data 2018-12-28 19:54:05 --- --- Ultima modifica di Stef Viv in data 2018-12-28 19:54:31 --- |
|
Scritto da Daniele aka Palmux |
2018-12-29 19:26:07 - Re: Estrazione elementi da lista
|
Ciao caro, sì commetti un errore nel range per effettuare il controllo, ma fatti un favore, usa un dizionario per una cosa genere.
Ho cercato di adattarmi al tuo codice e non modificarlo troppo, in modo da non farti perdere l'orientamento. punteggio = 0 domande = { "domanda 1?": 40, "domanda 2?": 50, "domanda 3?": 60 } for k,v in domande.items(): print(k) risposta = input("inserisci risposta: ") if risposta == v: print ("risposta corretta") punteggio += 1 else: print ("risposta sbagliata") print ("il tuo punteggio è ", punteggio) NOTA: Così ancora non va bene, perché quello che otterrai da input() è una stringa, mentre tua hai un numero intero nei tuoi valori. Devi gestire anche questo, magari considerando v come stringa, str(v), oppure controllando l'inserimento di risposta con un try e che accetti comunque solo interi. Vai e torna vittorioso. Cya |
|
Scritto da F _ |
2018-12-30 01:30:26 - Re: Estrazione elementi da lista
|
Il problema principale sarebbe che non dovresti usare le liste. Come ha fatto notare Daniele. Il metodo consigliato sarà di associare il punteggio ad un indice in un dizionario.
Nel tuo caso, devi mettere una verifica che il tuo indice non oltrepassi la lunghezza della lista, tenendo conto che l' indicizzazione parte da zero. while (a + 2) < len(domandee) or (b + 2) < len(domandee) # tenuto conto che si aggiunera' 2 In questo caso già il segno di minore garantisce che sia rispettato la condizione degli indici. Questo è il metodo preventivo. Mentre c'è anche il metodo di fasciarsi la testa dopo averla rotta, per questo si usa una clausola try except che se avviene l' errore ti porta al blocco di except, nel quale decidi cosa fare. try: for i in domandee: a = a+2 b = b+2 print (domandeea) risposta = input ("inserisci risposta") if risposta == domandee: print("risposta corretta") punteggio += 1 else: print("risposta sbagliata") print("il tuo punteggio è ", punteggio) except: print("Oltrepassato il limite della lista") --- Ultima modifica di F _ in data 2018-12-30 01:33:13 --- --- Ultima modifica di F _ in data 2018-12-30 01:34:08 --- |
|
Scritto da st3fano 90 |
2018-12-30 20:23:49 - Re: Estrazione elementi da lista
|
Grazie ad entrambi ragazzi! E' che non sono ancora arrivato a studiare i dizionari, sto procedendo un argomento per volta, ma non mi manca molto. So che per un questionario procedere come ho fatto io non è proprio l'ideale ma significava complicarsi la vita (avrei potuto farlo in un modo molto più semplice), ma era un modo per sperimentare! Buona serata
|
|
Scritto da Daniele aka Palmux |
2018-12-30 20:27:57 - Re: Estrazione elementi da lista
|
Non sapevo che non eri ancora arrivato ai dizionari, quindi buono studio e buone prove.
Grazie e buona serata anche a te. |
Pagina: 1
Esegui il login per scrivere una risposta.