已知利润率求进货价的Python代码问题:报错及代码规范求助
解决进货价计算的Fraction模块错误与代码规范问题
一、错误原因分析
你遇到的TypeError: unsupported format string passed to Fraction.__format__,是因为Python的Fraction对象不支持直接用普通格式化字符串(比如print("进货价是%.2f美元" % cost_price))输出。需要先将Fraction转换为浮点数,或者使用适配Fraction的格式化方式。
二、正确实现代码
根据数学逻辑:进货价 = 售价 / (1 + 利润率),用Fraction模块实现的正确代码如下:
from fractions import Fraction # 已知条件 selling_price = 210.00 profit_percent = 5 # 利润为进货价的5% # 推导公式:售价 = 进货价 × (1 + 利润率/100) → 进货价 = 售价 ÷ (1 + 利润率/100) cost_price = Fraction(selling_price, 1 + profit_percent / 100) # 正确输出方式:转成浮点数后格式化,或直接打印分数形式 print(f"该商品的进货价是 {float(cost_price):.2f} 美元") # 若需保留精确分数形式,可直接打印 print(f"进货价的精确分数形式:{cost_price}")
运行后会输出该商品的进货价是 200.00 美元,符合预期结果。
三、代码整洁规范建议
作为编程新手,参考以下规范能让代码更易读、易维护:
- 添加清晰注释:对关键变量、计算逻辑加注释,比如说明公式由来,避免后续遗忘逻辑。
- 变量命名见名知意:用
selling_price、cost_price、profit_percent这类名称,避免模糊缩写(如sp、cp)。 - 封装可复用逻辑:如果后续要多次计算,把计算逻辑封装成函数:
from fractions import Fraction def calculate_cost_price(selling_price, profit_percent): """根据售价和利润率计算进货价""" return Fraction(selling_price, 1 + profit_percent / 100) # 调用函数 sp = 210.00 profit = 5 cp = calculate_cost_price(sp, profit) print(f"进货价:{float(cp):.2f} 美元") - 避免魔法数字:把百分比转换用的100定义为常量,比如
PERCENT_SCALE = 100,后续修改更方便。
内容的提问来源于stack exchange,提问作者Fahrizal
相关产品推荐
相关产品推荐

