从字符串中取出一部分会给我一个不应该发生的错误

2024-03-29 00:23:47 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我从互联网上取了第一个10万位数的pi(虽然没有“.”),然后运行了以下代码:

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]的长度结束。你知道吗

我不明白怎么了。。。请帮帮我!你知道吗

EDIT:“TypeError:字符串索引必须是整数”是错误。你知道吗


Tags: 代码in程序forlenifpi切片
2条回答

解决方案是:

for i in range(len(pi)):
  if str(i + 1) == pi[i: i+len(str(i + 1))]:
    print(i + 1)

你犯了两个错误:

  1. 切片表示法使用:,而不是,
  2. range0开始计数,而不是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。这就省去了0i-1+len(str(i))]刚好适合切片。你知道吗

相关问题 更多 >