为什么我收到这个TypeERROR:'str'对象在python中不可调用?

时间:2017-04-02 18:25:58

标签: python-3.x typeerror

我正在使用python中的第一个货币转换器,只有两种货币,我不明白为什么这不能正常工作?我决定在函数中定义所有函数然后再调用它们,但这不起作用。 我是用葡萄牙语做的。

这是我的代码:

from decimal import Decimal as dec


def menu_conv():
    print(" ")
    print("»»»»»»»»»»»»»»» Bem-vindo ««««««««««««««")
    print("»»»»»»»»»» Conversor de Moeda ««««««««««")
    print(" ")
    print("**** Selecione a conversao desejada ****")
    print(" ")
    print("********* 1. Euros -> Dólares **********")
    print("********* 2. Dólares -> Euros **********")
    print("*************** 3. Saír ****************")
    print(" ")


def opcao():
    opcao = int(input("Insira a sua opçao:  "))
    if opcao == 1:
        dolar()
    elif opcao == 2:   
        euro()
    else:
        nao()


def dolar():       
    print(" ")
    montante = dec(input("Qual o montante que deseja converter? €"))
    DOLAR = dec(1.39)
    cambioDolar = dec(montante / DOLAR)
    print(" ")
    print("O Valor em Dólares é: ${:.2f}".format(cambioDolar))
    print(" ")
    print("Deseja fazer nova conversao?")
    print(" ")
    opcao_txt()


def euro():
    print(" ")
    montante = dec(input("Qual o montante que deseja converter? $"))
    EURO = dec(1.39)
    cambioEuro = dec(montante / EURO)
    print(" ")
    print(" O Valor em Euros é: €{:.2f}".format(cambioEuro))
    print(" ")
    print("Deseja fazer nova conversao?")
    print(" ")
    opcao_txt()


def opcao_txt():             
    opcao = input("» S/N: ")
    if opcao == 'S'or's':
        menu_conv()
        opcao()
    else:
        nao()


def nao(): 
    print("Até à próxima!")
    exit()   


menu_conv()
opcao()

这是我尝试进行其他转换时遇到的错误:

»»»»»»»»»»»»»»» Bem-vindo ««««««««««««««
»»»»»»»»»» Conversor de Moeda ««««««««««

**** Selecione a conversao desejada ****

********* 1. Euros -> Dólares **********
********* 2. Dólares -> Euros **********
*************** 3. Saír ****************

Insira a sua opçao:  1

Qual o montante que deseja converter? €1000

O Valor em Dólares é: $719.42

Deseja fazer nova conversao?

» S/N: s

»»»»»»»»»»»»»»» Bem-vindo ««««««««««««««
»»»»»»»»»» Conversor de Moeda ««««««««««

**** Selecione a conversao desejada ****

********* 1. Euros -> Dólares **********
********* 2. Dólares -> Euros **********
*************** 3. Saír ****************

Traceback (most recent call last):
  File "conversor_moeda.py", line 68, in <module>
    opcao()
  File "conversor_moeda.py", line 20, in opcao
    dolar()
  File "conversor_moeda.py", line 37, in dolar
    opcao_txt()
  File "conversor_moeda.py", line 57, in opcao_txt
    opcao()
TypeError: 'str' object is not callable

2 个答案:

答案 0 :(得分:0)

这是因为在你的函数opcao_txt中你有一个名为opcao的字符串变量,它也是一个函数。因此,当您调用opcao()时,您实际上正在尝试调用字符串。

答案 1 :(得分:0)

opcao_txt中,您创建了一个名为opcao的局部变量,该变量优先。它有一个字符串值。然后,您尝试使用调用语法()调用它,然后您就会收到该错误。为变量使用不同的名称应该修复它。