新人求助
求水仙花数时代码如下for a in range(1,10):
for b in range(0,10):
for c in range(0,10):
if a**3+b**3+c**3 == 100*a+10*b+c:
print(a+b+c)
输出的水仙花数中间带空格例如1 5 3
有什么好的解决办法吗
for i in range(100,1000):
sum = 0
temp = i
while temp:
sum = sum + (temp%10)**3
temp //= 10
if sum == i:
print(i)
上述求水仙花数的方法中,while temp和while temp >= 1:的效果相同是怎么做到的,或者说应该怎么理解while temp 在Python中,0是False,其他的数字都是True
while temp: 就相当于把temp的值取出来,如果不为0,就继续循环,否则退出循环
你可以把它理解为 while temp != 0: 本帖最后由 昨非 于 2020-11-7 10:01 编辑
for a in range(1,10):
for b in range(0,10):
for c in range(0,10):
if a**3+b**3+c**3 == 100*a+10*b+c:
print(str(a)+str(b)+str(c))#转为字符串再拼接到一起就好了
地板除得到的temp依次是i的前两位,前一位,和0(此时跳出循环)
for i in range(100, 1000):#遍历100到1000所有整数
sum = 0#定义求和变量,初值为0
temp = i
while temp:#当i得值不等于0时,一直循环
sum = sum + (temp%10) ** 3 #temp取余10得到最后一位的数值,sum等于temp各位数之和
temp //= 10 # 注意这里要使用地板除哦~ 这里得到temp的前两位
if sum == i: #判断i是否等于其各位数的三次方之和
print(i)#打印满足情况的i得值 qiuyouzhi 发表于 2020-11-7 09:52
在Python中,0是False,其他的数字都是True
while temp: 就相当于把temp的值取出来,如果不为0,就继续循 ...
谢谢大佬 昨非 发表于 2020-11-7 09:59
地板除得到的temp依次是i的前两位,前一位,和0(此时跳出循环)
谢谢大佬 午安打工人 发表于 2020-11-7 10:04
谢谢大佬
满意的话记得设为【最佳答案】哈 昨非 发表于 2020-11-7 10:05
满意的话记得设为【最佳答案】哈
大佬,我还有一个问题 temp //= 10,是因为temp是整形所以除以10之后自动取整吗,还是我理解错//=的意思了 午安打工人 发表于 2020-11-7 10:11
大佬,我还有一个问题 temp //= 10,是因为temp是整形所以除以10之后自动取整吗,还是我理解错//=的意思 ...
//=等价于temp=temp//10
意思就是对temp取地板除
地板除规定除以10下取整
页:
[1]