Как вы печатаете выбранные значения из списка, используя цикл while

Я только начал изучать основы Python в колледже, и во время задания, которое мне поручили, меня попросили написать код для печати первых 3 значений в моем списке с использованием цикла while. Мой список содержит 5 значений, которые являются строками.

Поскольку я новичок в Python, и это моя первая задача с использованием списков, я много возился с кодом, редактируя его, чтобы увидеть, будет ли это иметь значение (которое не имело значения, кроме создания ошибок или печати половины желаемого вывода ).

Одна вещь, которую я пробовал, заключалась в следующем:

while shopping_list == [0:4]
  print (shopping_list[0:3]

Это только что создало бесконечный цикл печати первых 3 значений.

Так что пока оставил так:

print (shopping_list[0:3])

но это должно быть в цикле while

Если вы учитесь в колледже, я уверен, что у вас есть конспекты занятий или учебники, на которые можно ссылаться. Если нет, то Интернет наводнен учебными пособиями, чтобы изучить основы в любом случае.

Julien 14.12.2020 06:34
shopping_list == [0:4] - это выражение, которое вызывает синтаксическую ошибку, оно никогда не выполнялось, в отличие от того, что вы предложили. То, что вы пытаетесь сделать, это следовать шаблону петли for — подумайте, как работает while. Он продолжает работать, пока выполняется определенное условие True. Итак, в каком состоянии вам нужно быть True, пока вы не закончите бегать?
Grismar 14.12.2020 06:34

@Grismar Это просто показывает, насколько я новичок в python. Как я уже упоминал, я изменил код на что-то другое, поэтому он не записан передо мной прямо сейчас, и, поскольку я новичок в python, я сделал ошибку, пытаясь вспомнить навскидку то, что я ранее написал. Возможно, это был только один " = ". Спасибо за отзыв о циклах while.

stobbart aidan 14.12.2020 06:52

@Julien Да, мы кратко рассмотрели основы циклов while и списков в классе, но мы не обсуждали, как печатать определенные значения из списка, а только все или одно из них. Также я знаю, что Интернет полезен в этом отношении, и именно поэтому я пришел сюда после того, как мой лектор указал мне направление этого сайта для поиска ответов.

stobbart aidan 14.12.2020 07:00
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
3
4
803
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Для решения цикла while вы можете сделать это примерно так:

use_len = min(3, len(shopping_list)) # In case list has less than three.
idx = 0                              # Starting index.
while idx < use_len:                 # For up to three indexes:
    print(shopping_list[idx])        #   Print item at that index.
    idx += 1                         #   Move to next index.

Это ограничивает количество циклов вперед, если список покупок короче трех пунктов. Кроме того, вы можете проверить каждый элемент, чтобы увидеть, существует ли он в списке:

idx = 0                              # Starting index.
while idx < 3:                       # For exactly three indexes:
    if idx < len(shopping_list):     #   If that index exists:
        print(shopping_list[idx])    #     Print it.
    idx += 1                         #   Regardless, move to next index.

Другой возможностью было бы сделать копию (до) первых трех элементов, а затем распечатать каждый из них, удалив его впоследствии. Это было бы что-то вроде:

short_list = shopping_list[:3]   # Max of three in new list.
while len(short_list) > 0:       # While list not empty:
    print(short_list[0])         #   Print first in list.
    short_list = short_list[1:]  #   Then remove it.

Это не самый эффективный код, но он работает.


Ни один из них не является тем, как я бы решил выполнить эту задачу, если бы не было требования к циклу while, поскольку Python предоставляет гораздо более выразительные способы. Но, если вам нужно использовать while, это, вероятно, самые простые способы.

С точки зрения этих более выразительных способов (без использования while по мере необходимости, поэтому просто предоставлено здесь в качестве дополнительной информации), я бы, вероятно, выбрал что-то вроде:

for item in shopping_list[:3]:
    print(item)

Или, как только вы изучите темные стороны Python:

print("\n".join(shopping_list[:3]))

Последнее, кстати, не является серьезным предложением, хотя оно работает, если предположить, что ваш список покупок состоит из строковых значений. Но кто в наше время ходит по магазинам за такими вещами, как 42 или 1.414? :-)

спасибо за вашу помощь, это очень ценится. Честно говоря, я не понимаю ни одного кода, который вы предоставили, но он работает отлично. Также я отправлю сообщение моему лектору и посмотрю, не передумает ли он использовать для этого цикл while, потому что я согласен, что это не лучший способ выполнить эту задачу.

stobbart aidan 14.12.2020 06:56

С такими заданиями цель состоит не в том, чтобы узнать, «как лучше всего выполнить эту задачу», а в том, чтобы узнать, «как работает ключевая конструкция языка» — если вы «не понимаете какой-либо код [который был] предоставлен», вы не получите никакой пользы от этого упражнения, и, упустив ключевые части обучения программированию в начале, вы будете в убытке в дальнейшем. Постарайтесь полностью понять первый пример, опубликованный @paxdiablo, иначе у вас будут серьезные проблемы на следующих занятиях.

Grismar 14.12.2020 07:02

@stobbartaidan: есть причина, по которой «лучший способ» был просто добавлен как дополнение, а не как настоящий ответ. Это потому, что вы должны следовать спецификациям, данным вам в задании. Если преподаватель сказал вам использовать while, вы должны это сделать, поскольку для этого почти наверняка есть веская причина (например, они пытаются научить вас программировать в целом, а не на Python).

paxdiablo 14.12.2020 07:10

Также см. комментарий @Grismar. В свете понимания первого блока кода (как они предполагают) я добавил к нему комментарии, которые, надеюсь, помогут.

paxdiablo 14.12.2020 07:13

Спасибо за ваш отзыв! Я ценю добавленные комментарии к коду, чтобы помочь мне лучше понять его, это действительно помогает. Я просто не думаю, что мой лектор хотел, чтобы я выполнил задание таким образом, потому что он никогда ничего не говорил об индексах, и обычно он ставит задачи, исходя из того, что он показал нам на занятиях. Но я уверен, что смогу обсудить, как он хотел бы, чтобы задание было выполнено, когда я отправлю задание.

stobbart aidan 14.12.2020 08:03

Другие вопросы по теме