2016-01-11 104 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

相关问题