Hoe komt het dat ik deze foutmelding krijg?
Mijn code:
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)
Fout:
TypeError: unsupported operand type(s) for -: 'str' and 'int'
Antwoord 1, autoriteit 100%
-
De reden dat dit niet werkt is omdat (Python 3)
input
een string retourneert. Gebruikint(some_string)
om het naar een geheel getal te converteren. -
Je houdt indexen doorgaans niet handmatig bij in Python. Een betere manier om zo’n functie te implementeren zou zijn
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: ")) # Convert to an int immediately. cat_n_times(text, num)
-
Ik heb je API hierboven een beetje gewijzigd. Het lijkt mij dat
n
het aantal kerenmoet zijn ens
de tekenreeks.
Antwoord 2, autoriteit 45%
Voor toekomstig gebruik is Python sterk getypt. In tegenstelling tot andere dynamische talen, zal het niet automatisch objecten casten van het ene of het andere type (bijvoorbeeld van str
naar int
), dus je moet dit zelf doen. Dat zul je op de lange termijn leuk vinden, geloof me!