用for循环输出所有的水仙花数php,DAY 010--水仙花数for循环应用

010问题:

什么是水仙花数?水仙花数是指一个 n 位正整数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)。

要求:打印输出所有的三位数"水仙花数"。

流程分析:

思路1:

1、设置范围:三位数的水仙花i,将i从100到999之间循环找书

2、由于i是整数,将i转为字符串,然后将i的百位数、十位数、个位数(x,y,z)分别取出并再次转换为整数

3、设定条件:

if pow(x,3)+pow(y,3)+pow(z,3)==i

4、如果条件满足就打印i

思路2:

1、现将这三位数的百位i、十位j、个位k分别从(1,9)、(0,9)、(0,9)这三个范围中枚举

2、判定条件:

if pow(i,3)+pow(j,3)+pow(k,3)==i*100+j*10+k

3、如果条件满足就打印ijk

代码分析:

代码1

c8e44c92dd85a067e570d288913edfc08ae.jpg

50281c46eb74355a79ad5ca8637e5f300a2.jpg

for i in range(100,1000):

x,y,z=map(int,str(i))if pow(x,3)+pow(y,3)+pow(z,3)==i:print(i)#输出结果

153

370

371

407

思路1

代码2

13940f37790b2986719cffc35b605793f89.jpg

dde894c4b6e7e6c38c26d8c672a7529a1ec.jpg

for i in range(1,10):for j in range(10):for k in range(10):if i**3+j**3+k**3==i*100+j*10+k:print(i,j,k)#输出结果

1 5 3

3 703 7 1

4 0 7

思路2

题目反思:

1、思路1需要注意如和将整数转为字符串,因为字符串是有顺序的,然后再转为整数,用到的map函数

2、思路2和枚举法很相似,幂次方也可以用pow函数来代替

新学知识点:

1、一道题的两种不一样的思路,思路1是我想出来的,思路2是题目的标准答案,我的思路可能转换起来比较麻烦,标准代码一目了然

2、pow有两种用法

用法1

importmath

math.pow( x, y )

用法2

pow(x,y[,x])

x -- 数值表达式。

y -- 数值表达式。

z -- 数值表达式。

函数是计算x的y次方,如果z在存在,则再对结果进行取模,其结果等效于pow(x,y) %z

注意:pow() 通过内置的方法直接调用,内置方法会把参数作为整型,而 math 模块则会把参数转换为 float。

3、map(function, iterable, ...)

function -- 函数,有两个参数

iterable -- 一个或多个序列

map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])#相当于

[3, 7, 11, 15, 19]

Mark on 2018.04.13

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值