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.
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.
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.
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 try
catch
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.
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
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