Python计算鞋子含税价时fprice数值不变未乘VAT问题咨询
错误原因
- 核心问题:给各国VAT系数赋值时错误使用了
int()强制转换,浮点数转int会直接截断小数部分,1.19、1.20这类系数转int后都会变成1,最终价格自然和原价完全一致。 - 逻辑错误:国家合法性判断的条件写法错误,你写的
country != "Germany" or "Portugal" or "Italy" or "Spain"or "France"中,单独的字符串本身作为布尔值是True,所以这个条件永远成立,不管输入什么国家都会提示无效输入。 - 冗余/不严谨问题:鞋价输入转int,无法处理带小数的欧元价格;代码末尾的
float(shoep)、float(VAT)没有赋值给变量,属于无效代码。
修正后代码
while True: VAT = 1.0 # 鞋价输入改为转float支持小数价格 shoep = float(input("请输入鞋子的价格(单位:欧元)")) country = input("请输入你购买鞋子的国家:") # 提前做国家合法性判断,用in判断更简洁准确 valid_countries = ["德国", "法国", "西班牙", "意大利", "葡萄牙"] if country not in valid_countries: print("输入无效,请重试") # 无效输入直接跳过后续计算,重新进入循环 continue # 去掉int强制转换,直接赋值浮点型VAT系数 if country == "德国": VAT = 1.19 elif country =="法国": VAT = 1.20 elif country == "西班牙": VAT = 1.21 elif country == "意大利": VAT = 1.22 elif country == "葡萄牙": VAT = 1.23 fprice = shoep * VAT # 输出保留两位小数,符合货币显示习惯 print("鞋子的最终价格为 €", round(fprice, 2))
内容的提问来源于stack exchange,提问作者Jonathan Prince
相关产品推荐
相关产品推荐

