如何解决无法让 python 程序扫描用户输入的数字并检查它是否是回文、阿姆斯特朗数和完全数
我想扫描一个数字并在 python 中打印它是回文、阿姆斯特朗数或完全数,我尝试了以下方法但它不起作用,我已经单独检查了它们并且它们按预期工作。 代码:
#palindrome
n=int(input("Enter number:"))
temp=n
rev=0
while(n>0):
dig=n%10
rev=rev*10+dig
n=n//10
if(temp==rev):
print(n,"The number is a palindrome!")
else:
print(n,"The number isn't a palindrome!")
#Armstrong
sum = 0
temp = n
while temp > 0:
digit = temp % 10
sum += digit ** 3
temp //= 10
if n == sum:
print(n,"is an Armstrong number")
else:
print(n,"is not an Armstrong number")
#Perfect Number
sum1 = 0
for i in range(1,n):
if(n % i == 0):
sum1 = sum1 + i
if (sum1 == n):
print(n,"The number is a Perfect number!")
else:
print(n,"The number is not a Perfect number!")
解决方法
回文码修改n
,然后你直接重用amstrong和perfect,你要回到最初的数字,为此,请使用您的 temp
#Armstrong
sum = 0
n = temp
同时执行以下操作,出于同样的原因 n
已更改
print(temp,"The number is a palindrome!")
但是摆脱这种情况的最好方法以及更好的编码方法是使用方法
def palindrome(n):
temp = n
rev = 0
while n > 0:
dig = n % 10
rev = rev * 10 + dig
n = n // 10
if temp == rev:
print(temp,"The number is a palindrome!")
else:
print(temp,"The number isn't a palindrome!")
def armstrong(n):
count = 0
temp = n
while temp > 0:
digit = temp % 10
count += digit ** 3
temp //= 10
if n == count:
print(n,"is an Armstrong number")
else:
print(n,"is not an Armstrong number")
def perfect(n):
count = 0
for i in range(1,n):
if n % i == 0:
count = count + i
if count == n:
print(n,"The number is a Perfect number!")
else:
print(n,"The number is not a Perfect number!")
if __name__ == '__main__':
n = int(input("Enter number:"))
palindrome(n)
armstrong(n)
perfect(n)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。