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

Python区间IF语句编写及收车估价程序菜单终止问题求解

收车商人模拟Python作业问题解答

一、最初版本估价逻辑问题

你的IF语句实现思路本身是正确的,但是现有代码存在3处核心错误导致无法正常运行:

  • 区间变量定义错误:你写的year_question_intervall_type_1 = 1900-1930实际是执行了减法运算,最终变量值为-30,完全不是你要的「1900到1930年区间」的判断逻辑,正确的区间判断要直接在IF条件里写范围。
  • 输入类型未转换:input()函数返回的所有内容都是字符串类型,你直接拿字符串格式的年份q3和数字比较,判断永远不成立,需要先转成int类型再做比较。
  • 逻辑覆盖不全:现有代码只判断了第一台车的第一个年份区间,另外两台车的判断、其余年份区间、里程数的权重逻辑都没有补充,完全达不到评分要求。

如果要凑够函数和变量数量拿高分,你可以单独封装一个估价函数,每台车辆的信息采集也可以封装成函数,参考实现逻辑如下:

# 封装估价函数
def calculate_car_price(year, miles, level):
    # 等级权重,等级越高权重越大,可自行扩展变量
    level_weight = {
        'A级':0.8,
        'B级':1.0,
        'C级':1.2,
        'D级':1.5
    }
    base_price = 0
    # 年份区间判断
    year = int(year)
    if 1900 <= year <= 1930:
        base_price += 8000
    elif 1931 <= year <= 1950:
        base_price += 6000
    elif 1951 <= year <= 1980:
        base_price += 4000
    elif 1981 <= year <= 2000:
        base_price += 2000
    elif 2001 <= year <= 2021:
        base_price += 1000
    # 里程区间判断
    miles = int(miles)
    if 100 <= miles <= 1000:
        base_price *= 1.5
    elif 1001 <= miles <= 2000:
        base_price *= 1.3
    elif 2001 <= miles <= 5000:
        base_price *= 1.1
    elif 5001 <= miles <= 8000:
        base_price *= 0.9
    elif 8001 <= miles <= 100000:
        base_price *= 0.7
    # 乘等级权重返回最终价格
    return round(base_price * level_weight.get(level, 1.0), 2)

每台车采集完信息之后直接调用这个函数就能输出估价,还能增加函数、变量的数量符合评分规则。

二、更新版本选2不终止程序问题

你现在的代码逻辑里,选2之后只是break跳出了当前的while循环,后续的menu2定义、执行、输入逻辑完全没有加判断条件,不管你选1还是2都会顺序执行。有两种解决方法:

  1. 选2的时候直接终止程序,在option_set_one == 2的分支里加exit()函数:
elif option_set_one == 2:
    exit()
  1. 把menu2以及后续所有选1才需要执行的代码,全部放到if option_set_one == 1:的判断块里,只有选1的时候才会执行这部分代码:
if option_set_one == 1:
    print(cars)
    # 后面的menu2定义、输入、判断逻辑全部缩进放到这个if块里
    def menu_2():
        print("1. the Porsche")
        print("2. the BMW")
        print("3. the Volvo")
        print("4. the Audi")
    menu_2()
    option_set_two = int(input("Which car would you like to exchange your " + question_1 + " with? "))
    # 剩下的option_set_two判断逻辑也全部放进来

两种方法都可以解决你现在的问题,选第二种还能多一层判断逻辑,更符合你多写代码拿高分的需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:24:02