当前位置: 首页 > news >正文

python题库 No.30 今日何日兮

今日何日兮?阿珍想要知道某年某月某日是这一年的第几天,给出了月份和月份对应天数的字典。
请定义函数calDay(),传入参数年月日year,month,day。
1.判断是否为闰年,若是,则将2月日期改为29;
2.判断年份格式是否正确,正确格式为4位数年份,若不在4位数年份范围,则输出"输入的年份格式错误!";
3.判断月份格式是否正确,月份格式为1-12月,若不在范围内,输出"输入的月份格式错误!";
4.判断日是否在对应月份日的范围内,如4月,若输入的是31,则输出"输入的日格式错误!";
最后计算出2021年的5月20日是这一年的第几天,调用函数并输出结果"2021年5月20日是这一年的第xx天!"。

d = {1:31, 2:28, 3:31, 4:30, 5:31, 6:30, 7:31, 8:31, 9:30, 10:31, 11:30, 12:31}

实际答案:

d = {1:31, 2:28, 3:31, 4:30, 5:31, 6:30, 7:31, 8:31, 9:30, 10:31, 11:30, 12:31}def calDay(year, month, day):d = {1:31, 2:28, 3:31, 4:30, 5:31, 6:30, 7:31, 8:31, 9:30, 10:31, 11:30, 12:31}if (year % 4 == 0) & (year % 100 != 0):d[2] = 29else:d[2] = 28if (year < 1000) | (year > 9999):print("输入的年份格式错误!")if (month < 1) | (month > 12):print("输入的月份格式错误!") if (day > d[month]):print("输入的日格式错误!")  num_day = 0for i in range(month):if i == 0:continuenum_day = num_day + d[i]num_day = num_day + dayprint(f"{year}年{month}月{day}日是这一年的第{num_day}天!")calDay(2021, 5, 20)

参考答案:
image

点评:
遇到了局部变量和全局变量的问题,
比如:

#为什么输出的是1呢?我想要的是根据条件输出:
a = 1def calDay(h):if h > 5:a = 2else:a = 3calDay(3)  
print(a)

想要在函数里面更改全部变量,需要加上关键字global来声明;

a = 1def calDay(h):global a  # 🎯 关键:告诉Python"我要修改全局变量a"if h > 5:a = 2else:a = 3calDay(3)
print(a)  # 现在输出:3 ✅

或者方案二:使用返回值return,好处是更方便、更清晰:

def calDay(h):if h > 5:return 2else:return 3a = calDay(3)  # 🎯 通过返回值重新赋值
print(a)  # 输出:3 ✅

而在标准答案中:
可以直接修改!
原因:
字典和列表是特例,可以直接在函数内部进行增加、修改等操作。
但是不能重新赋值,否则视为重新定义了一个局部变量。

# 列表示例 - 可以直接修改!
my_list = [1, 2, 3]def modify_list():my_list.append(4)  # ✅ 可以直接修改,不需要globalmy_list[0] = 99    # ✅ 可以直接修改元素modify_list()
print(my_list)  # 输出:[99, 2, 3, 4]# 但是重新赋值就不行:
def reassign_list():my_list = [5, 6, 7]  # ❌ 这会创建新的局部变量reassign_list()
print(my_list)  # 输出:[99, 2, 3, 4](没变!)
http://www.jsqmd.com/news/120050/

相关文章:

  • AI Agent的概念形成:模拟LLM的抽象思维过程
  • AI Agent的概念形成:模拟LLM的抽象思维过程
  • 【读书笔记】《中国文化要义》
  • 04 Linux用户和权限管理
  • 云底座 amp; 性能优化 90 天技术提升落地清单
  • 【读书笔记】《苏格拉底的申辩》
  • YOLOv11改进 - C3k2融合 | C3k2融合CBSA 收缩 - 广播自注意力:轻量级设计实现高效特征压缩,优化处理效率 | NeurIPS 2025
  • 鸿蒙破晓:一场技术与人才突围的生态远征
  • 2025年度苏州十大建站企业综合实力排行榜出炉,引领官网建设新标准 - 五色鹿五色鹿
  • 高中语法练习解析100篇-001 - new
  • 智慧铁路之受电弓接触点识别 铁路输电线路鸟巢识别 铁路异物入侵巡检识别 铁路风筝识别 列车绝缘子检测 轨道交通场景下异物识别 户外线缆及附属部件的智能监测 10325期
  • 【全球AI伦理治理】
  • 探索单相MMC:从整流到均衡控制的技术之旅
  • springboot购物推荐网站的设计与实现(11541)
  • 链动2+1模式AI智能名片S2B2C商城小程序中电商直播的应用机制与价值创新研究
  • 4.常用数据结构和单线程模型理解
  • AI原生开发范式
  • 别慌!AI淘汰的不是人,是不会用AI的人
  • 多智能体协同系统
  • 毕业季必看!7款免费AI写论文神器实测,一站式搞定选题、大纲到降重
  • 【人工智能AI安全与对齐】
  • linux pkill命令的坑
  • ret2syscall及mprotect的利用姿势
  • C++按索引同时删除vector中的多个元素
  • 生成式视频技术商业化加速
  • 三星最新款手机推荐:Galaxy Z TriFold三折叠形态的体验革命
  • 用 .NET MAUI 10 + VS Copilot 从 0 开发一个签到 App(二)
  • 三折叠手机推荐哪个品牌?三星Galaxy Z TriFold用创新重新定义旗舰体验
  • 你的数据管家:访答本地知识库
  • 云底座管理与操作系统性能质量保证技术升华