Выводит массив и останавливается, когда находит указанную строку с для l oop in python - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь использовать l oop для печати закусок, пока не найдет fsnack.

snack = ['tomatos', 'lettuce', 'candles', 'books', 'cables', 'oreo', 'banana']
fsnack = 'oreo'

for number, letter in enumerate(snack, 1):
    print (number, letter)
    if(snack == fsnack):
        break

Это упражнение, которое я пытаюсь выполнить:

this is the exercise I'm trying to do

это мой первый пост здесь !!

Ответы [ 4 ]

1 голос
/ 25 февраля 2020

Вместо сравнения fsnack с snack (который является списком) необходимо сравнить его с letter (который представляет собой значение списка):

snack = ['tomatos', 'lettuce', 'candles', 'books', 'cables', 'oreo', 'banana']
fsnack = 'oreo'

for number, letter in enumerate(snack, 1):
    print (number, letter)
    if(letter == fsnack):
        break

Вывод:

1 tomatos
2 lettuce
3 candles
4 books
5 cables
6 oreo
0 голосов
/ 25 февраля 2020

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

found = False 
for i,name in enumerate(snack,1):
    if not found:
        print(i,name)
        found = name == fsnack
if not found:
    print(fsnack,"not found!")
0 голосов
/ 25 февраля 2020

Вы можете использовать while l oop, чтобы сделать это без перерыва.

Или, если вам нужно использовать for l oop, вы можете установить флаг как fsnack_found == True как только вы нашли fsnack и просто ничего не печатали потом с помощью простой логики c.

И, конечно, сравните letter с fsnack, а не snack с fsnack:)

0 голосов
/ 25 февраля 2020
snacks = ['tomatos', 'lettuce', 'candles', 'books', 'cables', 'oreo', 'banana']
fsnack = 'oreo'

for index, snack in enumerate(snacks):

   print("{}, {}".format(index, snack))
   if(snack == fsnack): break

Задание также спрашивает, можете ли вы сделать это без перерыва. Это возможное решение:

try:
    fsnack_index = snacks.index('oreo')
    for i in range(0, fsnack_index+1):
       print("{}, {}".format(i, snacks[i]))
except ValueError:
    print("No oreos")

Мы используем функцию индекса, собственную для python, которая ищет местоположение индекса вашей закуски.

Затем мы можем использовать стандартный диапазон для l oop и просто распечатывать до появления oreo. Причина, по которой мы добавляем +1 к индексу, заключается в том, что верхняя граница диапазона для l oop является исключительной, а не включающей. Поэтому мы добавляем +1, чтобы удостовериться, что мы печатаем наш oreo.

...