Попытка напечатать значения словаря в python - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь написать простую программу, которая запрашивает ввод первой буквы любимого цвета радуги (ROYGBIV) и печатает значение данной буквы.Например, если пользователь вводит «R», программа выведет «Red».Я пытался использовать словари, но я не мог заставить его работать.Не могли бы вы помочь мне исправить мои ошибки?

def rainbow():

    color = {
        "R", "Red"
        "O", "Orange"
        "Y", "Yellow"
        "G", "Green"
        "B", "Blue"
        "I", "Indigo"
        "V", "Violet"
        }

    userint = input("Enter first letter of fav color: ").upper()

    if userint in color:
        print color.get(userint,"none")

    else:
        print("no match")



rainbow()`

1 Ответ

0 голосов
/ 26 апреля 2018

Как вы понимаете, color в настоящее время представляет собой Python set , который выглядит следующим образом:

{'BlueI', 'GreenB', 'IndigoV', 'OrangeY', 'R', 'RedO', 'Violet', 'YellowG'}

Синтаксис для создания словаря нуждается в двоеточиях, не запятые, для пар ключ / значение:

Словари можно создать, поместив разделенный запятыми список пар ключ: значение в фигурных скобках, например: {'jack': 4098, 'sjoerd': 4127} or {4098: 'jack', 4127: 'sjoerd'} или dict() constructor.

В вашем случае это будет:

color = {
    "R": "Red",
    "O": "Orange",
    "Y": "Yellow",
    "G": "Green",
    "B": "Blue",
    "I": "Indigo",
    "V": "Violet"
    }

В качестве альтернативы, вы можете использовать словарное понимание:

color = {c[0]: c for c in 
         {'Red', 'Orange', 'Yellow', 'Green', 'Blue', 'Indigo', 'Violet'}}

Наконец, есливам интересно, почему «зеленый» и «B» (среди прочих) смешаны вместе, то есть из-за конкатенации строкового литерала в Python .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...