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

Python票务定价代码无法识别99以上年龄数值的问题

问题分析与修复方案

核心问题

你猜的没错,问题根源就是字符串与字符串的比较逻辑和整数完全不同。当你把age作为字符串和"60"比较时,Python会按字符的ASCII码逐个对比:

  • 比如输入"100",和"60"对比时,第一个字符'1'的ASCII码小于'6',所以"100" < "60"会返回True,但实际100远大于60。
  • 男性分支里,当输入100时,age >= "60"是False,age <= "60"也是False,两个条件都不满足,自然没输出。
  • 女性分支还犯了逻辑错误:if age >= "60"之后又写elif age > "60",这俩条件重复,第二个分支永远走不到。

修复后的代码

先把输入的age转换成整数,同时修正逻辑漏洞:

sex = input("What gender are you?: ").lower()
# 转换年龄为整数,同时处理非数字输入的异常
try:
    age = int(input("What age are you?: "))
except ValueError:
    print("请输入有效的数字年龄")
    exit()

price_of_ticket = 100

if sex == "male":
    print("Male ticket price is")
    if age >= 60:
        print(price_of_ticket * 0.7, "for senior citizen")
    else:
        print(price_of_ticket, "for normal citizen")
        
elif sex == "female":
    print("Female ticket price is")
    if age >= 60:
        print(price_of_ticket * 0.5, "for senior citizen")
    else:
        print(price_of_ticket * 0.7, "for normal citizen")
else:
    print("请输入有效的性别(male/female)")

关键修改说明

  • 把age从字符串转为整数:用int()转换后,就能正常按数值大小比较年龄,彻底解决超龄无输出的问题。
  • 优化分支逻辑:男性分支把elif age <= "60"改成else,覆盖所有年龄情况;女性分支删掉重复的elif,用else处理非老年女性的折扣。
  • 增加异常处理:加入try-except捕获非数字输入,避免程序直接崩溃;同时增加性别输入校验,防止无效输入导致无输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:24:52