2024-05-16 00:33:59 发布
网友
所以我的程序检查回文数,lychrel和non-lychrel的数量。最初我使用了一个'break'和一个for循环,但是我应该使用while循环。在
我的while循环与for循环的工作方式不同,我不知道我做错了什么? --范围应该在num1和num2之间 另外,输出应该是提示的精确副本,所以它看起来是这样的。 谢谢!在
while循环:
while (nums>=num1 and nums<=num2 and flag): #for nums in range(num1, num2+1): num_str = str(nums) if num_str == num_str[::-1]: pal += 1 else: count = 0 num_el = num_str while (count < 60): np_total = int(num_el) + int(num_el [::-1]) count += 1 nums_el = str(np_total) num_el = nums_el if num_el == nums_el [::-1]: nonlych += 1 flag = False else: lychrel += 1 print(nums, "looks like a lychrel number") nums += 1
在 else: lychrel += 1 print(nums, "looks like a lychrel number")
else: lychrel += 1 print(nums, "looks like a lychrel number")
每次while循环退出时执行。您的for循环中的break正在跳过它。在
while
for
break
第二个问题是当flag设置为False时,它将停止外部while循环,因此您找到的第一个非lychrel数字将是您测试的最后一个数字。在
flag
False
这是我尽量少改变的尝试。您可以添加一个类似isLychrel的标志,而不是使用count变量来传递信息。在
isLychrel
count
while循环:
在
else: lychrel += 1 print(nums, "looks like a lychrel number")
每次
while
循环退出时执行。您的for
循环中的break
正在跳过它。在第二个问题是当
flag
设置为False
时,它将停止外部while
循环,因此您找到的第一个非lychrel数字将是您测试的最后一个数字。在这是我尽量少改变的尝试。您可以添加一个类似
^{pr2}$isLychrel
的标志,而不是使用count
变量来传递信息。在相关问题 更多 >
编程相关推荐