我为python类分配了一个请求,该请求要求将for循环转换为在其中包含计数器的while循环,这样当列表达到一定长度时,它将被切断。不幸的是,作业和完成它的课程并没有真正弄清楚如何做到这一点(而且我知道在python中做很多事情并没有必要,因为这些程序通常对于仍然循环播放)。
这是原始代码:
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循环首先要做什么。.似乎给出的输出是来自每个原始列表的数字对的交替序列。
它给出的输出是(当要求打印“大”字时):
[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]
由于某种原因,当它应该是7时,它只有6个数字,也不是完全相同的数字系列。.此作业的说明写得不好,对此我感到很困惑,任何帮助都是非常感激!
答案 0 :(得分:2)
您将在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的长度相等的假设
答案 1 :(得分:0)
在循环中使用当前值的语句完成后,您需要递增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)
答案 2 :(得分:0)
使用手动计数器
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