Конвертировать Python для цикла в цикл while со счетчиком

1

У меня есть назначение для класса 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, а не точно такая же серия чисел. Инструкции для этого задания были написаны неправильно, и я довольно смущен этим, любая помощь очень ценится!

  • 2
    Вы пытались его отладить? Какой номер отсутствует? Что с этим происходит?
  • 0
    В дополнение к этому другому парню: PythonTutor - хороший инструмент для отслеживания выполнения коротких скриптов.
Показать ещё 1 комментарий
Теги:
loops
while-loop
counter
iteration

3 ответа

2
Лучший ответ

Вы увеличиваете значение 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 равна

  • 0
    большое спасибо! неосторожная ошибка с моей стороны. очень признателен.
  • 0
    Конечно, нет проблем! Если вам нравится ответ, вы можете пометить его как принятый ответ :)
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
0

Вам нужно увеличить 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)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню