(Help) TypeError: ‘Str’ object kan niet worden geïnterpreteerd als een geheel getal

Ik wil gebruik maken van de waarde-index verwijst naar maar hoe doe ik dat?


Antwoord 1, Autoriteit 100%

Het lijkt uit uw fout dan de variabele ‘index’ is een string, geen int. Je zou het kunnen converteren met int ().

index = int(index)
for i in range(string[index:]):   

Nu, string [index:] zal ook een tekenreeks zijn. Dus je moet dat ook converteren:

>>> string = "5"
>>> range(string)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: range() integer end argument expected, got str.
>>> range(int(string))
[0, 1, 2, 3, 4]
>>>

Dat is aangenomen dat string [index:] alleen een nummer bevat. Als dat niet altijd het geval is, kun je iets doen als:

# 'index' contains only numbers
index = int(index)
number = string[index:]
if number.isdigit():
    number = int(number)
    for i in range(number):   

van het Wikipedia-artikel op Python :

Python gebruikt eend typen en heeft objecten getypt, maar untyped variabele namen. Type beperkingen worden niet gecontroleerd op compileertijd; In plaats daarvan kunnen operaties op een object falen, waardoor het gegeven object niet van een geschikt type is. Ondanks dat het dynamisch wordt getypt, is Python sterk getypt, verbiedingsactiviteiten die niet goed zijn gedefinieerd (bijvoorbeeld, het toevoegen van een nummer aan een string) in plaats van stil te maken om ze te geven.

In dit geval probeert u een tekenreeks te passeren (). Deze functie wacht op een nummer (een positief geheel getal, zoals het is). Dat is waarom je je string omzet naar int. Je zou echt wat meer kunnen controleren, afhankelijk van je behoeften. Python geeft om typen.

hth,

Other episodes