python python-3.x

python - TypeError: ''<='' no es compatible entre instancias de ''str'' e ''int''



python-3.x (4)

Esta pregunta ya tiene una respuesta aquí:

Estoy aprendiendo python y trabajando en ejercicios. Una de ellas es codificar un sistema de votación para seleccionar el mejor jugador entre 23 jugadores del partido usando listas.

Estoy usando Python3 .

Mi código:

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

yo obtengo

TypeError: ''<='' no es compatible entre instancias de ''str'' e ''int''

Pero no tengo cadenas aquí, todas las variables son enteros.


Cambio

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

a

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

Obtiene la entrada de la consola como una cadena, por lo que debe convertir esa cadena de entrada en un objeto int para realizar operaciones numéricas.


Cuando utiliza la función de entrada, la convierte automáticamente en una cadena. Necesitas irte:

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

que convierte la entrada en un valor de tipo int


Si está utilizando la input Python3.x, devolverá una cadena, por lo que debe usar el método int para convertir la cadena a entero.

Entrada Python3

Si el argumento de solicitud está presente, se escribe en la salida estándar sin una nueva línea final. La función lee una línea desde la entrada, la convierte en una cadena (eliminando una nueva línea final) y la devuelve. Cuando se lee EOF, se genera EOFError.

Por cierto, es una buena manera de usar try catch si desea convertir una cadena a int:

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

Espero que esto ayude.


input () por defecto toma la entrada en forma de cadenas.

if (0<= vote <=24):

vote toma una entrada de cadena (suponga ''4'', ''5'', etc.) y se vuelve incomparable.

La forma correcta es: vote = int(input("Enter your message") convertirá la entrada a entero (''4'' a 4 o ''5'' a 5 dependiendo de la entrada)