Python代码运行结果异常,寻求问题排查及代码整洁优化建议
问题修复方案
核心错误原因
你代码的逻辑失效根源是elif Today == Days[0:5]的写法错误:Days[0:5]是列表切片操作,返回的是包含周一到周五的子列表,单个字符串和列表做相等判断,结果永远为False,所以工作日的分支永远无法触发。
修正后的可运行代码
# 遵循PEP8命名规范,变量用小写加下划线 days = ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'] SHOPPING_THRESHOLD = 2000 # 输入时增加空格清理、大小写格式化,提升容错率 cash = int(input('Cash = ')) today = input('Today is: ').strip().capitalize() # 先判断输入合法性,逻辑层级更清晰 if today not in days: print('Today is not in Days') elif today == days[6]: # 周日分支 if cash > SHOPPING_THRESHOLD: print('Omg, let\'s go shopping!') else: print('Get some rest and watch TV.') else: # 工作日分支 print('Work hard until you die.')
代码整洁优化建议
- 变量命名遵循Python通用的PEP8规范:普通变量用小写加下划线格式,常量全大写,只有类名使用大驼峰格式,避免和内置对象、语法规则混淆
- 把代码里的硬编码魔法值(比如2000的购物阈值)提取成常量,后续修改参数时不用翻找逻辑代码
- 输入环节增加容错处理:比如现金输入时可以捕获非数字输入的异常,星期输入增加大小写、前后空格的兼容处理,避免用户输入不规范直接报错
- 调整条件判断的优先级,先做输入合法性校验,再走业务分支,逻辑层级更清晰,可读性更高
- 输出的字符串统一格式,增加必要的标点和大小写规范,用户体验更好
内容的提问来源于stack exchange,提问作者Ehsan Salehabadi
相关产品推荐
相关产品推荐

