Как проверить, есть ли в словаре несколько пользовательских вводов (разделенных запятыми)? - PullRequest
0 голосов
/ 26 мая 2019

Я новичок в python (3.7) и пытаюсь собрать до 3 строк в одном вводе, разделенном запятыми, и проверить, существуют ли они в словаре.Если какой-либо из строк не существует, мне нужно распечатать, какая это строка, и снова запросить ввод пользователя.Входные данные должны принимать строки без учета регистра, в то время как словарь содержит ключи с первой буквой в верхнем регистре, названия стран, в то время как в некоторых названиях стран есть два слова.

Сначала я попытался поместить ввод в список с некоторым форматированием, например, разделить, и заменить, чтобы убрать пробел после запятой.Я пытался, но я не знаю, как обернуть это в то время как истинный цикл с try catch, чтобы иметь проверку пользовательского ввода, если ключ не существует в словаре.

У меня есть функция, которая преобразует пользовательский ввод в формат моего словарного ключа.например, Австралия

Функция

def case_insensitive(user_list):
    new_list = []
    for item in user_list:
        new_item = item.title()
        new_list.append(new_item)
    return new_list

Как уже упоминалось, я новичок в python, так что, вероятно, это можно сделать лучше.

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

Проверка ввода пользователя

while True:
    try:
        user_countries = input('Write up to three comma-separated countries for which you want to'
                               '\nextract data: ').replace(", ", ",").split(',')

        countries = case_insensitive(user_countries)

    except:
        pass

    if len(countries) > 3:
        print('ERR: Sorry, at most 3 countries can be entered.\n')

    elif not set(countries).issubset(emissions_data):
        for country in set(countries):
            if country not in set(emissions_data):
                print('ERR: Sorry \"{}\" is not a valid country.\n'.format(country))
    else:
        break

Здесь оператор except не делает ничего или лучшеничего не говорят.Любые предложения и комментарии приветствуются.

...