Почему я получу только правильный возврат для индекса 0 - PullRequest
0 голосов
/ 29 июня 2019

Я работаю над проблемой, которая берет список цветов краски и заставляет пользователя вводить имя цвета.Если они совпадают, то это говорит, что цвет найден в списке;в противном случае он говорит, что он не найден.Если для пользовательского ввода я использую первое значение в списке, оно говорит мне, что оно найдено;однако для всех остальных цветов он выдает сообщение «not found».

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

paint_colors = ['black', 'blue', 'green', 'white', 'yellow']
color_request = input("Enter color name: ")
for color in paint_colors:
    if color_request.lower() == color:
        print("Color exists in list!")
        break
    else:
        print("Color is not in the list!")
        break

Я ожидаю, что, введя слово White или white в поле ввода, оно сообщит мне, что оно было найдено, но единственный способ вернуть его найденный -Я положил в черном.

Ответы [ 3 ]

1 голос
/ 29 июня 2019

Второй break является избыточным, потому что, когда цвет не соответствует первому индексу, вы преждевременно прерываете цикл:

paint_colors = ['black', 'blue', 'green', 'white', 'yellow']
color_request = input("Enter color name: ")
for color in paint_colors:
    if color_request.lower() == color:
        print("Color exists in list!")
        break
else:
    print("Color is not in the list!")
0 голосов
/ 29 июня 2019

Ваш второй оператор break вызывает проблему. Вы можете попробовать это:

paint_colors = ['black', 'blue', 'green', 'white', 'yellow']
color_request = input("Enter color name: ")
for color in paint_colors:
    if color_request.lower() == color:
        print("Color exists in list!")
        break
else:
    print("Color is not in the list!")

Использование еще одной переменной по-другому:

paint_colors = ['black', 'blue', 'green', 'white', 'yellow']
color_request = input("Enter color name: ")
found = 0
for color in paint_colors:
    if color_request.lower() == color:
        found = 1
        break
if found:
    print("Color exists in list!")
else:
    print("Color is not in the list!")

Использование оператора in:

paint_colors = ['black', 'blue', 'green', 'white', 'yellow']
color_request = input("Enter color name: ")

if color_request in paint_colors:
    print("Color exists in list!")
else:
    print("Color is not in the list!")
0 голосов
/ 29 июня 2019

Мы можем установить флаг colour_found, который отслеживает, нашли ли мы цвет в списке или нет.Если мы нашли цвет, то можем выйти из цикла.

paint_colors = ['black', 'blue', 'green', 'white', 'yellow']
color_request = input("Enter color name: ")
colour_found = False
for color in paint_colors:
    if color_request.lower() == color:
        colour_found = True
        break



if colour_found:
    print("Color exists in list!")
else:
    print("Color is not in the list!")
...