TypeError: '<=' не поддерживается между экземплярами 'str' и 'int'
Я изучаю python и работаю над упражнениями. Один из них состоит в том, чтобы закодировать систему голосования, чтобы выбрать лучшего игрока между 23 игроками матча, используя списки.
Я использую Python3
.
Мой код:
players= [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
vote = 0
cont = 0
while(vote >= 0 and vote <23):
vote = input('Enter the name of the player you wish to vote for')
if (0 < vote <=24):
players[vote +1] += 1;cont +=1
else:
print('Invalid vote, try again')
Я получаю
TypeError: '< =' не поддерживается между экземплярами 'str' и 'int'
Но у меня нет строк, все переменные целые.
Ответы
Ответ 1
Изменить
vote = input('Enter the name of the player you wish to vote for')
к
vote = int(input('Enter the name of the player you wish to vote for'))
Вы получаете входные данные из консоли в виде строки, поэтому вы должны сделать эту строку ввода объекту int
для выполнения числовых операций.
Ответ 2
Если вы используете Python3.x input
, он вернет строку, поэтому вы должны использовать метод int
для преобразования строки в целое число.
Вход Python3
Если аргумент приглашения присутствует, он записывается на стандартный вывод без конечной новой строки. Затем функция считывает строку с ввода, преобразует его в строку (зачищая конечную новую строку) и возвращает что. Когда EOF считывается, EOFError поднимается.
Кстати, это хороший способ использовать try
catch
, если вы хотите преобразовать строку в int:
try:
i = int(s)
except ValueError as err:
pass
Надеюсь, что это поможет.
Ответ 3
Когда вы используете функцию ввода, она автоматически превращает ее в строку. Вам нужно пойти:
vote = int(input('Enter the name of the player you wish to vote for'))
который превращает ввод в значение типа int
Ответ 4
input() по умолчанию принимает ввод в виде строк.
if (0<= vote <=24):
Голосование принимает строковый ввод (предположим, "4", "5" и т.д.) и становится несопоставимым.
Правильный путь: vote = int(input("Enter your message")
преобразует ввод в целое число (от 4 до 4 или от 5 до 5 в зависимости от ввода)