2016-01-11 100 views
1

我正在用python編寫我的第一個腳本,它是一個貨幣轉換器。只有最後一個想法我需要,但我無法實現它的工作。在不同的功能中使用相同的變量也許

這裏的腳本

print "        Conversor de moeda" 
print "          by DB \n" 
def voltar(): 
    opcao=raw_input("--------------------------------------------------------------------------\nPara converter outro valor Inserir 1 \nPara voltar ao menu  Inserir 2") 
    if opcao == "1": 
      pass 
    elif opcao == "2": 
      pass 
    else: 
      voltar()  
def conversor(): 
    tipo_conv=raw_input("Inserir o número correspondente ao tipo de conversão desejado e carregar no enter: \n1 - Euros -> Dólares \n2 - Dólares -> Euros \n3 - Euros -> Libras \n4 - Libras -> Euros \n") 
    if tipo_conv == "1": 
      qtd=input("Inserir quantidade de Euros a converter:") 
      qtd2=qtd * 1.09212 
      print qtd, "Euros =" , qtd2, "Dólares" 
      voltar() 
    elif tipo_conv == "2": 
      qtd=input("Inserir quantidade de Dólares a converter:") 
      qtd2=qtd * 0.915650 
      print qtd, "Dólares =" , qtd2, "Euros" 
      voltar() 
    elif tipo_conv == "3": 
      qtd=input("Inserir quantidade de Euros a converter:") 
      qtd2=qtd * 0.751910 
      print qtd, "Euros =" , qtd2, "Libras" 
      voltar() 
    elif tipo_conv == "4": 
      qtd=input("Inserir quantidade de Libras a converter:") 
      qtd2=qtd * 1.32995 
      print qtd, "Libras =" , qtd2, "Euros" 
      voltar() 
    else: 
      print "Erro. Escolher uma das quatro opções disponíveis" 
      conversor() 
def voltar(): 
    opcao=raw_input("--------------------------------------------------------------------------\nPara converter outro valor - Inserir 1 \nPara voltar ao menu - Inserir 2 \n--------------------------------------------------------------------------\n") 
    if opcao == "1": 
      pass 
    elif opcao == "2": 
      conversor() 
    else: 
      voltar() 



conversor() 

它首先要求用戶從他們想要什麼樣的轉換的菜單來選擇。那麼它會詢問他們想要轉換的數量。之後它詢問他們是否想要轉換另一個數量或返回菜單。我重新回到菜單部分的工作,但不能寫出部分回去轉換另一部分先前轉換的硬幣。有任何想法嗎?

回答

1

您可以讓conversor()採用默認參數,該參數將從voltar()發送給它。如果用戶決定使用相同貨幣返回轉換,那麼該值將被髮送回conversor(),並且由於該值包含在呼叫中,所以關於使用哪種貨幣的問題會被跳過。

你也不需要(也可能不應該)明確voltar()兩次:

print "        Conversor de moeda" 
print "          by DB \n" 
def voltar(tipo_conv=None): 
    opcao=raw_input("--------------------------------------------------------------------------\nPara converter outro valor - Inserir 1 \nPara voltar ao menu - Inserir 2 \n--------------------------------------------------------------------------\n") 
    if opcao == "1": 
      conversor(tipo_conv) 
    elif opcao == "2": 
      conversor() 
    else: 
      voltar() 

def conversor(tipo_conv=None): 
    if not tipo_conv: 
     tipo_conv=raw_input("Inserir o número correspondente ao tipo de conversão desejado e carregar no enter: \n1 - Euros -> Dólares \n2 - Dólares -> Euros \n3 - Euros -> Libras \n4 - Libras -> Euros \n") 
    if tipo_conv == "1": 
      qtd=input("Inserir quantidade de Euros a converter:") 
      qtd2=qtd * 1.09212 
      print qtd, "Euros =" , qtd2, "Dólares" 
      voltar('1') 
    elif tipo_conv == "2": 
      qtd=input("Inserir quantidade de Dólares a converter:") 
      qtd2=qtd * 0.915650 
      print qtd, "Dólares =" , qtd2, "Euros" 
      voltar('2') 
    elif tipo_conv == "3": 
      qtd=input("Inserir quantidade de Euros a converter:") 
      qtd2=qtd * 0.751910 
      print qtd, "Euros =" , qtd2, "Libras" 
      voltar('3') 
    elif tipo_conv == "4": 
      qtd=input("Inserir quantidade de Libras a converter:") 
      qtd2=qtd * 1.32995 
      print qtd, "Libras =" , qtd2, "Euros" 
      voltar('4') 
    else: 
      print "Erro. Escolher uma das quatro opções disponíveis" 
      conversor() 

voltar() 
+0

你解決了我的問題,而是創造了一個新的問題,當我運行它,它開始問「另一個轉換金額或轉到菜單「部分,它應該從不同轉換菜單開始。 – DavidB

+0

然後,不是最初調用'voltar()',而是調用'conversor()' – Jkdc

+0

很好,解決了問題。你介意解釋我爲什麼(tipo_conv = None)和「if not not tipo_conv:」起作用嗎?我是新來的,還沒有學到這些概念 – DavidB

相關問題