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.

之类的东西