我正在尝试做一个货币转换器,但我不知道如何解决这个问题。 回溯:
Traceback (most recent call last):
File "C:/Users/jorge/AppData/Local/Programs/Python/Python39/conversor.py", line 11, in <module>
mult=inp*din
TypeError: can't multiply sequence by non-int of type 'float'
>>>
代码如下:
#currency converter
inp=float(input('Enter a value'))
din=float(input('Which one do you want to convert:eur/ars/mxn/pen/cop/brl'))
eur=float(0.84)
ars=float(97.94)
mxn=float(19.90)
pen=float(4.10)
cop=float(3.800)
brl=float(5.17)
mult=inp*din
print(mult, din)
我之所以给出这个答案,是因为另一个答案,如果答案是危险的,是错误的做事方式,甚至不是解决问题的理想方式,并且会养成以后很难改掉的坏习惯。有一篇关于为什么eval really is dangerous的好文章,这里也有其他缺点
正确的方法是首先创建一个dict,一个查找表,将我们的货币名称与我们的值进行比较:
这允许我们通过提供名称来查找货币的值,因为
currencies['eur']
将为我们提供值。注意,我们不必使用float(0.84)
,因为0.84
已经是一个浮点接下来,我们需要获得用户输入:
请注意,我们不会将
din
转换为浮点,因为它是一个单位,所以稍后我们将在currencies
中查找它最后,我们转换值并打印:
现在你的代码应该可以工作了
现在,为什么不进行评估?好吧,即使提供的代码是安全的,您可能会得到:
祝贺您,当dict解决方案运行良好时,您提供了一个可怕的错误:
这很清楚问题是什么
相关问题 更多 >
编程相关推荐