|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目--
1. 寻找水仙花数
题目要求:如果一个3位数等于其各位数字的立方和,则称这个数为水仙花数。例如153 = 1^3+5^3+3^3,因此153是一个水仙花数。编写一个程序,找出所有的水仙花数。
最开始只想到了通过循环的方法,一点儿都没想到如何使用函数...
下述代码是我到现在为止的做出来的,通过注释可以看到我踩了自己挖的多少坑。
出bug就测试、缩小循环范围、加入print语句来看到代码运行中各变量的值...
- # 153 = 1*3 + 5*3 + 3*3
- # 153 // 10 = 15, % 3
- # 15 // 10 = 1 , % 5
- # 1 // 10 = 0, % 1
- #上述内容可以通过循环实现, 把商设为变量shang,while shang: 可以实现循环和控制循环终止
- #beichu = shang, 可以实现下次循环时,被除数变成本次循环的shang
- #思考如何把每次的余数*3求和,得到一个值和初始值比较, 可以使用+=的方法
- #大循环规定了范围, 三位数,那么大循环范围为100-999, 例如for i in range(100,1000)
- #需预先设定的变量有, 每次循环中的商shang,每次循环中的余数yu, 余数的和he
- yu = 0
- #循环范围小一些测试循环
- for i in range(152, 155):
- print('当前i值为', i) #使用print来检查代码
- #对每个三位数求出个位、十位、百位乘以3的和
- each = i #保留i这个变量方便后续if比较
- shang = 1 #放在循环里是为了第二次循环开始时,把变量shang值从0改回1,目的是为了第二次循环能正常开始
- he = 0 #放在循环里是为了第二次循环开始时,把变量he值回归零,避免累加上一次循环的he值
- while shang: #控制当商为0时结束循环
- shang = each // 10
- print(' 此时shang值为', shang)
- yu = each % 10
- print(' 此时yu值为', yu)
- each = shang #使本轮循环的商作为下轮循环的被除数
- he += yu ** 3
- print(' 当前he值为', he) #使用print来检查代码
- print()
- #判断哪些数符合条件,打印
- if he == i:
- print(i, '是水仙花数')
- else:
- print(i, '不是水仙花数')
复制代码
|
|