【发布时间】:2016-12-31 01:46:59
【问题描述】:
在零售审计计算器的一小部分代码中,我尝试允许输入零售值并将其乘以最多 2 个输入的数量 预期(预期)结果是 $X*Y=$Z .
我曾尝试修改代码,但似乎对这个数学如何(不是)正常工作感到困惑。
我在代码中尝试了许多不同的配置,我取得的最大成果如下:
#Retail value of item, whole number (i.e. $49.99 entered as 4999)
rtlVAL = input("Retail Value: ")
#Quantity of Items - can be multiplied for full stack items, default if no entry is '1'
qt1 = float(input("Quantity 1: ")) #ex. 4
qt2 = float(input("Quantity 2: ") or "1") #ex " "
#Convert the Retail Value to finacial format (i.e 4999 to $49.99)
rtl = float("{:.2}".format (rtlVAL))
# Screen Output
qtyVAL = int(qt1)*int(qt2)
print("$" + str(qtyVAL*rtl))
输入的值为: 零售价值:4999 数量 1:4 数量 2:(空白)
预期性能为 4999 * 4 *(因为没有条目默认值为 1),预期结果为 $199.96
这段代码的结果是$196.0,所以它不仅是错误的结论,而且少了两位小数。
我不完全确定为什么数学在预期的上下文中出现错误。
我在这里缺少什么?
在第 9 行,我尝试了以下操作:
rtl = float("{:.2f}".format (rtlVAL))
rtl = int("{:.2f}".format (rtlVAL))
回报是
ValueError:“str”类型的对象的未知格式代码“f”
如果我将第 13 行更改为:
print("$" + float(qtyVAL*rtl))
我明白了
TypeError: 必须是 str,而不是 float
将前面的任何一个更改与后者结合使用将返回 ValueError:
Python 3.4 和 3.6
我确实搜索了一些关于 Python、数学、浮点数和格式的其他 SO 问题,但这些问题正在寻找并提出比这更先进和更复杂的东西,所以我无法收集答案来做出一个上下文应用程序或它主要应用于 Python 2.7,其中某些代码(例如 raw input())只是 input() 并在 Python 3.x 中由 int(input()) 更改以退出 str 值(据我了解这个目的。
我不认为这是重复的,但如果我错过了其中的某些内容,我深表歉意 - 这不是故意的。
【问题讨论】:
标签: python-3.x