Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中使用子例程而不是if语句_Python_If Statement_Subroutine - Fatal编程技术网

在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
,因此当转换成倍时,子例程和函数是不同的。函数有自己的作用域,函数中定义的变量不会在调用上下文中定义。