Python中基于整数输入的if语句实现及类型错误排查
光纤成本计算程序错误修复与完整实现
错误原因
input()函数返回的是字符串类型,直接和整数100做比较会触发TypeError——字符串和整数不能用>=这类运算符直接对比。另外原代码还存在缩进错误、缺少500英尺的折扣规则,以及未完成完整成本计算流程的问题。
修复并完善后的完整代码
# 欢迎信息 print("Welcome to Fiber Optic Solutions") company_name = input("Please state the name of your company: ") print(f"Thank you {company_name},") print("Our pricing for fiber optic cable is as follows:") print("- Standard rate: $0.87 per foot") print("- Discount for orders over 100ft: $0.80 per foot") print("- Discount for orders over 250ft: $0.70 per foot") print("- Discount for orders over 500ft: $0.50 per foot") # 获取并转换输入的英尺数,同时做有效性验证 while True: try: feet = float(input("\nPlease state how many feet of cable you require: ")) if feet < 0: print("Please enter a positive number.") continue break except ValueError: print("Invalid input. Please enter a numeric value.") # 按批量规则计算单价与总成本 if feet > 500: cost_per_foot = 0.50 elif feet > 250: cost_per_foot = 0.70 elif feet > 100: cost_per_foot = 0.80 else: cost_per_foot = 0.87 total_cost = feet * cost_per_foot # 结果展示 print(f"\n--- Order Summary for {company_name} ---") print(f"Total feet of cable: {feet:.2f}") print(f"Price per foot: ${cost_per_foot:.2f}") print(f"Total cost: ${total_cost:.2f}")
核心改进说明
- 将输入的英尺数转换为
float类型,彻底解决类型不匹配的错误;同时加入循环验证,确保用户输入有效正数。 - 补充了500英尺的折扣规则,用
elif实现多条件判断,逻辑层级更清晰。 - 修复原代码中
if语句的缩进错误(Python要求代码块必须缩进)。 - 增加完整的订单汇总展示,输出格式更规范易读。
内容的提问来源于stack exchange,提问作者Kyle Hughes
相关产品推荐
相关产品推荐

