Python入门代码问题:无输出但返回退出码0,求优化方案
问题分析与解决方案
常见问题点
你遇到的核心问题大概率是以下情况之一:
- 性别输入大小写不匹配:比如你判断
sex == 'male',但用户输入了Male/MALE,导致条件不触发 - 年龄未做类型转换:
input()获取的是字符串,直接和数字比较(比如age > 18)永远不成立 - 缩进错误:你的
print语句没缩进在条件判断的代码块里,导致无论条件是否满足都不会执行
修正后的基础代码
# 处理输入:统一性别为小写,年龄转整数(加异常处理避免非法输入) try: sex = input("Enter your sex (male/female): ").strip().lower() age = int(input("Enter your age: ").strip()) except ValueError: print("Please enter a valid number for age.") exit(1) # 条件判断 if sex == 'male': if age < 18: print("Young bruh!") else: print("Big bruh!") elif sex == 'female': if age < 18: print("Young gurrl!") else: print("Big gurrl!") else: print("Please enter either 'male' or 'female'.")
更优雅的写法(逻辑解耦+可读性提升)
把性别对应的称呼和年龄判断分离,用字典映射减少重复代码:
try: sex = input("Enter your sex (male/female): ").strip().lower() age = int(input("Enter your age: ").strip()) except ValueError: print("Invalid age input.") exit(1) # 用字典存储性别对应的称呼 gender_calls = {'male': 'bruh', 'female': 'gurrl'} call = gender_calls.get(sex) if call: age_prefix = "Young" if age < 18 else "Big" print(f"{age_prefix} {call}!") else: print("Please enter a valid gender (male/female).")
优雅写法的原因
- 逻辑解耦:把性别和称呼的映射单独放在字典里,后续要修改称呼或添加性别时,只需修改字典,不用动条件判断逻辑
- 减少重复代码:避免了重复的
if age <18判断,用三元表达式简化分支 - 可读性更高:代码结构清晰,一眼能看出性别对应什么称呼,年龄判断逻辑也一目了然
- 扩展性强:如果以后要支持更多性别,比如
'non-binary',只需在字典里加键值对即可
内容的提问来源于stack exchange,提问作者Dark_Entropy
相关产品推荐
相关产品推荐

