gpt4 book ai didi

Python: 'For' 循环只运行一次,Project Euler

转载 作者:行者123 更新时间:2023-11-28 20:08:02 28 4
gpt4 key购买 nike

我一直在学习 Python 并使用 Project Euler 来恢复我的一些数学技能。我遇到了 Problem 35 的问题。我已经生成了所有小于 100 万的素数,消除了那些包含偶数的素数,现在我只是试图对剩余的 ~3k 素数进行最后一次检查。

这个函数应该:

  1. 列出 ~3k 个素数。
  2. 返回一个新列表,该列表由原始列表中每个项目的所有旋转列表组成。

这是我所拥有的,以及我对每一行的理解:

def rotations(lst):
newlist = []
for i in lst: # Take each int item in list.
s = [int(j) for j in str(i)] # Turn each item into a list of digit strings
num = ([s[k:]+s[:-len(s)+k] for k in range(len(s))]) # Generate list of rotations of strings
tmplst = []
for l in num: # For each string rotation
tmplst.append(int(''.join(map(str,l)))) # Turn it into an integer, add that int to tmplst
newlist.append(tmplst) # Add each tmplist to 'newlist'
return newlist

输入 rotations([123,456]) 只会产生:

[[123, 231, 312]]

在我怀孕的时候

[[123, 231, 312],[456,564,645]]

任何可能出错的线索?

最佳答案

每当有人拥有其他人(包括我自己)无法重现其奇怪行为的代码时,我会立即想到:空格错误。并查看您的代码:

'    def rotations(lst):'
' newlist = []'
' for i in lst: # Take each int item in list. '
' \t s = [int(j) for j in str(i)] # Turn each item into a list of digit strings'
' \t num = ([s[k:]+s[:-len(s)+k] for k in range(len(s))]) # Generate list of rotations of strings '
' \t tmplst = [] '
' \t for l in num: # For each string rotation'
" \t tmplst.append(int(''.join(map(str,l)))) # Turn it into an integer, add that int to tmplst"
" \t newlist.append(tmplst) # Add each tmplist to 'newlist'"
' return newlist'
' '

在我看来,您可能混合使用了制表符和空格。这可能会导致非常神秘的行为,因为某些行并没有像您想象的那样缩进。运行你的程序

python -tt your_program_name.py

确认,如果是这样,切换到使用四空格缩进(我指的是包含四个空格的“制表符”,而不是 \t。)

关于Python: 'For' 循环只运行一次,Project Euler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15230393/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com