сокращения и словари - PullRequest
0 голосов
/ 08 марта 2011

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

def abr():
    abr = input("Enter a day abbreviation:")
    days = {Su: Sunday, Mo: Monday, Tu: Tuesday, We:Wenesday, Th: Thursday, Fr: Friday, Sa: Saturday, Su: Sunday}
    if days in abr:
        return days['']

Я пытался решить эту проблему с помощью словаря, но я не слишком знаком со словарями и их ограничениями.

Ответы [ 3 ]

3 голосов
/ 08 марта 2011

Кодзиро верно. Вы должны отменить ваше условие для

if abr in days:
    return days[abr]

Не забудьте использовать строку для словарных ключей и значений, поскольку пользовательский ввод будет возвращен в виде строки, которую вы будете использовать в качестве ключа.

Вы также должны использовать raw_input, поскольку input фактически эквивалентно eval , который потребует от пользователя ввода "Tu" вместо Tu.

Что касается цикла, вы можете использовать цикл while и выйти, когда обнаружите недопустимое сокращение

def abr():
    abr = raw_input("Enter a day abbreviation:")
    days = {"Su": "Sunday", 
            "Mo": "Monday", 
            "Tu": "Tuesday", 
            "We": "Wednesday", 
            "Th": "Thursday", 
            "Fr": "Friday", 
            "Sa": "Saturday", 
            "Su": "Sunday"}
    if abr in days:
        return days[abr]
    return None


while(1):
    day = abr()
    if day is not None:
        print day
    else:
        break
2 голосов
/ 08 марта 2011

Вы были не слишком далеко, вы только что отменили заказ.Да, и эти ключи и значения словаря должны быть строками.

def abr():
    """Return the day given a two-letter abbreviation."""
    # Don't use the function name as a variable in the function.
    # It's just not good practice.
    abbrev = input("Enter a day abbreviation:") 
    days = {
        "Su": "Sunday",
        "Mo": "Monday",
        "Tu": "Tuesday",
        "We": "Wednesday", # [Spelling fixed]
        "Th": "Thursday",
        "Fr": "Friday",
        "Sa": "Saturday",
    } # Extra Sunday removed

    return days.get(abbrev, '')

Чтобы поведение цикла происходило таким образом, чтобы оно продолжалось до тех пор, пока они не достигли недопустимого сокращения, вызовите функцию в цикле:

while True:
    if abr() == "":
        break

или немного короче:

while abr() != "":
    pass
0 голосов
/ 02 декабря 2016

current_designation_upper = Transformed_Data.designation.tolist () [i] .upper () current_designation_upper_array = re.split ("[-.!@#$%^&* () _ + = ~`: <>, / '|} {[] |]», current_designation_upper) role_current_designation_null_removed = [х для х в current_designation_upper_array, если х] current_designation_upper_array_with_abbrevation = '' для к в диапазоне (0, длина (role_current_designation_null_removed)): temp_current_designation_upper_array_with_abbrevation = current_designation_upper_array_with_abbrevation + role_current_designation_null_removed [к] [0]

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