Вопросы по циклу while

#python #loops #for-loop #while-loop

#python #петли #for-цикл #цикл while

Вопрос:

Привет, я новичок в Python, и у меня здесь этот вопрос.

Напишите цикл while для отображения значений рейтинга списка воспроизведения альбома, хранящегося в списке PlayListRatings. Если набранный балл меньше 6, выйдите из цикла. Список PlayListRatings приведен по: PlayListRatings = [10, 9.5, 10, 8, 7.5, 5, 10, 10]


Мой ответ таков:

 PlayListRatings = [10,9.5,10,8,7.5,5,10,10]

i = 0

while PlayListRating[i] >= 6:

    i = i   1

print(PlayListRatings)
 

Предлагаемый ответ таков:

 PlayListRatings = [10, 9.5, 10, 8, 7.5, 5, 10, 10]

i = 1

Rating = PlayListRatings[0]

while Rating >= 6:

    print(Rating)

    Rating = PlayListRatings[i]

    i = i   1
 

Есть несколько вещей, которые приводят меня в замешательство:

  1. Почему в этом случае i = 1, а не i = 0? Я думал, что i относится к индексу 10 и, следовательно, должно быть i = 0?
  2. Почему я должен создавать новую переменную, а именно Рейтинг?
  3. Почему я должен добавлять предпоследнюю строку предлагаемого ответа, т.е. Rating = PlayListRatings [i]? Я не мог выполнить код без этой строки

Ответ №1:

  1. Поскольку вы уже выводите первый элемент массива (с индексом 0) за пределы цикла, используя:

    Rating = PlayListRatings[0]

Таким образом, цикл будет продолжаться со второго индекса (i = 1).

  1. Переменная Rating является только указателем на элементы массива. Вам не обязательно его использовать, вы можете заменить его непосредственно на PlayListRatings[i]
  2. Поскольку условие цикла while зависит от значения Rating , если вы не обновляете значение Rating , условие внутри while() будет оставаться неизменным на каждой итерации, и в этом случае since Rating принимает значение 10 в первый раз (поскольку 10 является первым элементом массива), это приведет к бесконечному циклу, если значение Rating не обновляется, что происходит с помощью Rating = PlayListRatings[i]

Ответ №2:

Попробуйте следующий код:

 PlayListRatings = [10, 9.5, 10, 8, 7.5, 5, 10, 10]
i = 0
N = len(PlayListRatings)
Rating = PlayListRatings[0]
while(i < N and Rating > 6):
     Rating = PlayListRatings[i]
     i = i   1
     print(Rating)