Python语言基础与应用-北京大学-陈斌-P32-31-计算和控制流-上机练习:创建并调用函数-水仙花数判定-上机代码
本文环境: win7 + Thonny3.2.6
# 水仙花数-阿姆斯特朗数(Armstrong number)训练
def self_times(number,user_number_len): # 自定义一个自己乘自己的函数
i = 1
self_times_result = number
while i < user_number_len:
self_times_result = self_times_result * number
i += 1
return self_times_result
def is_sxh_number(user_number): # 自定义一个判断是否是水仙花数的函数
user_number_len = len(user_number)
i = 0 # 自定义 i 用来遍历用户输入的数字
total_result = 0 # 自定义一个变量 total_result 接收整个程序运行的结果
while i < user_number_len:
temp = int(user_number[i]) # 用下标法取出用户输入的每个数值并转换为数值型
total_result = total_result + self_times(temp,user_number_len)
i += 1
if total_result == int(user_number):
print("%s是水仙花数。" % user_number)
return True
else:
return False
def sxh_list(max): # 自定义一个把水仙花数装入数组的函数
i = 100
result_list = []
while i <= int(max):
if is_sxh_number(str(i)):
result_list.append(i)
i += 1
return result_list
while True: #
user_number = input("请输入一个大于100的数,程序会判断它是否是水仙花数:")
is_sxh_number(user_number)
user_max_number = input("请输入最大值max >= 1000,程序将输出100到max之间的水仙花数:")
print(sxh_list(user_max_number))
结果:
Python 3.7.6 (bundled)
>>> %Run sxh_number.py
请输入一个大于100的数,程序会判断它是否是水仙花数:153
153是水仙花数。
请输入最大值max >= 1000,程序将输出100到max之间的水仙花数:99999
153是水仙花数。
370是水仙花数。
371是水仙花数。
407是水仙花数。
1634是水仙花数。
8208是水仙花数。
9474是水仙花数。
54748是水仙花数。
92727是水仙花数。
93084是水仙花数。
[153, 370, 371, 407, 1634, 8208, 9474, 54748, 92727, 93084]