"Lösen des TypeError: Nicht unterstützte Operandentypen für -: 'str' und 'int'"
Beim Codierungsversuch In Python kommt es nicht selten zu Fehlern wie „TypeError: nicht unterstützte Operandentypen für -: ‚str‘ und ‚int‘“. Fehler. Dieser Fehler tritt normalerweise auf, wenn versucht wird, mathematische Operationen an unterschiedlichen Datentypen durchzuführen, beispielsweise das Subtrahieren einer Ganzzahl von einer Zeichenfolge.
Um diesen Fehler zu verstehen, untersuchen wir den Code, der zu ihm geführt hat:
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)
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 Sie die 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:
num = int(input("How many times: "))
Durch die Konvertierung von num in eine Ganzzahl können wir sicherstellen Kompatibilität für mathematische Operationen mit s.
Lösung 2: Alternative Iteration verwenden
Anstelle manuell Um die Indizes im Auge zu behalten, sollten Sie einen eher pythonischen Ansatz für die Iteration in Betracht ziehen:
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)
Hier verarbeitet die for-Schleife mit range(n) die Iteration effektiv.
API-Überlegungen
Der Fehler auch hebt potenzielle Probleme mit dem API-Design hervor. Es kann intuitiver sein, wenn Text die Zeichenfolge und Num die Häufigkeit darstellt. In diesem Fall kann die API entsprechend geändert werden.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3