2016-05-27 6 views
-1

Мне нужно создать программу, которая запрашивает у пользователя очки, полученные по «викторине» (0-5). Затем дайте им оценку на основе шкалы 5 = A, 4 = B, 3 = C и т. Д. Когда я пытаюсь присвоить оценки номерам, он говорит Cannot assign to literal.Невозможно назначить буквенную ошибку python

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),".") 
+3

Пожалуйста, дайте [mcve], а не просто смутное описание. – jonrsharpe

+0

Можете ли вы показать свой код и полную ошибку? Это поможет нам понять, что происходит. –

+0

Это не позволяет мне загружать картинку, и когда я вставляю код, выглядит забавно, это лучшее, что я могу сделать, если у кого-то нет лучшей идеи! благодаря!! –

ответ

1

Ошибка вызвана попыткой присвоить значение целому числу. Само целое является литералом, просто значением. Вы не можете назначать ему, как переменную.

Как this ответ говорит:

Левая часть оператора = должен быть переменным. Что вы здесь делаете, говорит python: «Вы знаете номер один? Установите его на введенную строку». 1 - буквальное число, а не переменная. 1 всегда 1, вы не можете «установить» его на что-то другое.

Из-за этого питон говорит вам: «Я не могу изменить то, что 1 есть».


Путь реорганизовать его на работу было бы назначить вход в переменную, а затем посмотреть на значение переменной. Есть два способа сделать это.

  1. Словарь (считается лучшей практикой, из-за краткости и устойчивости)

  2. Стопка если заявления

со словарем:

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') 

Как это работает довольно ясно. Я не рекомендую использовать его, хотя, поскольку это ужасно утомительно писать и дольше, чем другое.

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

Edit: Теперь, когда вы обновили свой вопрос с кодом, я не уверен, если это то, что вам нужно. Это рабочее решение, но оно работает не так, как у вас. Я останусь здесь на всякий случай, если вам понадобится рабочее решение, а не просто решение вашего вопроса.

+0

Это исправит их проблему, но не поможет им в будущем или поможет людям, которые это видят в будущем. Просто дать им код, который будет работать без объяснений, в конечном счете бесполезен. –

+0

@ XamuelSchulman Итак, следует ли удалить это решение? Я разместил это, прежде чем они включили код, поэтому я смог сделать это в лучшем случае. Я считаю, что словарь является единственным способом присвоения числа персонажу, но я мог ошибаться. –

+0

Или отредактируйте его, чтобы ответить на вопрос. Так или иначе. –

Смежные вопросы