(帮助)类型错误:';str';对象不能解释为整数 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 在('racecar',3)处获得奇数回文 文件“C:\Users\musar\Documents\University\Courses\Python\Assignment 2\palindromes.py”,第48行,位于 对于范围内的i(字符串[索引:): TypeError:“str”对象不能解释为整数

(帮助)类型错误:';str';对象不能解释为整数 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 在('racecar',3)处获得奇数回文 文件“C:\Users\musar\Documents\University\Courses\Python\Assignment 2\palindromes.py”,第48行,位于 对于范围内的i(字符串[索引:): TypeError:“str”对象不能解释为整数,python,python-3.x,Python,Python 3.x,我想使用索引引用的值,但我该怎么做?从您的错误来看,“index”变量是字符串,而不是int。您可以使用int()转换它 现在,string[index:]也将是一个字符串。因此,您也需要将其转换为: index = int(index) for i in range(string[index:]): 发件人: Python使用duck类型,并且有类型化的对象,但没有类型化的变量名。编译时不检查类型约束;相反,对对象的操作可能会失败,这意味着给定的对象不是合适的类型。尽管Python是动

我想使用索引引用的值,但我该怎么做?

从您的错误来看,“index”变量是字符串,而不是int。您可以使用int()转换它

现在,string[index:]也将是一个字符串。因此,您也需要将其转换为:

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

Python使用duck类型,并且有类型化的对象,但没有类型化的变量名。编译时不检查类型约束;相反,对对象的操作可能会失败,这意味着给定的对象不是合适的类型。尽管Python是动态类型的,但它是强类型的,禁止未定义好的操作(例如,向字符串中添加数字),而不是默默地试图理解它们

在本例中,您尝试将字符串传递给range()。此函数等待一个数字(实际上是一个正整数)。这就是为什么您需要将字符串转换为int。实际上,您可以根据需要进行更多的检查。Python关心类型


嗯,

你认为问题出在哪里?到目前为止你试过什么?你找了什么?post your code pleaseindex实际上是我函数中的一个参数,它指的是一个int,它指的是字符串的索引值。我想使用参数中的值作为索引,我该怎么做?def get_odd_palindrome_at(string,index):“”(str,int)->str返回字符串中以指定索引为中心的最长奇数长度回文。根据您引用的异常(对于范围内的i(string[index:]):TypeError:'str'对象不能解释为整数),在我看来,'index'实际上包含一个字符串,不是整数。应该检查是否将整数传递给函数。请注意,在Python(以及大多数语言)中,字符串可以包含数字,var=“3”将创建一个字符串。。。不是整数。如果这听起来很明显,很抱歉,但有时人们会忘记这一点。或者,如果答案较短,则函数中的第一行可以转换索引:index=int(index)。但最好检查发送给函数的数据类型。如果函数需要一个字符串和一个int,那么应该发送一个字符串和一个int;)。我在('racecar',3)中输入了>>>get_odd_palindrome_,我得到了错误,3似乎是一个int。我尝试将函数体中的所有索引都索引为int(index),但仍然得到相同的错误好的,对不起,我尝试使用Python 2.X,但没有得到您的错误。因此,您所犯的错误并不是因为index是一个字符串,而是因为string[index:]是一个字符串。若字符串为“racecar”,索引为3,则字符串[3:]为“ecar”。并且不能将范围与字符串一起使用。。。你必须用一个数字。
index = int(index)
for i in range(string[index:]):   
>>> 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]
>>>
# 'index' contains only numbers
index = int(index)
number = string[index:]
if number.isdigit():
    number = int(number)
    for i in range(number):