为什么Python告诉我这个未定义?

时间:2020-04-10 02:12:25

标签: python

因此,我试图编写一个使用函数来创建用于用户输入的菜单的代码。基本上,这只是输入您想要的美元数量,然后选择将其转换为哪种货币。我绝对迷路了,因为每次尝试运行这段代码之前,我都会输入“ 1”并说“ 20美元”,例如,它告诉我“当我明确将其作为用户输入时,则未定义。”

def DisplayMenu():
    print("Choose a menu option:")
    print("1. European Euro")
    print("2. British Pound")
    print("3. Mexican Peso")
    print("4. Chinese Yuan")
    print("5. Japanese Yen")
    print("6. Quit")
    selection = int(input("Enter your selection: "))
    dollars = eval(input("Enter the dollar amount to convert: "))



def DollarConvert(selection, dollars):
    if selection == "1":
        conversion = dollars * 0.921
    elif selection == "2":
        conversion = dollars * 0.807
    elif selection == "3":
        conversion = dollars * 24.246
    elif selection == "4":
        conversion = dollars * 7.085
    elif selection == "5":
        conversion = dollars * 108.03
    elif selection == "6":
        quit
    elif selection > 6:
        print("Invalid input.")


DisplayMenu()

print("$ ",dollars," = ",chr(8364),conversion)

希望有人可以帮助我,因为我没有想法

3 个答案:

答案 0 :(得分:0)

您永远不会运行或从DollarConvert()运行,也不会从任何一个函数接收输出。更改函数以返回值,如下所示:

def DisplayMenu():
    print("Choose a menu option:")
    print("1. European Euro")
    print("2. British Pound")
    print("3. Mexican Peso")
    print("4. Chinese Yuan")
    print("5. Japanese Yen")
    print("6. Quit")
    selection = int(input("Enter your selection: "))
    dollars = eval(input("Enter the dollar amount to convert: "))
    return selection, dollars

def DollarConvert(selection, dollars):
    if selection == "1":
        return = dollars * 0.921
    elif selection == "2":
        return = dollars * 0.807
    elif selection == "3":
        return dollars * 24.246
    elif selection == "4":
        return dollars * 7.085
    elif selection == "5":
        return dollars * 108.03
    elif selection == "6":
        quit
    elif selection > 6:
        print("Invalid input.")
        return None


selection, dollars = DisplayMenu()
conversion = DollarConvert(selection, dollars)
print("$ ",dollars," = ",chr(8364),conversion)

我们去。

答案 1 :(得分:0)

在您的代码中,dollars变量的范围仅限于该函数内部。您必须从函数中返回美元以使其可访问。此外,从不调用美元转换函数,因此需要调用它。您还需要为转换变量添加return语句。返回对于大多数所有功能都是必不可少的,否则数据会丢失。

答案 2 :(得分:0)

您也可以使用全局关键字

dollars = None
conversion = None
def DisplayMenu():
    global dollars
    print("Choose a menu option:")
    print("1. European Euro")
    print("2. British Pound")
    print("3. Mexican Peso")
    print("4. Chinese Yuan")
    print("5. Japanese Yen")
    print("6. Quit")
    selection = input("Enter your selection: ")
    dollars = int(input("Enter the dollar amount to convert: "))
    DollarConvert(selection, dollars)


def DollarConvert(selection, dollars):
    global conversion
    if selection == "1":
        conversion = dollars * 0.921
    elif selection == "2":
        conversion = dollars * 0.807
    elif selection == "3":
        conversion = dollars * 24.246
    elif selection == "4":
        conversion = dollars * 7.085
    elif selection == "5":
        conversion = dollars * 108.03
    elif selection == "6":
        quit
    elif selection > 6:
        print("Invalid input.")


DisplayMenu()

print("$ ",dollars," = ",chr(8364),conversion)

此外,第12和13行还有一个错误,即

selection = int(input("Enter your selection: "))

更改为

selection = input("Enter your selection: ")

dollars = eval(input("Enter the dollar amount to convert: "))

更改为

dollars = int(input("Enter the dollar amount to convert: "))
相关问题