Heim  >  Artikel  >  Backend-Entwicklung  >  Wie behebe ich die Fehler „TypeError: Nicht unterstützte Operandentypen für -: \'str\' und \'int\'\“?

Wie behebe ich die Fehler „TypeError: Nicht unterstützte Operandentypen für -: \'str\' und \'int\'\“?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-19 13:37:01795Durchsuche

How to Resolve

"Lösen des TypeError: Nicht unterstützte Operandentypen für -: 'str' und 'int'"

Beim Codierungsversuch In Python kommt es nicht selten vor, dass Fehler wie der Fehler „TypeError: nicht unterstützte Operandentypen für -: 'str' und 'int'“ auftreten. Dieser Fehler tritt typischerweise auf, wenn versucht wird, mathematische Operationen an verschiedenen Datentypen durchzuführen, wie etwa das Subtrahieren einer Ganzzahl von einer Zeichenfolge.

Um diesen Fehler zu verstehen, untersuchen wir den Code, der zu ihm geführt hat:

<code class="python">def cat_n_times(s, n):
    while s != 0:
        print(n)
        s = s - 1

text = input("What would you like the computer to repeat back to you: ")
num = input("How many times: ")

cat_n_times(num, text)</code>

Das Problem liegt hier in der Eingabefunktion, die sowohl für Text als auch für Num eine Zeichenfolge zurückgibt. Während der Code versucht, eine Ganzzahl (s – 1) von einer Zeichenfolge (num) zu subtrahieren, führt dies zu dem Fehler.

Lösung 1: Konvertieren der Eingabe

Eins Die Lösung besteht darin, die Eingabe von einer Zeichenfolge in eine Ganzzahl umzuwandeln, bevor mathematische Operationen ausgeführt werden. Dies kann mit der Funktion int() erfolgen:

<code class="python">num = int(input("How many times: "))</code>

Durch die Konvertierung von num in eine ganze Zahl können wir die Kompatibilität für mathematische Operationen mit s sicherstellen.

Lösung 2: Verwenden Alternative Iteration

Anstatt die Indizes manuell zu verfolgen, sollten Sie einen eher pythonischen Ansatz für die Iteration verwenden:

<code class="python">def cat_n_times(s, n):
    for i in range(n):
        print(s)

text = input("What would you like the computer to repeat back to you: ")
num = int(input("How many times: "))

cat_n_times(text, num)</code>

Hier übernimmt die for-Schleife mit range(n) die Iteration effektiv.

API-Überlegungen

Der Fehler weist auch auf potenzielle Probleme mit dem API-Design hin. Es kann intuitiver sein, wenn Text die Zeichenfolge und Num die Häufigkeit darstellt. In diesem Fall kann die API entsprechend geändert werden.

Das obige ist der detaillierte Inhalt vonWie behebe ich die Fehler „TypeError: Nicht unterstützte Operandentypen für -: \'str\' und \'int\'\“?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn