如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。 例如1^3 + 5^3 + 3^3 = 153。
1000以内的阿姆斯特朗数: 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407
检测用户输入的数字是否为阿姆斯特朗数
一开始不知道怎么获取输入数字的位数,后来百度发现len()可以获取长度:
尝试一:
num = int(input(“Please input an int number(>0)”))
lenth = len(num)
结果:
Please input an int number(>0)1005
Traceback (most recent call last):
File “F:\PycharmWorkSpace\菜鸟教程,Python实例\10阿姆斯特朗数.py”, line 6, in
lenth = len(num)
TypeError: object of type ‘int’ has no len()
则先不把num转化为int。
尝试二:
num = input(“Please input an int number(>0)”)
lenth = len(num)
print(lenth)
结果:
Please input an int number(>0)9999
4
好了,可以开始啦~
除法:
/是精确除法
//是向下取整除法
%是求模,是基于向下取整除法规则的
四舍五入取整round
向零取整int
向下和向上取整函数math.floor, math.ceil
我的:
num_0 = input(“Please input an int number(>0)”)
num = num_0
lenth = len(num)
print(“The lenth of the number is “ + str(lenth))
a = []
for i in range(lenth, 0, -1):
t = 10 (i - 1)
if i == lenth:
a.append(int(num) // t)
else:
k = int(num) - (a[int(lenth) - i - 1] * (10 i))
a.append(k // t)
num = int(num) - (a[int(lenth) - i - 1] (10 * i))
print(a)
num_1 = 0
for i in range(0, lenth):
num_1 = num_1 + a[i] ** lenth
print(num_1)
print(num_0)
if num_1 == int(num_0):
print(“This is an amusitelang number!”)
else:
print(“This is not an amusitelang number!”)
结果:
Please input an int number(>0)370
The lenth of the number is 3
[3, 7, 0]
370
370
This is an amusitelang number!
思考:
想要将代码模块化,写成函数
