python - TypeError: ''<='' no es compatible entre instancias de ''str'' e ''int''
python-3.x (4)
Esta pregunta ya tiene una respuesta aquí:
- ¿Cómo puedo leer entradas como números? 10 respuestas
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.
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)