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

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

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 в поле ввода, оно сообщит мне, что оно было найдено, но единственный способ вернуть его найденный - это вставить черный цвет.

0
Lee Baldwin 29 Июн 2019 в 21:14

3 ответа

Лучший ответ

Ваше второе 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
Taohidul Islam 29 Июн 2019 в 18:23

Мы можем установить флаг 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!")
0
Asnim P Ansari 29 Июн 2019 в 18:19

Второй 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!")
1
Andrej Kesely 29 Июн 2019 в 18:18