无法分配给文字 python 错误

Can't assign to literal python error

我需要制作一个程序,提示用户输入在 "quiz" (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),".")

而不是直接尝试设置 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.")

编辑:既然您已经用代码更新了您的问题,我不确定这是否是您所需要的。这是一个有效的解决方案,但它的工作方式与您所拥有的不完全相同。我会把它留在这里,以防万一您需要一个有效的解决方案,而不仅仅是您问题的解决方案。

该错误是由于试图将一个值赋给一个整数造成的。整数本身是一个文字,只是一个值。你不能像变量一样给它赋值。

正如 this 回答所说:

The left hand side of the = operator needs to be a variable. What you're doing here is telling python: "You know the number one? Set it to the inputted string.". 1 is a literal number, not a variable. 1 is always 1, you can't "set" it to something else.

因此,python对你说"I can't change what 1 is."


重构它以使其工作的一种方法是将输入分配给一个变量,然后查看该变量的值。有两种方法可以做到这一点。

  1. 字典(考虑到更好的做法,因为简洁和可持续)

  2. 一堆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')

它的工作方式非常清楚。不过我不推荐使用它,因为它写起来非常乏味,而且比另一个更长。