我试着列出99除以2的幂(2,4,8,16,32,64)的唯一余数,这些余数比99的余数小。代码如下:
num = 99
div = 2
lst = []
while div < num:
r = num % div
while r != 0 and r not in lst:
lst.append(r)
div = div * div
print(lst)`
我所使用的代码并没有为列表中的99%64追加余数,即35。程序输出:[一、三]
预期输出:[1,3,35]
我是一个完整的编程初学者,如果你能帮我找出正确的方法,我有问题,我会很感激。
4条答案
按热度按时间kd3sttzy1#
您的
div
在每一步中递增为在步骤/循环3中,
div
值大于num
,即256 > 99,因此程序在while
循环中结束并退出,输出仅为[1, 3]
要解决这个问题,您需要将
div
的值增加2的倍数。下面是代码这里有一点性能更好的代码,可以使用set
使用集合理解
使用集合理解,使用dict属性作为顺序
bmvo0sr52#
你的方式
添加一个变量来跟踪功率并在每个循环中递增:
另一种方式
你也可以用一种更pythonic的方式来做。
我不建议把它放在一行 * 像下面 *,因为你失去可读性。
monwx1rj3#
您应该在一个集中构建唯一值的集合。最后对集合进行排序,根据需要给出输出
o4tp2gmn4#
老实说,过度复杂化是最好的方法,真的很快就迷路了。
这也将打印99,因为它也试图找到128的其余部分,但这可能是一个有趣的挑战,如果你想学习d: