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 в зависимости от ввода)