水仙花数 我没有理解 求助各位大佬
这个是我本来的想法while True:
import random
a = random.choice()
b = random.choice()
c = random.choice()
for num in range(100,1000):
if num != 100*a + 10*b + c:
continue
if num == a**3 + b**3 + c**3:
print(num)
然后这里的 num能不能让它只打出答案 然后答案不要一直打印
看到它一直在打印重复的答案 我还以为我弄错了
然后是018讲的作业的答案 我没有完全理解
for i in range(100, 1000):
sum = 0
temp = i
while temp:
sum = sum + (temp % 10) ** 3
temp //= 10
if sum == i:
print(i)
这个 sum = sum + (temp % 10)**3
temp //= 10
就是这个没有理解
求助各位大佬{:5_111:} 好吧,我现在理解了, 就是在018讲已经讲清楚了 我没有仔细看{:5_104:}
sum = sum + (temp % 10) ** 3 的功能就是每次将最后一位计算三次方的结果累加到 sum 变量里面
temp //= 10 这句就不难理解了,123 拿出 3 之后,下一步就应该是拿倒数第二位来算三次方了,所以我们应该将 123 去掉一位,变成 12,那十进制数去掉末位的方法当然就是除以 10 咯
本帖最后由 isdkz 于 2022-4-8 12:59 编辑
第一:你那个一直打印重复的答案是因为你用了随机,
随机出重复的很正常,这种情况不是测什么概率的你就不应该用随机,得用枚举,
第二:答案里的是在三位数中枚举,temp % 10 可以得到最后一位数,
而 temp %10 想要得到它的高位数就得把高位往低位挪,
temp //= 10 可以丢弃最后一位数,这样高位自然就可以往低位挪了 本帖最后由 收纳空白1321 于 2022-4-8 13:27 编辑
isdkz 发表于 2022-4-8 12:57
第一:你那个一直打印重复的答案是因为你用了随机,
随机出重复的很正常,这种情况不是测什么概率的你就 ...
感谢大佬的帮助{:5_111:}
枚举是在 小甲鱼的视频 后面出现的吗 是的话 我就 慢慢看过去
不是的话大佬您说说在哪里可以找到{:5_111:} 收纳空白1321 发表于 2022-4-8 13:24
感谢大佬的帮助
枚举是在 小甲鱼的视频 后面出现的吗 是的话 我就 慢慢看过去
不是的话 ...
https://baike.baidu.com/item/%E6%9E%9A%E4%B8%BE%E6%B3%95/2473707 isdkz 发表于 2022-4-8 13:31
https://baike.baidu.com/item/%E6%9E%9A%E4%B8%BE%E6%B3%95/2473707
感谢大佬的帮助{:5_111:} {:5_95:} hornwong 发表于 2022-4-14 23:15
{:5_95:}
页:
[1]