如果一个n位正整数等于这个正整数每一位数字n次方的和,如370 = 3^3+7^3+0^3,那么则称这个数为阿姆斯特朗数
方法一:最容易理解,这个方法是直接对字符串进行处理,然后获取每一位进行处理最后求和
程序的逻辑是首先判断用户输入的内容是否为数字,如果不是会提醒用户。如果为数字那么首先获取数字的长度,然后根据长度计算该数字每一位数的相应次方,然后求和,计算完毕后如果得出的和与用户输入的数字大小相同,那么就输出用户输入的数字为阿姆斯特朗数,否则提示不是阿姆斯特朗数
#!/usr/bin/python3
#-*- coding:UTF-8 -*-
data_input = input('请输入数字') #获取用户输入
length = len(data_input) #获取输入的长度
sum = 0 #计算输入数字的每一位的次方和
if data_input.isdigit():
for data in data_input:
sum += int(data)**length
if int(data_input) == sum:
print('数字:' + data_input + '是阿姆斯特朗数')
else:
print('数字:' + data_input + '不是阿姆斯特朗数')
else:
print('输入内容只能为数字')
方法二:因为是获取每一位,所以可以通过取余的方式获取每一位,例如获取数字123的每一位数字
个位:123%10 = 3
123//10 = 12
十位:12%10 = 2
12//10 = 1
百位:1%10 = 1
剩下的只需要和方法一处理方法一样,求出每一位数字相应的次方,然后求和最后进行比较就可以了
#!/usr/bin/python3
#-*- coding:UTF-8 -*-
data_input = input('请输入数字') #获取用户输入
length = len(data_input) #获取输入的长度
sum = 0 #求出的每一位的次方和
if data_input.isdigit():
temp = int(data_input) #将获取的字符串转换为int
while temp > 0:
every = temp % 10
sum += every ** length
temp //= 10 #去掉输入数字的最后一位
if sum == int(data_input):
print('数字' + data_input + '是阿姆斯特朗数')
else:
print('数字' + data_input + '不是阿姆斯特朗数')
else:
print('输入内容只能为数字')