web-dev-qa-db-fra.com

TypeError: '<=' non pris en charge entre les instances de 'str' et 'int'

J'apprends le python et travaille à des exercices. L'un d'eux consiste à coder un système de vote pour sélectionner le meilleur joueur parmi 23 joueurs du match à l'aide de listes. 

J'utilise Python3.

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

Je reçois

TypeError: '<=' non pris en charge entre les instances de 'str' et 'int'

Mais je n'ai pas de chaînes ici, toutes les variables sont des entiers.

18
Douglas da Silva

Changement

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

Vous obtenez l'entrée de la console sous forme de chaîne. Vous devez donc convertir cette chaîne d'entrée en un objet int afin d'effectuer des opérations numériques.

27
X33

Si vous utilisez Python3.x input renverra une chaîne, vous devez donc utiliser la méthode int pour convertir une chaîne en entier.

Entrée Python3

Si l'argument Invite est présent, il est écrit dans la sortie standard sans fin de ligne. La fonction lit ensuite une ligne à partir de l'entrée, le convertit en chaîne (en supprimant une nouvelle ligne) et renvoie cette. Lorsque EOF est lu, EOFError est déclenché.

En passant, c’est un bon moyen d’utiliser trycatch si vous voulez convertir une chaîne en int: 

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

J'espère que cela t'aides.

14
McGrady

Lorsque vous utilisez la fonction de saisie, elle se transforme automatiquement en chaîne. Tu dois partir:

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

qui transforme l'entrée en une valeur de type int

1
R. Mercy

input () prend par défaut l'entrée sous forme de chaînes.

if (0<= vote <=24):

vote prend une entrée de chaîne (supposons '4', '5', etc.) et devient incomparable.

La manière correcte est: vote = int(input("Enter your message")will convertir l'entrée en entier ('4' à 4 ou '5' à 5 selon l'entrée

0
Drool