Python如何将现有月份天数查询代码改写为使用函数实现的形式?
函数改写方案
你可以将「根据月份名称匹配对应天数」的核心逻辑封装为独立函数,和原代码逻辑完全一致的改写版本如下:
def get_month_days(month_name): # 定义不同天数对应的月份列表 thirty_days = ['April','June','September','November'] thirty_one_days = ['January','March','July','August','October','December'] if month_name in thirty_days: return '30' elif month_name in thirty_one_days: return '31' elif month_name == 'February': return '28 or 29' else: return '输入的月份名称无效' # 程序执行入口 if __name__ == '__main__': input_month = input('What month is it? ') days = get_month_days(input_month) print(f'Number of days: {days}')
可选优化点
- 增加输入容错处理:用户输入的大小写不规范也能正常识别,只需要修改输入获取的代码为
input_month = input('What month is it? ').strip().capitalize() - 用字典替代列表做匹配,查找效率更高,代码也更简洁,改写后的函数如下:
def get_month_days(month_name): month_map = { 'April': '30', 'June': '30', 'September': '30', 'November': '30', 'January': '31', 'March': '31', 'July': '31', 'August': '31', 'October': '31', 'December': '31', 'February': '28 or 29' } return month_map.get(month_name, '输入的月份名称无效')
- 如果后续需要扩展闰年判断逻辑,可以再单独封装一个
is_leap_year函数,输入年份返回是否为闰年,就可以精准返回二月的实际天数。
内容的提问来源于stack exchange,提问作者user17203516
相关产品推荐
相关产品推荐

