我有一个任务,要从用户那里获取一个数字,将其取反并添加到用户给定的数字中,然后检查总和是否是回文。
我已经编写了代码,但仍然停留在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
答案 0 :(得分:0)
您将用户取回的数字取反的过程会破坏原始值,因此,当您尝试将原始值和取反的值相加时,最终只会得到取反的值作为和(原始值为零)。
要使代码正常工作,您需要保留一个变量,其原始值为num
,以便以后使用。像num_orig = num
这样的行就足够了。然后在执行加法操作时使用该变量:f_num = num_orig + num_rev
。或者,您可以重命名某些内容,并在num
保持原始值的同时对额外变量进行破坏性修改。
当您检查f_num
来查看它是否等于它自己的反转时,也会遇到类似的问题。在计算a_num_rev
时,您将销毁f_num
(将其变为零)。