it-swarm.com.de

TypeError: '<=' wird nicht zwischen den Instanzen von 'str' und 'int' unterstützt

Ich lerne Python und arbeite an Übungen. Eine davon ist die Kodierung eines Abstimmungssystems, um den besten Spieler unter den 23 Spielern des Spiels anhand von Listen auszuwählen. 

Ich benutze Python3.

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

Ich bekomme

TypeError: '<=' wird nicht zwischen den Instanzen von 'str' und 'int' unterstützt

Aber ich habe hier keine Zeichenketten, alle Variablen sind ganze Zahlen.

18

Veränderung

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

zu

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

Sie erhalten die Eingabe von der Konsole als Zeichenfolge. Daher müssen Sie diese Eingabezeichenfolge in ein int-Objekt umwandeln, um numerische Operationen ausführen zu können.

27
X33

Wenn Sie Python3.x verwenden, gibt input eine Zeichenfolge zurück. Verwenden Sie daher die int-Methode, um die Zeichenfolge in eine Ganzzahl zu konvertieren.

Python3-Eingabe

Wenn das Prompt-Argument vorhanden ist, wird es in die Standardausgabe .__ geschrieben. ohne nachlaufenden Zeilenumbruch. Die Funktion liest dann eine Zeile aus der Eingabe konvertiert es in eine Zeichenfolge (entfernt eine nachgestellte Zeile) und gibt .__ zurück. Das. Wenn EOF gelesen wird, wird EOFError ausgelöst.

Übrigens, es ist eine gute Möglichkeit, trycatch zu verwenden, wenn Sie die Zeichenfolge in int konvertieren möchten: 

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

Hoffe das hilft.

14
McGrady

Wenn Sie die Eingabefunktion verwenden, wird sie automatisch in eine Zeichenfolge umgewandelt. Du musst gehen:

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

dadurch wird die Eingabe in einen Int-Typwert umgewandelt

1
R. Mercy

input () übernimmt standardmäßig die Eingabe in Form von Strings.

if (0<= vote <=24):

vote nimmt eine Zeichenfolgeingabe an (angenommen '4', '5' usw.) und wird unvergleichlich.

Der richtige Weg ist: vote = int(input("Enter your message") wandelt die Eingabe in eine Ganzzahl um ('4' in 4 oder '5' in 5 abhängig von der Eingabe)

0
Drool