python学习每日一题【20200225】python实现“水仙花数”的计算

题目:

每日一练(2-25):
题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。 例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

实现方法:

方法1 先把数字转换成字符串,然后分别截取三位数,最后计算

例如num = 246
num_s = str(num)	#"246"
三位数分别为:num_s[0]、num_s[1]、num_s[2]
然后再计算。

方法2 通过数学计算,分别算出个位、十位、百位,最后计算

例如num = 234
个位、十位、百位分别为a\b\c
c = num % 10			#4
b = ((num-c)/10)%10		#3
a = num // 100			#2
参考答案全代码
# -*- coding: utf-8 -*-
# @Time    : 2020年2月26日
# @Software: PyCharm
# from Python学习交流群:922624810

# 【晓风】代码示例一:
# 水仙花数:
# 1、水仙花数的范围:大于100,小于但不等于1000
# 2、它的每个位上的数字的 n 次幂之和等于它本身

def func1(num):
    num_s = str(num)  # 三位数转成字符串,截取三位
    a = num_s[0]
    b = num_s[1]
    c = num_s[2]
    return int(a),int(b),int(c)

def func2(num):
    cc = num % 10               # 4
    bb = ((num - cc) / 10) % 10  # 3
    aa = num // 100             # 2
    return aa,bb,cc

list1 = []
list2 = []

for num in range(100,1000):
    a, b, c = func1(num)
    aa, bb, cc = func2(num)
    if num == pow(a,3) + pow(b,3) + pow(c,3) :
        list1.append(num)
    if num == pow(aa,3) + pow(bb,3) + pow(cc,3) :
        list2.append(num)
    pass
print("方法1计算结果: ", list1)
print("方法2计算结果: ", list2)

结果输出:
方法1计算结果:  [153, 370, 371, 407]
方法2计算结果:  [153, 370, 371, 407]

Process finished with exit code 0

你可能感兴趣的:(Python学习每日练习题,字符串,python,算法)