python学习——练习题(13)
2024-09-28 22:54:48
"""
题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",
因为153=1的三次方+5的三次方+3的三次方。
程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
""" def answer1():
"""
正常for循环比较
:return:
"""
print("输出一", end=":")
for i in range(100, 1000):
a = i // 100
b = i % 100 // 10
c = i % 10
if i == a ** 3 + b ** 3 + c ** 3:
print(i, end=",") answer1() def answer2():
"""
逆向思维,有三个一位数组合成一个三位数
:return:
"""
print("\n输出二", end=":")
for i in range(1, 10):
for j in range(0, 10):
for k in range(0, 10):
if i ** 3 + j ** 3 + k ** 3 == i * 100 + j * 10 + k:
print(i * 100 + j * 10 + k, end=",") answer2() def answer3():
"""
通过类型转换来获取三位数的各位数值
:return:
"""
print("\n输出三", end=":")
for i in range(100, 1000):
s = str(i)
if pow(int(s[0]), 3) + pow(int(s[1]), 3) + pow(int(s[2]), 3) == i:
print(i, end=",") answer3() def answer4():
"""
领用divmod函数来计算
:return:
"""
print("\n输出四", end=":")
for i in range(100, 1000):
m = i
sumNum = 0
while m > 0:
m, n = divmod(m, 10)
sumNum += n ** 3
if sumNum == i:
print(i, end=",") answer4() def answer5():
"""
利用列表for if 用法来实现
:return:
"""
print("\n输出五", end=":")
L = [i for i in range(100, 1000) if (i // 100) ** 3 + (i // 10 % 10) ** 3 + (i % 10) ** 3 == i]
print(L) answer5()
最新文章
- c# 生成SHA1加密字符串
- [游戏学习24] MFC 各种绘图 字体学习
- js常规日期格式处理、月历渲染、倒计时函数
- Atitit.guice3 ioc 最佳实践 o9o
- MPI简介
- ReactiveCocoa的使用方法
- DF与EF的区别
- URAL 1233 - Amusing Numbers
- ashx文件要使用Session
- windows下svn+apache搭建svn服务器
- 多线程CountDownLatch和Join
- java面试题之int和Integer的区别
- 银河麒麟操作系统U盘手动挂载,出现乱码
- html2cavans
- 基于爬取百合网的数据,用matplotlib生成图表
- 为啥用ip不可以访问知乎,而百度却可以?
- electron入坑指南
- BS架构和CS架构的区别
- [skill] C语言数组名到底是个啥
- pyquery 安装