我有一个创建程序的任务,该程序要求在打印出具有最长循环长度的数字的范围内开始和结束数字。我对编程很陌生,不确定我是否正确地进行编程。我不确定我的程序是否选择了周期最长的数字。我如何要求程序提供周期长度?我有两个定义(is_palindromic和rev_num)是我的教授给我的,我必须在我的任务中。
# determines if a number is palindromic
def is_palindromic (n):
return (n == rev_num(n))
# reverses a number
def rev_num (n):
rev_n = 0
while (n > 0):
rev_n = rev_n * 10 + (n % 10)
n = n // 10
return (rev_n)
def main():
start = eval (input ("Enter starting number: "))
end = eval (input ("Enter ending number: "))
total = 0
cycle_length = 0
while (start <= end):
if (is_palindromic((start))):
total += start
start = start + 1
cycle_length += 1
print (total)
print (cycle_length)
main()
答案 0 :(得分:0)
这是我发现的一些鸭子:
如果任何数字被反转并添加到自身,并且该过程重复了足够长的时间,则大部分时间都会产生回文数字。回文编号是向前和向后读取相同的编号。
我们将在此场景中定义循环长度作为实现回文数所需的步骤数。步骤被定义为向自身添加数字的反转。
所有回文数的周期长度为零。由于所有单位数字都是回文,因此它们的周期长度为零。
如果起始编号为57,则达到回文编号所需的步骤数为2.
57
132 [57 + 75 = 132]
363 [132 + 231 = 363]
以下是一些提示让你前进的提示:
start
,因为您可能希望在程序结束时的某处打印起始和结束数字。如果可以避免,请不要丢失信息。只需创建另一个变量。range()
函数来处理一系列数字的迭代。请注意不包含结尾成员,因此您必须range(start, end+1)
。max_key, max_value
对,你可以每次测试和更新。 (如果current_value&gt; max_value,则设置max_key = current_key,max_value = current_value)