У меня есть назначение для класса python, который просит преобразовать цикл for в цикл while, содержащий в нем счетчик, так что он отключится, когда список достигнет определенной длины. К сожалению, назначение и уроки, приведшие к этому, на самом деле не дали понять, как это сделать (и я знаю, что на самом деле не нужно много делать на питоне, поскольку такие программы, как правило, лучше для циклы в любом случае).
Вот исходный код:
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] ))
Я также не совсем уверен, что это делает цикл для начала. Кажется, что вывод, который задан, представляет собой чередующуюся серию пар чисел из каждого из этих исходных списков.
Вывод, который он дает, (при запросе на печать "большой"):
[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, а не точно такая же серия чисел. Инструкции для этого задания были написаны неправильно, и я довольно смущен этим, любая помощь очень ценится!
Вы увеличиваете значение i
в начале цикла while. Увеличьте его в конце. Вы пропускаете первый. Также вам нужно проверить охрану цикла. В списке всего 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 равна
Используйте ручной счетчик
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
Вам нужно увеличить i
после того, как закончились инструкции, использующие текущее значение цикла.
Кроме того, я бы продолжал использовать len()
в инструкции while так:
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)