使用子程序时“未定义”

我试图在“show():”中的“create():”下调用“name”,但它说它没有定义。如何将我的输入保存在“create():”中,以便我可以在其他子例程中使用它(在本例中,在“show():”中)。


谢谢


我试图在选择部分之后询问用户输入,但没有解决。我不断收到同样的错误。


import sys


class data:

    name = ""

    average = ""



def menu():

    print("1) Data input")

    print("2) Print data")

    print("3) Give file name")

    print("4) Save")

    print("5) Read file")

    print("0) Stop")

    choice = int(input("Give your choice: "))

    print()

    return choice



def save(datalist, namea):

    f = open(namea, "w")

    for data in datalist:

        row = str("{};{}").format(data.name, data.average)

        f.write(row)

        f.write("\n")

    f.close()


def read(datalist, namea):

    f = open(namea, "r")

    for row in f:

        row = row.split(";")

        dataa = data()

        dataa.name = str(row[0])

        dataa.average = float(row[1])

        datalist.append(dataa)

    return datalist




def printt(datalist):

    for data in datalist:

        print(data.name, data.average)


def name():

    namea = str(input("Give a name: "))

    return namea


def inputt(datalist):

    dataa = data()

    dataa.name = str(input("Give a name: "))

    dataa.average = float(input("Give the average (float): "))

    datalist.append(dataa)

    print()

    return(datalist)



def main():

    try:

        datalist = []

        while True:

            choice = menu()

            if (choice == 1):

                datalist = inputt(datalist)


            elif (choice == 2):

                printt(datalist)


            elif (choice == 3):

                namea = name()


            elif (choice == 4):

                save(datalist, namea)


            elif (choice == 5):

                datalist = read(datalist, namea)


            elif (choice == 0):

                print("The program was closed {} at {}".format(datetime.datetime.now().strftime('%d.%m.%Y'), datetime.datetime.now().strftime('%H:%M:%S')))

                return False

    except Exception:

        sys.exit(0)



main()

当我调用 2) 时,我希望它打印我在 1) 中输入的名称。例如: 选择 1) 1) 给出姓名:丹尼尔 选择 2) 2) 印刷品:你好丹尼尔


阿晨1998
浏览 282回答 2
2回答

ITMISS

您必须让 show() 在其中包含一个参数。例如:def show(n):    print(n)因此,当您调用 show(n) 时,它会将您包含的任何内容打印为 n。所以如果你打电话给 show(name)。它会打印出名称。def show(n):    print(n)show(name) #This would print out name.除非您返回一个值,否则您也不需要return。Return 不会使代码返回,它只会使函数返回一个值。所以你确实需要返回 list() 和 create(),但不需要返回 show(n)。编辑 您还希望在调用 create 时将用户输入设置为变量。def main():    print("Choose from the following list:")    while True:        choice = lista()        if (choice == 0):           print("Thanks for using the program!")           break        elif (choice == 1):            name = create() #Here is where you should change it        elif (choice == 2):            show(name)        else:            print("Input not detected.\nStopping.")            break
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python