Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2023-24 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2023-24 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

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

a
alex_andrei13 (3800 points)
14 41 53
in HW2 obbligatorio by (3.8k 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!
684 views

6 Answers

giordano_sannino (13650 points)
7 16 81
by (13.7k points)
ti prendi una variabile e ci sommi l'equivalente dizionario della letera fino a che non hai formato la parola
a
alex_andrei13 (3800 points)
14 41 53
by (3.8k 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
by (1.4k 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 (3800 points)
14 41 53
by (3.8k 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
by (1.4k 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
by (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 (3800 points)
14 41 53
by (3.8k 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
by (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
by (2.2k 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)
6 8 14
by (830 points)
Anch'io ho fatto 26 if ( e no elif).
d
denny (160 points)
0 0 2
by (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)
13 21 84
by (8.0k 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 (3800 points)
14 41 53
by (3.8k points)
Grazie mille ha funzionato, era più semplice di come l'avevo pensato. Grazie davvero tanto!