Python 从字符串中提取一部分会给我带来一个错误,它不应该';不会发生

Python 从字符串中提取一部分会给我带来一个错误,它不应该';不会发生,python,Python,更新:问题解决了,我有两个问题。其中一个是a型。但另一个是我自己发现的,现在它正常工作了。请不要再回答了 我想做一个程序,找到一个以圆周率中圆周率的数字开始的数字。(示例:pi=3.1415…,5是pi的第五位数字,但我想查找除5以外的更多数字) 我从互联网上获取了第一个10万位数的圆周率(不带“.”),并运行了以下代码: for i in range(len(pi)): if i == pi[i-1,i+len(str(i))]: print(i) (Pi是一个变量,包含前100

更新:问题解决了,我有两个问题。其中一个是a型。但另一个是我自己发现的,现在它正常工作了。请不要再回答了

我想做一个程序,找到一个以圆周率中圆周率的数字开始的数字。(示例:pi=3.1415…,5是pi的第五位数字,但我想查找除5以外的更多数字)

我从互联网上获取了第一个10万位数的圆周率(不带“.”),并运行了以下代码:

for i in range(len(pi)):
  if i == pi[i-1,i+len(str(i))]:
    print(i)
(Pi是一个变量,包含前100k位,不带“.”)

所以第一行似乎没问题。第二行从pi中获取一个切片。 切片从[i]位开始(我做了-1,因为在编程中从0开始计数),以[i]位+数字[i]的长度结束

我不明白怎么了。。。请帮忙

编辑:“TypeError:字符串索引必须是整数”是错误。

解决方案是:

for i in range(len(pi)):
  if str(i + 1) == pi[i: i+len(str(i + 1))]:
    print(i + 1)
你犯了两个错误:

  • 切片表示法使用
    ,而不是
  • 范围从
    0
    开始计数,而不是从
    1
    开始计数。因此,您应该启动索引
    -1
    ,而不是所需的索引
    0

  • 我将您的代码更正为:

    for i in range(len(pi)):
    if str(i) == pi[i-1:i-1+len(str(i))]:
        print(i)
    
    Python
    中,可以使用
    而不是
    对字符串进行切片

    i
    必须转换为字符串。所生成的切片不会使其成为整数。它保留其字符串属性


    切片启动一个
    i-1
    。这就省去了
    0
    i-1+len(str(i))]
    只是为了适应切片而调整。

    不是
    。(以打字错误结尾)谢谢,我几乎不用这个东西,所以我不小心用了逗号。我也已经纠正了这个错误。^(没有看到你的答案)一开始我不明白发生了什么。所以我把它当作一道代数题来做:(每次我重新修改它直到它修好)它已经解决了though@TomerGan不知什么原因,我没看到。