我想知道我是否可以在这里使用子程序,如果是这样,我或者是否有另一种缩短这段代码的方法。
if currency1=='GBP':
if currency2=='USD':
number=float(1.64)
elif currency2=='EUR':
number=float(1.20552)
elif currency2=='JPY':
number=float(171.181)
答案 0 :(得分:6)
你当然可以写一本字典:
currencies = {}
currencies['USD'] = 1.64
currencies['EUR'] = 1.20552
currencies['JPY'] = 171.181
currencies['GBP'] = 1.
number = currencies[currency2]
这有什么好处,你也可以这样做:
other_number = currencies[currency1]
exchange_rate = number / other_number # exchange rate BETWEEN the two currencies
答案 1 :(得分:2)
怎么样:
Brit_converter: {'USD':1.64, 'EUR':1.20552}
if currency1=='GBP':
multiplier = converter[currency2]
或者,假设这符合我的期望:
converted_currency = currency1 * converter[currency2]
答案 2 :(得分:0)
我会使用像这样的词典*:
if currency1 == 'GBP':
number = {'USD':1.64, 'EUR':1.20552, 'JPY':171.181}.get(currency2, 1)
另外,请注意我在这里使用了dict.get
。如果在字典中找不到currency2
,number
将被分配到1
,并且不会引发KeyError
。但是,您可以选择任何您想要的默认值(或完全省略它并将None
作为默认值)。
最后,您应该注意,将float文字放在float
内置函数中是不必要的。
*注意:如果您打算在多个地方使用字典,请不要继续重新创建它。相反,将其保存在如下变量中:
my_dict = {'USD':1.64, 'EUR':1.20552, 'JPY':171.181}
if currency1 == 'GBP':
number = my_dict.get(currency2, 1)
答案 3 :(得分:0)
子程序 - 在Python中,接受的术语是功能 - 无法替换 if 运算符,原因很简单 - 它们用于不同的目的:
正如上面所指出的,词典是多种固定选择的优秀解决方案之一。