Python 从字符串中提取一部分会给我带来一个错误,它不应该';不会发生
更新:问题解决了,我有两个问题。其中一个是a型。但另一个是我自己发现的,现在它正常工作了。请不要再回答了 我想做一个程序,找到一个以圆周率中圆周率的数字开始的数字。(示例:pi=3.1415…,5是pi的第五位数字,但我想查找除5以外的更多数字) 我从互联网上获取了第一个10万位数的圆周率(不带“.”),并运行了以下代码: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
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不知什么原因,我没看到。