Come creare il punteggio dei punti dell'HomeWork [poll]

a
alex_andrei13 (3170 points)
11 37 49
asked Oct 23, 2020 in HW2 obbligatorio by alex_andrei13 (3,170 points)
Buonasera a tutti, come da titolo, mi trovo un pò in difficoltà per quanto riguarda il vero e proprio conteggio dei punti dei singoli. Ho capito che va svolto con un Dizionario che a ciascuna lettera assume un valore e che bisogna prendere in considerazione le lettere di ciascuna parola, volevo capire come implementare ciò in python. Come faccio ad incrementare fisicamente il punteggio? Grazie mille a tutti in anticipo!
### no choices found for poll!
408 views

6 Answers

giordano_sannino (13650 points)
7 16 81
answered Oct 23, 2020 by giordano_sannino (13,650 points)
ti prendi una variabile e ci sommi l'equivalente dizionario della letera fino a che non hai formato la parola
a
alex_andrei13 (3170 points)
11 37 49
commented Oct 23, 2020 by alex_andrei13 (3,170 points)
Buonasera, fino a qua ci sono arrivato. Come risposto sotto, non capisco come faccio ad aggiornare automaticamente lettera per lettere con i corrispeitivi punteggi
Marco Freddi (1420 points)
1 2 16
answered Oct 23, 2020 by Marco Freddi (1,420 points)

Per ogni parola presa tra quelle inserite dai giocatori analizzi le singole lettere (prova a considerare la stringa come una lista, se ti serve) e sommi i valori, riferendoti al dizionario che hai scelto come tecnica. Ricordati che, come scritto nelle correzioni dell'HW2 "il risultato ritornato dalla funzione dev'essere una lista di interi" (quella dei punteggi).

a
alex_andrei13 (3170 points)
11 37 49
commented Oct 23, 2020 by alex_andrei13 (3,170 points)
Ho fatto in modo che le varie parole venissero divise nelle varie lettere costruendo così una stringa di lettere che mano a mano andrà a incrementare il punteggio del singolo; ma come risposto al collega di sotto, non so come far mettere aggiornare il conteggio lettera per lettera (incrementando con il giusto valore). dovrei creare 26 if/elif che mi aggiornano il punteggio, ma facendo così rallenterei il programma
Marco Freddi (1420 points)
1 2 16
commented Oct 24, 2020 by Marco Freddi (1,420 points)
Dal commento sotto non son sicuro se stai cercando la funzione get del dizionario, che fa in modo che inserendo la lettera (chiave del dizionario), ottieni il valore ad essa collegato, ad esempio dizionario.get("a") o l'accesso alle lettere della stringa che si fa come se la stringa fosse una lista, cioè nomeStringa[indice].
e
er nutella (410 points)
0 0 3
answered Oct 23, 2020 by er nutella (410 points)
Potresti tenere il punteggio in una lista con 4 valori o in generale tot valori quanti sono i giocatori ed aggiornarli sommando ad ogni elemento il punteggio fatto con la lettera. Ad esempio punteggio=[0,0,0,0] e poi aggiorni ogni valore con punteggio[argomento]+=dizionario[lettera]

Spero di essermi fatto capire
a
alex_andrei13 (3170 points)
11 37 49
commented Oct 23, 2020 by alex_andrei13 (3,170 points)
Sei stato molto chiaro, ma nel     punteggio[argomento]+=dizionario[lettera]    nella parte [lettera] come faccio a inserire la lettera automaticamente?
e
er nutella (410 points)
0 0 3
commented Oct 23, 2020 by er nutella (410 points)
Mettendo il caso in cui tu sia riuscito a tenere in conto la parola grazie ad un ciclo o qualsiasi idea ti sia venuta in mente per farlo, potresti usare un altro ciclo in cui la variabile prende il valore di ogni lettera della stringa e ogni volta aggiungi al risultato il valore della lettera utilizzando la struttura detta nel messaggio precedente dove per lettera intendo valore della variabile che a sua volta sarà una chiave del dizionario... Se non mi sono fatto capire ti faccio un esempio: hai 'ciao' come parola e grazie al ciclo la variabile lettera è uguale alla 'c' che a sua volta è la chiave per un eventuale valore nel dizionario che si andrà ad aggiungere al risultato, il ciclo si ripete per la lunghezza della parola
E
Eduard (2150 points)
6 12 15
answered Oct 23, 2020 by Eduard (2,150 points)
Non serve per forza il dizionario, puoi farlo semplicemente con degli if.

E ti consiglio di spezzare la funzione principale in più funzioni. Una funzione potrebbe essere proprio questa che ti incrementa il punteggio. Pensaci
GiovanniChiara (830 points)
4 8 14
commented Oct 24, 2020 by GiovanniChiara (830 points)
Anch'io ho fatto 26 if ( e no elif).
d
denny (160 points)
0 0 2
answered Oct 24, 2020 by denny (160 points)
crea un sommatore di valori, poi prova usando la funzione che trova le chiavi in un dizionario ,con un if controlla se esiste nel dizionario se esiste prendi il valore della chiave lo sommi al sommatore
Loriv3 (7970 points)
8 20 84
answered Oct 25, 2020 by Loriv3 (7,970 points)
Ti crei il dizionario come variabile dizpunt = {"..." : ..., .....} dove al posto dei puntini inserisci le lettere e il loro rispettivo punteggio.

Per controllare ogni lettera basta che usi un per ogni elemento in stringa

                                                                         punti += dizpunt[elemento]
a
alex_andrei13 (3170 points)
11 37 49
commented Oct 25, 2020 by alex_andrei13 (3,170 points)
Grazie mille ha funzionato, era più semplice di come l'avevo pensato. Grazie davvero tanto!