You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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).")

优雅写法的原因

  1. 逻辑解耦:把性别和称呼的映射单独放在字典里,后续要修改称呼或添加性别时,只需修改字典,不用动条件判断逻辑
  2. 减少重复代码:避免了重复的if age <18判断,用三元表达式简化分支
  3. 可读性更高:代码结构清晰,一眼能看出性别对应什么称呼,年龄判断逻辑也一目了然
  4. 扩展性强:如果以后要支持更多性别,比如'non-binary',只需在字典里加键值对即可

内容的提问来源于stack exchange,提问作者Dark_Entropy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 08:05:25