无法分配文字python错误

时间:2016-05-27 20:05:30

标签: python python-3.x literals

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

2 个答案:

答案 0 :(得分:1)

错误是由尝试为整数赋值引起的。整数本身是一个文字,只是一个值。你不能像变量一样分配给它。

正如this回答所说:

  

=运算符的左侧需要是变量。你在这里做的是告诉python:“你知道第一个吗?把它设置为输入的字符串。” 1是文字数字,而不是变量。 1总是1,你不能将它“设置”为其他东西。

因此,python对你说“我不能改变1是什么。”

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

  1. 字典(由于简洁和可持续性而被视为更好的做法)

  2. 一堆if语句

  3. 用字典:

    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.")

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