该代码只能正确运行一半并且在f_num = num + num_rev的点上运行,此处输出仅为num_rev而不是f_num

时间:2019-06-29 16:51:51

标签: python

我有一个任务,要从用户那里获取一个数字,将其取反并添加到用户给定的数字中,然后检查总和是否是回文。

我已经编写了代码,但仍然停留在5。首先,f_num=num+num_rev不起作用,对f_num的回答是321,当num_rev时是123给定的输入为while True: while True: try: num = int(input('\nEnter number:')) except ValueError: print("\nPlease enter only number") num_rev = 0 while num > 0: dig = num %10 num_rev = (num_rev *10) + dig num = num //10 print("\nThe reverse of given number is {}.".format(num_rev)) f_num=num+num_rev print("\nAfter adding the reverse number in given number,the sum is {}.".format(f_num)) a_num_rev=0 while f_num > 0: dig = f_num % 10 a_num_rev = (a_num_rev *10) + dig f_num = f_num //10 if f_num==a_num_rev: print("\nThe number {} is palindrome.".format(f_num)) break else: print("\nThe number {} is not palindrome.".format(f_num)) while True: Repeat=input("\nDo you want to repeat?\n\nYes or No:") Repeat=Repeat.lower() if Repeat not in ["yes","y","no","n"]: print("\nPlease select correct option") else: break if Repeat in ["yes","y"]: continue else: if Repeat in ["no","n"]: print("\n-----Thank you for using-----") input() break 。该添加无法正常工作,之后一切正常。

i

1 个答案:

答案 0 :(得分:0)

您将用户取回的数字取反的过程会破坏原始值,因此,当您尝试将原始值和取反的值相加时,最终只会得到取反的值作为和(原始值为零)。

要使代码正常工作,您需要保留一个变量,其原始值为num,以便以后使用。像num_orig = num这样的行就足够了。然后在执行加法操作时使用该变量:f_num = num_orig + num_rev。或者,您可以重命名某些内容,并在num保持原始值的同时对额外变量进行破坏性修改。

当您检查f_num来查看它是否等于它自己的反转时,也会遇到类似的问题。在计算a_num_rev时,您将销毁f_num(将其变为零)。