Python 错误字符串索引必须是整数
Python Error string indices must be integers
def is_double_char(str):
end = len(str)+1
print(type(end))
for i in range(1, len(str)):
add_one = i+1
print(type(i))
print(type(add_one))
if str[add_one, end].find(str[i]) != -1:
return True
return False
这是我的代码。该方法应查找字符串是否包含 2 个或更多相同字符。
print(is_double_char("hello"))
______________________________
<class 'int'>
<class 'int'>
<class 'int'>
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-21-606a7223e550> in <module>()
----> 1 print(is_double_char("hello"))
<ipython-input-20-b1c815934cad> in is_double_char(str)
6 print(type(i))
7 print(type(add_one))
----> 8 if str[add_one, end].find(str[i]) != -1:
9 return True
10 return False
TypeError: string indices must be integers
我不明白。从我的调试打印来看,我所有的索引都已经是整数了。有人可以帮忙吗?谢谢。
也许这就是您所需要的:
def is_double_char(string):
end = len(string)+1
print(type(end))
for i in range(1, len(string)):
add_one = i+1
print(type(i))
print(type(add_one))
if string[add_one: end].find(string[i]) != -1:
return True
return False
注意:我将名为 str
的变量更改为 string
因为 str
是内置类型。
我用 :
替换了 ,
(第 8 行)。
代码:
def is_double_char(str):
end = len(str)+1
for i in range(1, len(str)):
add_one = i+1
if str[add_one:end].find(str[i]) != -1:
return True
return False
print(f'hello: {is_double_char("hello")}')
print(f'helo: {is_double_char("helo")}')
输出:
hello: True
helo: False
我做的唯一修改是你拼接列表的方式。此外,使用 str
作为输入参数的名称是一种非常糟糕的做法。尝试使用 str_input.
之类的东西
def is_double_char(str):
end = len(str)+1
print(type(end))
for i in range(1, len(str)):
add_one = i+1
print(type(i))
print(type(add_one))
if str[add_one, end].find(str[i]) != -1:
return True
return False
这是我的代码。该方法应查找字符串是否包含 2 个或更多相同字符。
print(is_double_char("hello"))
______________________________
<class 'int'>
<class 'int'>
<class 'int'>
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-21-606a7223e550> in <module>()
----> 1 print(is_double_char("hello"))
<ipython-input-20-b1c815934cad> in is_double_char(str)
6 print(type(i))
7 print(type(add_one))
----> 8 if str[add_one, end].find(str[i]) != -1:
9 return True
10 return False
TypeError: string indices must be integers
我不明白。从我的调试打印来看,我所有的索引都已经是整数了。有人可以帮忙吗?谢谢。
也许这就是您所需要的:
def is_double_char(string):
end = len(string)+1
print(type(end))
for i in range(1, len(string)):
add_one = i+1
print(type(i))
print(type(add_one))
if string[add_one: end].find(string[i]) != -1:
return True
return False
注意:我将名为 str
的变量更改为 string
因为 str
是内置类型。
我用 :
替换了 ,
(第 8 行)。
代码:
def is_double_char(str):
end = len(str)+1
for i in range(1, len(str)):
add_one = i+1
if str[add_one:end].find(str[i]) != -1:
return True
return False
print(f'hello: {is_double_char("hello")}')
print(f'helo: {is_double_char("helo")}')
输出:
hello: True
helo: False
我做的唯一修改是你拼接列表的方式。此外,使用 str
作为输入参数的名称是一种非常糟糕的做法。尝试使用 str_input.