我有一个python类的赋值,它要求将一个for循环转换为一个包含计数器的while循环,这样当列表达到一定长度时,它就会被截断。不幸的是,作业和之前的课程并没有明确说明如何做到这一点(而且我知道在python中并不需要做很多事情,因为这类程序通常更适合for循环)。
以下是原始代码:
a = [7,12,9,14,15,18,12]
b = [9,14,8,3,15,17,15]
big = [ ]
for i in range ( len (a)):
big.append ( max (a [i], b [i] ))
我也不是很确定这个for循环一开始是做什么的。似乎给出的输出是来自每个原始列表的一系列交替的数字对。
它给出的输出(当被要求打印‘big’时)是:
[9, 14, 9, 14, 15, 18, 15]
我最接近于解决这个问题并将其转换为while循环是这样的:
a = [7,12,9,14,15,18,12]
b = [9,14,8,3,15,17,15]
big = [ ]
i = 0
while i <= 8:
i += 1
big.append ( max (a [i], b [i] ))
print(big)
然而,它的最终输出实际上是:
[14, 9, 14, 15, 18, 15]
由于某种原因,它只有6个数字,而它应该是7,而且也不是完全相同的数字序列。这个作业的说明写得不好,我对此很困惑,任何帮助都是非常感谢的!
发布于 2018-07-27 06:36:54
您将在while循环开始时递增i
的值。在末尾递增它。您正在跳过第一个。此外,您还需要检查您的循环保护。列表中只有7个元素。我会将其更改为i < len(a)
。像这样的东西
while i < len(a):
big.append ( max (a [i], b [i] ))
i += 1
print(big)
[9, 14, 9, 14, 15, 18, 15]
这取决于a和b的长度相等的消耗。
发布于 2018-07-27 06:38:56
在循环中使用当前值的语句完成后,您需要递增i
。
另外,我将继续在while语句中使用len()
,如下所示:
a = [7,12,9,14,15,18,12]
b = [9,14,8,3,15,17,15]
big = [ ]
i = 0
while i < len(a):
big.append ( max (a [i], b [i] ))
i += 1
print(big)
发布于 2018-07-27 06:39:08
使用手动计数器
a = [7,12,9,14,15,18,12]
b = [9,14,8,3,15,17,15]
big = [ ]
i = 0
while i < len(a):
big.append ( max (a [i], b [i] ))
i+=1
https://stackoverflow.com/questions/51548364
复制相似问题