TypeError: '<=' not supported between instances of 'str' and 'int'

PythonPython 3.x

Python Problem Overview


I'm learning python and working on exercises. One of them is to code a voting system to select the best player between 23 players of the match using lists.

I'm using Python3.

My code:

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

I get

> TypeError: '<=' not supported between instances of 'str' and 'int'

But I don't have any strings here, all variables are integers.

Python Solutions


Solution 1 - Python

Change

vote = input('Enter the name of the player you wish to vote for')

to

vote = int(input('Enter the name of the player you wish to vote for'))

You are getting the input from the console as a string, so you must cast that input string to an int object in order to do numerical operations.

Solution 2 - Python

If you're using Python3.x input will return a string,so you should use int method to convert string to integer.

Python3 Input

> If the prompt argument is present, it is written to standard output > without a trailing newline. The function then reads a line from input, > converts it to a string (stripping a trailing newline), and returns > that. When EOF is read, EOFError is raised.

By the way,it's a good way to use try catch if you want to convert string to int:

try:
  i = int(s)
except ValueError as err:
  pass 

Hope this helps.

Solution 3 - Python

input() by default takes the input in form of strings.

if (0<= vote <=24):

vote takes a string input (suppose 4,5,etc) and becomes uncomparable.

The correct way is: vote = int(input("Enter your message")will convert the input to integer (4 to 4 or 5 to 5 depending on the input)

Solution 4 - Python

When you use the input function it automatically turns it into a string. You need to go:

vote = int(input('Enter the name of the player you wish to vote for'))

which turns the input into a int type value

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDouglas da Dias SilvaView Question on Stackoverflow
Solution 1 - PythonX33View Answer on Stackoverflow
Solution 2 - PythonMcGradyView Answer on Stackoverflow
Solution 3 - PythonDroolView Answer on Stackoverflow
Solution 4 - PythonR. MercyView Answer on Stackoverflow