Я только начал изучать основы Python в колледже, и во время задания, которое мне поручили, меня попросили написать код для печати первых 3 значений в моем списке с использованием цикла while. Мой список содержит 5 значений, которые являются строками.
Поскольку я новичок в Python, и это моя первая задача с использованием списков, я много возился с кодом, редактируя его, чтобы увидеть, будет ли это иметь значение (которое не имело значения, кроме создания ошибок или печати половины желаемого вывода ).
Одна вещь, которую я пробовал, заключалась в следующем:
while shopping_list == [0:4]
print (shopping_list[0:3]
Это только что создало бесконечный цикл печати первых 3 значений.
Так что пока оставил так:
print (shopping_list[0:3])
но это должно быть в цикле while
shopping_list == [0:4]
- это выражение, которое вызывает синтаксическую ошибку, оно никогда не выполнялось, в отличие от того, что вы предложили. То, что вы пытаетесь сделать, это следовать шаблону петли for
— подумайте, как работает while
. Он продолжает работать, пока выполняется определенное условие True
. Итак, в каком состоянии вам нужно быть True
, пока вы не закончите бегать?
@Grismar Это просто показывает, насколько я новичок в python. Как я уже упоминал, я изменил код на что-то другое, поэтому он не записан передо мной прямо сейчас, и, поскольку я новичок в python, я сделал ошибку, пытаясь вспомнить навскидку то, что я ранее написал. Возможно, это был только один " = ". Спасибо за отзыв о циклах while.
@Julien Да, мы кратко рассмотрели основы циклов while и списков в классе, но мы не обсуждали, как печатать определенные значения из списка, а только все или одно из них. Также я знаю, что Интернет полезен в этом отношении, и именно поэтому я пришел сюда после того, как мой лектор указал мне направление этого сайта для поиска ответов.
Для решения цикла 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, потому что я согласен, что это не лучший способ выполнить эту задачу.
С такими заданиями цель состоит не в том, чтобы узнать, «как лучше всего выполнить эту задачу», а в том, чтобы узнать, «как работает ключевая конструкция языка» — если вы «не понимаете какой-либо код [который был] предоставлен», вы не получите никакой пользы от этого упражнения, и, упустив ключевые части обучения программированию в начале, вы будете в убытке в дальнейшем. Постарайтесь полностью понять первый пример, опубликованный @paxdiablo, иначе у вас будут серьезные проблемы на следующих занятиях.
@stobbartaidan: есть причина, по которой «лучший способ» был просто добавлен как дополнение, а не как настоящий ответ. Это потому, что вы должны следовать спецификациям, данным вам в задании. Если преподаватель сказал вам использовать while
, вы должны это сделать, поскольку для этого почти наверняка есть веская причина (например, они пытаются научить вас программировать в целом, а не на Python).
Также см. комментарий @Grismar. В свете понимания первого блока кода (как они предполагают) я добавил к нему комментарии, которые, надеюсь, помогут.
Спасибо за ваш отзыв! Я ценю добавленные комментарии к коду, чтобы помочь мне лучше понять его, это действительно помогает. Я просто не думаю, что мой лектор хотел, чтобы я выполнил задание таким образом, потому что он никогда ничего не говорил об индексах, и обычно он ставит задачи, исходя из того, что он показал нам на занятиях. Но я уверен, что смогу обсудить, как он хотел бы, чтобы задание было выполнено, когда я отправлю задание.
Если вы учитесь в колледже, я уверен, что у вас есть конспекты занятий или учебники, на которые можно ссылаться. Если нет, то Интернет наводнен учебными пособиями, чтобы изучить основы в любом случае.