回文 - while 循环而不是 for 循环
Palindrome- while loop instead of for loop
所以我的程序检查回文数、lychrels 和非 lychrels 的数量。最初我使用了 '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")
每次 while
循环退出时,都会执行 。 for
循环中的 break
被跳过了。
第二个问题是,当 flag
设置为 False
时,它会停止你的外部 while
循环,所以你找到的第一个非 lychrel 数字将是最后一个数字你测试一下。
这是我尽可能少更改的尝试。您可以添加一个标志,如 isLychrel
而不是使用 count
变量来传递信息。
nums = num1
while (nums>=num1 and nums<=num2):
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
count = 999 # breaks while loop
if (count != 999):
lychrel += 1
print(nums, "looks like a lychrel number")
nums += 1
所以我的程序检查回文数、lychrels 和非 lychrels 的数量。最初我使用了 '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")
while
循环退出时,都会执行 。 for
循环中的 break
被跳过了。
第二个问题是,当 flag
设置为 False
时,它会停止你的外部 while
循环,所以你找到的第一个非 lychrel 数字将是最后一个数字你测试一下。
这是我尽可能少更改的尝试。您可以添加一个标志,如 isLychrel
而不是使用 count
变量来传递信息。
nums = num1
while (nums>=num1 and nums<=num2):
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
count = 999 # breaks while loop
if (count != 999):
lychrel += 1
print(nums, "looks like a lychrel number")
nums += 1