在python中使用子例程而不是if语句
我想知道我是否可以在这里使用一个子程序,如果可以,我该怎么做,或者是否有其他方法来缩短这段代码在python中使用子例程而不是if语句,python,if-statement,subroutine,Python,If Statement,Subroutine,我想知道我是否可以在这里使用一个子程序,如果可以,我该怎么做,或者是否有其他方法来缩短这段代码 if currency1=='GBP': if currency2=='USD': number=float(1.64) elif currency2=='EUR': number=float(1.20552) elif currency2=='JPY': number=fl
if currency1=='GBP':
if currency2=='USD':
number=float(1.64)
elif currency2=='EUR':
number=float(1.20552)
elif currency2=='JPY':
number=float(171.181)
你当然可以编一本字典:
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
那么:
Brit_converter: {'USD':1.64, 'EUR':1.20552}
if currency1=='GBP':
multiplier = converter[currency2]
或者,假设这符合我的预期:
converted_currency = currency1 * converter[currency2]
我会用这样的字典*:
if currency1 == 'GBP':
number = {'USD':1.64, 'EUR':1.20552, 'JPY':171.181}.get(currency2, 1)
另外,请注意,我在这里使用了。如果在字典中找不到currency2
,number
将分配给1
,并且不会引发KeyError
。但是,您可以为默认值选择任何您想要的内容(或者完全忽略它,并将None
作为默认值)
最后,您应该注意,将浮点文本放入内置的float
中是不必要的
*注意:如果你计划在多个地方使用字典,不要继续重新创建它。而是将其保存在变量中,如下所示:
my_dict = {'USD':1.64, 'EUR':1.20552, 'JPY':171.181}
if currency1 == 'GBP':
number = my_dict.get(currency2, 1)
子例程-在Python中,公认的术语是函数-由于一个非常简单的原因,如果运算符,则不能替换-它们有不同的用途:
- 函数用于将代码分解为小的、可管理的单元,并整合多个位置所需的功能
- 如果操作员更改控制流程
正如上面所指出的,字典是解决多个固定选项的最佳解决方案之一。您还可以通过删除对
float
的不必要调用来缩短代码。您可能希望默认值为1
而不是0
,因此当转换成倍时,子例程和函数是不同的。函数有自己的作用域,函数中定义的变量不会在调用上下文中定义。