求水仙花数
本帖最后由 Juniorboy 于 2020-5-16 23:07 编辑import math
for i in range(100 ,1000) :
p = 1000
while p:
a =i / 100
b = i / 10 % 10
c = 1 %10
if (pow (i,3)==pow(a,3) + pow(b,3)+pow(c,3)) :
print (i)
p -= 1
for i in range(100, 1000):
sum = 0
temp = i
while temp:
sum = sum + (temp%10) ** 3
temp //= 10 # 注意这里要使用地板除哦~
if sum == i:
print(i)
第一个代码是我的,但是我的运行之后什么也不打印。
第二个是小甲鱼老师的,没看懂他的思路。
另外再问一下if elif while 这一类的判断条件里面可以有算术运算符吗,我好像记得听过不能有,但是我用了也没报错。 问题有点多:
import math #没必要,内置pow就可以用了
for i in range(100 ,1000) :
p = 1000
while p: <---这个真看不懂
a =i / 100 <---应该是i // 100
b = i / 10 % 10 #<---应该是i//10%10
c = 1 %10 #<---应该是i%10,打错成1了
if (pow (i,3)==pow(a,3) + pow(b,3)+pow(c,3)) : <---水仙花数理解错误,应该是:if (i==pow(a,3) + pow(b,3)+pow(c,3))
print (i)
p -= 1
改成:
for i in range(100 ,1000) :
a =i // 100
b = i // 10 % 10
c = i %10
if i==pow(a,3) + pow(b,3)+pow(c,3) :
print (i) 第一个代码:没有打印说明没有满足你的if语句,另外你这个while语句中相当于执行了1000次,第1001次才结束循环,但是循环的内容是一样的,因为和p无关;
第二个代码:其实就是100-999每个数字都要求一次各位数数字3次方之和(如:i = 121就是1**3+2**3+1**3 打印的就是10(1+8+1);
判断条件后面的语句要求你的语句返回bool值(True orFalse)当然0代表False,其他代表True,所以条件语句返回bool值或者一个数字都可以; 你要注意 python 和C 不一样
C 语言 260 / 100 =2
但是 python
260 // 100 = 2
260 / 100 = 2.6
python 的变量是没有固定的数据类型的! RandallSteven 发表于 2020-5-16 23:47
第一个代码:没有打印说明没有满足你的if语句,另外你这个while语句中相当于执行了1000次,第1001次才结束 ...
明白了,谢谢谢谢。 liuzhengyuan 发表于 2020-5-17 08:15
你要注意 python 和C 不一样
C 语言 260 / 100 =2
但是 python
嗯嗯,明白了,谢谢谢谢。 liuzhengyuan 发表于 2020-5-17 08:15
你要注意 python 和C 不一样
C 语言 260 / 100 =2
但是 python
嗯嗯,明白了,谢谢谢谢。
页:
[1]