0
votes

Comment puis-je résoudre ce problème "ValueError: Pas assez de valeurs pour décompresser (attendu 3, obtenu 2)"?

S'il vous plaît aidez-moi avec mon affectation!

Mon objectif est que l'utilisateur puisse choisir de la qualité dont il / elle veut voir dans un certain sujet. La sortie devrait être quelque chose comme ceci: xxx

C'est ce que j'ai jusqu'à présent: xxx

Je continue à obtenir le erreur de valeur à ce point. Je ne sais pas non plus comment l'imprimer pour obtenir ce que je veux.

Si vous pouvez m'aider à résoudre l'erreur et dis-moi comment je peux imprimer ma sortie souhaitée, je serais vraiment reconnaissant !!!


1 commentaires

Notez que enregistrement est une liste de listes. Chaque itération de la boucle pour la boucle va tenter d'extraire l'un des éléments de liste (c.-à-d. Nom , math_grade ou science_grade ) en trois variables des mêmes noms. Si nom = ['alice', 'BOB'] , la première itération de la boucle tentera d'effectuer nom, math_grade, science_grade = ['Alice', 'Bob'] < / Code>, qui entraîne l'erreur de déballage que vous rencontrez.


3 Réponses :


1
votes

Le problème est de savoir comment vous avez organisé la liste code> enregistrement code>.

Cette ligne de code attend chaque élément dans enregistrement code> pour être une sous-liste avec trois éléments : Nom, note mathématique et note de science. p> xxx pré>

donc il est donc en attente d'enregistrement code> pour être quelque chose comme ceci: p>

Class_Record = {}

while (N != 0):
    name = input('Enter name:')
    math_grade = input('Enter grade in math:')
    science_grade = input('Enter grade in science:')
    Class_Record[name] = {'math_grade': math_grade, 'science_grade': science_grade)
    N = N - 1


0 commentaires

0
votes
N = int(input("Please enter number of students: "))

while (N < 2 or N > 10):
    N = int(input("Please only enter 2 - 10 students: "))

Class_Record = []

while (N != 0):
    name = input('Enter name:')
    math_grade = input('Enter grade in math:')
    science_grade = input('Enter grade in science:')
    temp = {'name': name, 'math grade': math_grade, 'science grade': science_grade}
    Class_Record.append (temp)
    N = N - 1

print (Class_Record)

0 commentaires

0
votes

Vous pouvez modifier votre code comme ci-dessous

N = int(input("Please enter number of students: "))

while (N < 2 or N > 10):
    N = int(input("Please only enter 2 - 10 students: "))


Class_Record={}
while (N != 0):
    name = input('Enter name:')
    math_grade = input('Enter grade in math:')
    science_grade = input('Enter grade in science:')
    Class_Record[name]={"name": name, "math grade": math_grade, "science grade": science_grade}
    N = N - 1

print(Class_Record)


0 commentaires