我需要制作一个程序,提示用户在"测验" (0-5)。然后根据5 = A,4 = B,3 = C等等的等级给他们一个等级。当我尝试将等级分配给数字时,它会显示Cannot assign to literal
。
grade = eval(input("How many points did you receive? "))
grade = str(A, B, C, D, F)
1, 0 = F
2 = D
3 = C
4 = B
5 = A
print("The grade you received was a(n)", str(grade),".")
答案 0 :(得分:1)
错误是由尝试为整数赋值引起的。整数本身是一个文字,只是一个值。你不能像变量一样分配给它。
正如this回答所说:
=运算符的左侧需要是变量。你在这里做的是告诉python:“你知道第一个吗?把它设置为输入的字符串。” 1是文字数字,而不是变量。 1总是1,你不能将它“设置”为其他东西。
因此,python对你说“我不能改变1是什么。”
重构它的方法是将输入分配给变量,然后查看变量的值。有两种方法可以做到这一点。
字典(由于简洁和可持续性而被视为更好的做法)
一堆if语句
用字典:
score = str(input("Enter the grade: "))
grades = {0: 'F',
1: 'F',
2: 'D',
3: 'C',
4: 'B',
5: 'A'}
print(grades[score])
它只打印字典中与分数相关联的字母等级。
使用if
:
score = str(input("Enter the grade: "))
if score == 0 or score == 1:
print('F')
elif score == 2:
print('D')
elif score == 3:
print('C')
elif scoe == 4:
print('B')
else:
print('A')
这种方式非常清楚。不过,我不建议使用它,因为它写起来非常繁琐,而且比另一个更长。
答案 1 :(得分:0)
您可以使用将每个数字字符串与字母字母等级相关联的字典,而不是直接尝试设置5 = A
等。虽然这不能直接回答您的问题,但这可能是将数字与等级相关联的最佳方式。
def score():
score_dict = {'0' : 'F', '1' : 'F', '2' : 'D', '3' : 'C', '4' : 'B', '5' : 'A'}
score = input('Enter a score:')
if score in score_dict.keys():
print("The grade you received was a(n) ",score_dict[score],".")
else:
print("Invalid score.")
编辑:现在你已经用代码更新了你的问题,我不确定这是否是你需要的。这是一个可行的解决方案,但它的工作方式与您的工作方式完全不同。我会留在这里以防你需要一个有效的解决方案,而不仅仅是你问题的解决方案。