嘿,所以我正在编写一个代码,该代码首先输入学生的人数,然后要求用户输入姓名并在3个科目中打分,我想做的就是接受学生的姓名/位置并显示他/她的名字名称和分数以及平均分数
此处是代码:
lst = []
n=int(input("Enter number of students:"))
for i in range(0,n):
x=input("Enter name:")
y=int(input("Enter physics marks:"))
z=int(input("Enter maths marks:"))
a=int(input("Enter chemistry marks:"))
avg=(y+z+a)/3
lst.append((x,y,z,a,avg,))
b=int(input("Enter the number of the student:"))
for x,y,z,a,avg in lst[b-1]:
print(x,":",y,z,a,avg,)
print(x,avg,)
我收到此错误:
for x,y,z,a,avg in lst[b-1]:
ValueError: not enough values to unpack (expected 5, got 3)
任何改进都被视为是python的新功能,谢谢!
答案 0 :(得分:2)
解决方法是删除for
循环。
lst = []
n=int(input("Enter number of students:"))
for i in range(0,n):
x=input("Enter name:")
y=int(input("Enter physics marks:"))
z=int(input("Enter maths marks:"))
a=int(input("Enter chemistry marks:"))
avg=(y+z+a)/3
lst.append((x,y,z,a,avg,))
b=int(input("Enter the number of the student:"))
x,y,z,a,avg = lst[b-1]
print(x,":",y,z,a,avg,)
print(x,avg,)
说明:
示例会话:
Enter number of students:1
Enter name:fred
Enter physics marks:30
Enter maths marks:21
Enter chemistry marks:23
Enter the number of the student:1
Traceback (most recent call last):
File "----", line 17, in <module>
for x,y,z,a,avg in lst[b-1]:
ValueError: not enough values to unpack (expected 5, got 4)
问题是Python尝试迭代值。 lst[b-1]
的值为('fred', 30, 21, 23, 24.666666666666668)
。您已经告诉它使用它来制作变量x,y,z,a,avg
,因此它尝试使用第一项:'fred'
。它只有四个字符,而不是五个要解包的字符,因此会引发错误。
要解决此问题,我们只需要告诉Python将整个lst[b-1]
变成五个变量,而不仅仅是第一个变量即可。
答案 1 :(得分:0)
如果只打印一个学生,则不需要for
,这样的方法应该可以工作:
x,y,z,a,avg = lst[b-1]
print(x,":",y,z,a,avg)
print(x,avg)
发生错误是因为您for
是一名学生,而您只为一名学生运行lst[b-1]
。
答案 2 :(得分:0)
由于您正在创建列表列表。然后应该遍历它们。
for sub_list in list:
print(sub_list)
如果您想打印出第n名学生,则可以使用:
print(lst[b-1])
('John', 5, 4, 3, 4.0)
答案 3 :(得分:0)
您可以在同一订单中为每个学生创建一个列表,但请尝试以下代码:您会明白我的意思,并且能够适应您的目的:
student = ['xavier', 'lucy','anna','leo']
math = [2,8,5,6]
phys = [8,5,6,7]
l = []
for s,m,p in zip(student, math,phys):
l.append((s,m,p))
n=int(input('Which student?'))
print('the full info',l[n])
print('\nonly name and phys :) :\n',l[n][0], l[n][2])