2014-01-15 35 views
3

我想知道如果我可以在這裏使用子程序,而不是如果如此,我該如何還是有另一種方法來縮短這段代碼。在python中使用子程序而不是if語句

if currency1=='GBP': 
     if currency2=='USD': 
      number=float(1.64) 
     elif currency2=='EUR': 
      number=float(1.20552) 
     elif currency2=='JPY': 
      number=float(171.181) 
+2

您還可以通過刪除對'float'的不必要調用來縮短代碼。 – rlms

回答

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 
2

如何:

Brit_converter: {'USD':1.64, 'EUR':1.20552} 

if currency1=='GBP': 
    multiplier = converter[currency2] 

,或者假設這是我所期望的:

converted_currency = currency1 * converter[currency2] 
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內部是不必要的。


*注意:如果您打算在多個地方使用字典,請不要重新創建它。相反,它保存在一個變量,像這樣:

my_dict = {'USD':1.64, 'EUR':1.20552, 'JPY':171.181} 
if currency1 == 'GBP': 
    number = my_dict.get(currency2, 1) 
+0

可能希望默認值爲'1'而不是'0',因此當轉換倍增時,它保持不變。 – thumbtackthief

+0

@thumbtackthief - 這是一個好主意。我會執行它。 – iCodez

0

子程序 - 在Python中接受的術語功能 - 不能如果運營商更換了一個非常簡單的原因 - 它們有不同的用途:

  • 功能用於將代碼細分爲小巧的可管理單元併合並多個位置所需的功能
  • 如果運算符更改控件流

正如上面指出的,字典是多種固定選擇的優秀解決方案之一。