使用python中的子程序而不是if语句

时间:2014-01-15 20:03:56

标签: 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=float(171.181)

4 个答案:

答案 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。如果在字典中找不到currency2number将被分配到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 运算符,原因很简单 - 它们用于不同的目的:

  • 函数用于将代码分解为小型,可管理的单元,并整合多个位置所需的功能
  • 如果操作员更改控制流程

正如上面所指出的,词典是多种固定选择的优秀解决方案之一。