2017-01-31 11 views
6

Uczę się Pythona i pracuję nad ćwiczeniami. Jedną z nich jest kodowanie systemu głosowania w celu wybrania najlepszego gracza pomiędzy 23 graczami meczu za pomocą list.TypeError: '<=' nie jest obsługiwane między instancjami 'str' i 'int'

Używam Python3.

Mój kod:

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

uzyskać

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

Ale nie mam żadnych ciągi tutaj wszystkie zmienne są liczbami całkowitymi.

Odpowiedz

10

Zmień

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

do

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

otrzymujesz wejście z konsoli jako ciąg, więc trzeba rzucić ten ciąg wejściowy do obiektu int w tym celu operacje liczbowe.

1

Podczas korzystania z funkcji wprowadzania automatycznie zamienia ją na ciąg znaków. Musisz iść:

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

który włącza wejście do wartości typu int

9

Jeśli używasz Python3.x input zwróci ciąg, więc należy użyć int sposób przekonwertować ciąg do liczby całkowitej .

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.

Nawiasem mówiąc, jest to dobry sposób na wykorzystanie trycatch jeśli chcesz przekonwertować ciąg do int:

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

nadzieję, że to pomaga.

Powiązane problemy