我遇到了某种语法错误,我需要帮助理解。
这是我写的代码 -
offer=float(input("What's your offer"))
demand=float(500)
agree=offer+demand/2
print("You offer {f:0} " .format(offer) + "but the merchant wants {f:1} " .format(demand))
print("You finally agree on" + agree)
这是我收到的错误 -
File "c:\users\mariy\documents\visual studio 2013\Projects\PythonApplication4\PythonApplication4\module1.py", line 5, in <module>
print("You offer {f:0} " .format(offer) + "but the merchant wants {f:1} " .format(demand))
KeyError: 'f'
答案 0 :(得分:2)
KeyError
正在展示自己,因为格式规范{f:0}
告诉.format()
查找带有密钥f
的字典,但不存在。
可能你想用这个:
print "You offer ${offer:6.2f} but the merchant wants ${demand:6.2f}".format(offer=200.0,demand=300.0)
您提供200.00美元,但商家想要$ 300.00
您可以将200.0
和300.0
替换为您要使用的变量名称,将$
替换为其他货币符号,或者不替换为符号。
请注意语法:
$
不是格式语法的一部分。字面打印。{keyname:spec}
keyname
部分来自传递给kwargs
的{{1}},即如果我们有.format()
,那么我们必须{demand}
或.format(demand=something)
其中.format(somedict)
有somedict
为关键字demand
是您放置数字位数,点,小数点后的数字和变量类型的位置,如spec
中的浮点数。所以f
表示总共6位数,小数点后2位,浮点数。答案 1 :(得分:0)
您正在尝试使用.format()
,但引用{}
的{{1}}中的参数前面应该是float
,而不是{。}}。
:
和0
在代码执行过程中也会造成一些麻烦,不需要它们。但是,如果您只想使用一种格式操作,则数字将是1
ex:.format()
会生成以下输出"This is number {1} and this is {0}".format("zero", "one")
最终的打印也会造成麻烦,因为你无法连接字符串和整数。
经过一些更正后,您的代码应如下所示:
This is number one and this is zero
如果要限制小数个案的数量,可以在print("You offer {:f} but the merchant wants {:f} ".format(offer, demand))
print("You finally agree on {:f}".format(agree))
个参数中定义它们。
ex:{}
将打印带有2个十进制大小写的浮点数