为了账号安全,请及时绑定邮箱和手机立即绑定

使用子程序时“未定义”

使用子程序时“未定义”

阿晨1998 2021-10-10 18:58:55
我试图在“show():”中的“create():”下调用“name”,但它说它没有定义。如何将我的输入保存在“create():”中,以便我可以在其他子例程中使用它(在本例中,在“show():”中)。谢谢我试图在选择部分之后询问用户输入,但没有解决。我不断收到同样的错误。import sysclass 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 choicedef 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 datalistdef printt(datalist):    for data in datalist:        print(data.name, data.average)def name():    namea = str(input("Give a name: "))    return nameadef 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) 印刷品:你好丹尼尔
查看完整描述

2 回答

?
ITMISS

TA贡献1871条经验 获得超8个赞

您必须让 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


查看完整回答
反对 回复 2021-10-10
  • 2 回答
  • 0 关注
  • 281 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号