我正在尝试制作一个python程序来查找keith数字。如果你不知道基思数字是什么,这里有一个链接解释它们: Keith Numbers - Wolfram MathWorld
我的密码是
from decimal import Decimal
from time import sleep
activator1 = 1
while (activator1 == 1):
try:
limit = int(raw_input("How many digits do you want me to stop at?"))
activator1 = 0
except ValueError:
print "You did not enter an integer"
limitlist = []
activator2 = 1
while (activator2 <= limit):
limitlist.append(activator2)
activator2 += 1
print limitlist
add1 = 0
add = 0
count = 9
while 1:
sleep (0.1)
numbers = list(str(count))
for i in limitlist:
if (i > 0) & (add < count):
add = sum(Decimal(i) for i in numbers)
lastnumber = int(numbers[-1])
add1 = lastnumber+int(add)
numbers.reverse()
numbers.pop()
numbers.append(add1)
print add1
print add
print count
print numbers
if (add1 == count):
print"________________________________"
print add1
print count
elif (i > 0) & (add > count):
count += 1
break
它不输出任何错误,但只输出
18
9
9
[18]
有人能告诉我为什么它不能在整数范围内重复找到基思数?你知道吗
李子已经给了你很好的建议!让我们举一个小例子来说明他的意思,假设你有一个算法来确定n是否是基思数,还有一个测试循环来打印一些基思数:
这样的片段给了你:
哇,太棒了。。。但是等等,假设你不了解基思数函数,你想探索一下算法,以便理解它的本质。如果我们添加一些有用的调试行呢?你知道吗
这样你就可以追踪重要的步骤,算法在你的头脑中也会有意义:
结论:我建议您学习如何调试自己的代码,而不是询问陌生人;-)
就在你面前:
你处在一个没有输出的无限循环中。你只需要一次。之后,i遍历值1、2和3。每次通过for循环,所有三个if条件都是False。如果没有更改,则退出for循环,然后返回while的顶部。在这里,您将数字设置回['9'],并永远循环。你知道吗
我建议你学习两种技能:
相关问题 更多 >
编程相关推荐