猿问

输入输入后如何重复输入?

我编写了一个函数,其中包含一个缩写的星期几到该天的全名的字典。当我输入缩写时,我得到了正确的输出日,但是为了尝试另一个缩写,我必须重新输入该函数。


我有:


def weekday()

    day = input('Enter day abbreviation ' )

    days = {'Mo':'Monday','Tu':'Tuesday',

            'we':'Wednesday', 'Th':'Thursday',

            'Fr':'Friday', 'Sa':'Saturday','Su':Sunday'}

    while day in days:

        print(days.get(day))

我的问题是,它一遍又一遍地打印全日名称,而我希望它打印全日名称,然后再次打印“输入日缩写”。


它看起来应该像这样:


>>>weekday():

Enter day abbreviation: Tu

Tuesday

Enter day abbreviation: Su

Sunday

Enter day abbreviation:

...

相反,我得到:


>>>weekday():

Enter day abbreviation: Tu

Tuesday

Tuesday

Tuesday

Tuesday

Tuesday

... # it continues without stopping

我知道这是一个非常简单的解决方案,但我无法弄清楚。


慕慕森
浏览 151回答 3
3回答

芜湖不芜

您永远不会重读“ day”,因此“ day of day”始终是正确的,并且会无休止地执行。def weekday()    day = input('Enter day abbreviation ' )    days = {'Mo':'Monday','Tu':'Tuesday',            'we':'Wednesday', 'Th':'Thursday',            'Fr':'Friday', 'Sa':'Saturday','Su':'Sunday'}    while day in days:        print(days.get(day))        day = input('Enter day abbreviation ' )

绝地无双

days = {'Mo':'Monday','Tu':'Tuesday',        'we':'Wednesday', 'Th':'Thursday',        'Fr':'Friday', 'Sa':'Saturday','Su':'Sunday'}while True:    day = input('Enter day abbreviation ' )    if day in days:        print (days[day])    else:        break输出:$ python3 so.pyEnter day abbreviation MoMondayEnter day abbreviation TuTuesdayEnter day abbreviation weWednesdayEnter day abbreviation foo另一种使用方式dict.get:days = {'Mo':'Monday','Tu':'Tuesday',        'we':'Wednesday', 'Th':'Thursday',        'Fr':'Friday', 'Sa':'Saturday','Su':'Sunday'}obj = object()                             #returns a unique objectday = input('Enter day abbreviation ' )while days.get(day,obj) != obj:    print (days[day])    day = input('Enter day abbreviation ' )

青春有我

您想在每次迭代中再次获取输入:while True:        day = input('Enter day abbreviation ' )        acquired_day = days.get(day)        if acquired_day is None: break        print(acquired_day)
随时随地看视频慕课网APP

相关分类

Python
我要回答