Python 循环迭代次数有限
我知道这样的问题已经被问过无数次了,但我发现在这种情况下似乎什么都不起作用。如何使此代码每运行一次Python 循环迭代次数有限,python,loops,Python,Loops,我知道这样的问题已经被问过无数次了,但我发现在这种情况下似乎什么都不起作用。如何使此代码每运行一次I?这是一个无限循环,一次又一次地打印同一个列表 如果我删除while循环,或者将append方法嵌套在for循环中,它将无法正常工作。我需要它乘以2(2,4,8,16,32等)64倍 board = [] def count(): for i in range(1,65): while i: i = (i)*2 board.a
I
?这是一个无限循环,一次又一次地打印同一个列表
如果我删除while
循环,或者将append
方法嵌套在for
循环中,它将无法正常工作。我需要它乘以2(2,4,8,16,32等)64倍
board = []
def count():
for i in range(1,65):
while i:
i = (i)*2
board.append(i)
if i in board is True:
break
print(board)
count()
下面是对代码的最简单修改。实际上,用Python可以实现更简单的操作(例如
board=[2**i for i in range(1,65)]
)。我只是想说明需要从您的代码中删除哪些内容,以使其实现您希望它实现的功能(据我所知):
。事实证明,这是一个无限循环,因为如果我在板中为真
总是为假(请参阅)。因此,您正在运行一个无限循环。我认为您实际上是打算在第一次迭代后,while
-循环中断,然后您应该将条件修改为if I in board
或if(I in board)为True
两者都始终为True=>不需要循环
i
是否在板中,因为在上一条语句中,您将其附加到板中,以便您确定i
在板中
i=(i)*2
。不建议修改循环的变量(因此我引入了j
)。例如,如果我保留您的代码I=I*2
,那么I
将在下一次迭代时重置为循环变量的下一个值,从而忘记将I
设置为其值的两倍打印(电路板)
移出循环,否则您将获得很长的输出下面是对代码的最简单修改。实际上,用Python可以实现更简单的操作(例如
board=[2**i for i in range(1,65)]
)。我只是想说明需要从您的代码中删除哪些内容,以使其实现您希望它实现的功能(据我所知):
。事实证明,这是一个无限循环,因为如果我在板中为真
总是为假(请参阅)。因此,您正在运行一个无限循环。我认为您实际上是打算在第一次迭代后,while
-循环中断,然后您应该将条件修改为if I in board
或if(I in board)为True
两者都始终为True=>不需要循环
i
是否在板中,因为在上一条语句中,您将其附加到板中,以便您确定i
在板中
i=(i)*2
。不建议修改循环的变量(因此我引入了j
)。例如,如果我保留您的代码I=I*2
,那么I
将在下一次迭代时重置为循环变量的下一个值,从而忘记将I
设置为其值的两倍打印(电路板)
移出循环,否则您将获得很长的输出你的循环无限地运行,因为我总是正确的。尝试删除while循环和if条件。另外,引入一个新变量使其值加倍,因为我7次变为64,但您需要64个值。您的循环无限运行,因为我始终为真。尝试删除while循环和if条件。另外,引入一个新变量,使其值在7次变为64时加倍,但您需要64个值。使用您的代码作为起点,可以对其进行以下修改:
board = []
def count():
total = 1
for i in range(1,65):
total = total*2
board.append(total)
print(total) # just so you can better visualize the output
count()
它输出:
2
4
8
16
32
64
128
256
512
1024
2048
4096
8192
16384
32768
65536
131072
262144
524288
1048576
2097152
4194304
8388608
16777216
33554432
67108864
134217728
268435456
536870912
1073741824
2147483648
4294967296
8589934592
17179869184
34359738368
68719476736
137438953472
274877906944
549755813888
1099511627776
2199023255552
4398046511104
8796093022208
17592186044416
35184372088832
70368744177664
140737488355328
281474976710656
562949953421312
1125899906842624
2251799813685248
4503599627370496
9007199254740992
18014398509481984
36028797018963968
72057594037927936
144115188075855872
288230376151711744
576460752303423488
1152921504606846976
2305843009213693952
4611686018427387904
9223372036854775808
18446744073709551616
然而,一种更简单、更优雅的方法是
board=[2**i代表范围(1,65)]
,正如AGN所指出的那样。使用您的代码作为起点,可以修改如下:
board = []
def count():
total = 1
for i in range(1,65):
total = total*2
board.append(total)
print(total) # just so you can better visualize the output
count()
它输出:
2
4
8
16
32
64
128
256
512
1024
2048
4096
8192
16384
32768
65536
131072
262144
524288
1048576
2097152
4194304
8388608
16777216
33554432
67108864
134217728
268435456
536870912
1073741824
2147483648
4294967296
8589934592
17179869184
34359738368
68719476736
137438953472
274877906944
549755813888
1099511627776
2199023255552
4398046511104
8796093022208
17592186044416
35184372088832
70368744177664
140737488355328
281474976710656
562949953421312
1125899906842624
2251799813685248
4503599627370496
9007199254740992
18014398509481984
36028797018963968
72057594037927936
144115188075855872
288230376151711744
576460752303423488
1152921504606846976
2305843009213693952
4611686018427387904
9223372036854775808
18446744073709551616
然而,一种更简单、更优雅的方法是
board=[2**i代表(1,65)范围内的i]
,正如AGN所指出的那样。这段代码会让你在2**64之前拥有2s的功率。我想这就是所需要的
board = [2**i for i in list(range(1,65))]
print(board)
这个代码会给你2秒到2**64的能量,怎么样。我想这就是所需要的
board = [2**i for i in list(range(1,65))]
print(board)
修改
i
不会影响循环。循环条件不是,而我<65
@JohnGordon我更新了我的第3点以更好地解释我的想法。修改i
不会影响循环。循环条件不是,而我<65
@JohnGordon我更新了我的观点#3以更好地解释我的想法。而循环不是无限期运行的<代码>如果我在板内
始终为真=>执行中断
。如果我在板内
,中断条件不是;这是如果我在黑板上是真的
,不知何故,它是假的
。我不明白为什么。@JohnGordon捕捉得好!事实上,i在板上是真的
“是假的”,而(i在板上)是真的
是真的<代码>而
循环没有无限期运行<代码>如果我在板内始终为真=>执行中断
。如果我在板内,中断条件不是;这是如果我在黑板上是真的
,不知何故,它是假的
。我不明白为什么。@JohnGordon捕捉得好!事实上,i在板上是真的
“是假的”,而(i在板上)是真的
是真的!!!对于序列中的每个值运行一次的循环是for
循环的定义。如果删除while
语句,则此代码将按预期运行。@JohnGordon否,它将不会按预期运行,因为i
在下一个循环中被重置为范围中的下一个值
——请参见我答案中的第3点。可能是我的误解。我期待着循环