Python自学笔记1:定义了函数但是还报未定义?

Python自学笔记1:定义了函数但是还报未定义?,第1张

Python自学笔记:定义了函数但是还报未定义?

省流助手:
解决办法:试试把报未定义的函数放在main函数前面

解题过程:
这几天因为项目作业需要,在b站上找了个Python教程想入入门
网课传送门(非广告)
好不容易,看到了最后的实战项目——学生信息管理系统
照着老师敲完第137节的代码,一运行发现报错,说未定义


我不理解,于是求助大佬同学,大佬说要不你把menu函数移到main函数前面看看?

我觉得这很扯,因为按照之前C、C#、C++的编程经验,似乎一个文件里面函数都可以互相找到,没有这么严格的顺序要求的,所以就主观否定了这种可能的原因,一开始没有去这么改(这样不对!千万不能过于经验主义墨守成规)

但是不得不说,确实把menu函数换了个位置,他就活了。

然后为了弄明白为什么会这样,我又去查了一下其他码友遇到的类似困难:
https://www.it1352.com/1670921.html

https://ask.csdn.net/questions/362761?locationNum=8&fps=1

看起来像是没有声明,直接就把定义写在主函数后面使用造成的
为了验证我的猜想,我又把menu函数放了回去,试着用C语言的办法先开头声明然后定义,但是他报错······
(是的,我居然没想到C语言能乱序写是因为函数都是有声明的,而C#、C++人家自己函数都在一个类的{}里面,我猜测应该跟这些结构有关系我才能把函数顺序写的那么随意······)

然后我又去百度python函数应该怎么声明,也没找出个明确的答案······

没关系,下次注意不要把要用的函数定义放后面就行了,既然暂时找不到一劳永逸的办法,就自己写的时候注意点吧。

完整代码:

def menu():
    print('==========================学生信息管理系统===============================')
    print('------------------------------功能菜单--------------------------------')
    print('\t\t\t\t\t\t1.录入学生信息')
    print('\t\t\t\t\t\t2.查找入学生信息')
    print('\t\t\t\t\t\t3.删除学生信息')
    print('\t\t\t\t\t\t4.修改学生信息')
    print('\t\t\t\t\t\t5.排序')
    print('\t\t\t\t\t\t6.统计学生总人数')
    print('\t\t\t\t\t\t7.显示所有学生信息')
    print('\t\t\t\t\t\t0.退出')
    print('==========================学生信息管理系统===============================')

def main():
    while True:
        menu()
        choice=int(input('请选择'))
        if choice in[0,1,2,3,4,5,6,7]:
            if choice==0:
                answer=input('您确定要退出系统吗?y/n')
                if answer=='y' or answer=='Y':
                    print('谢谢您的使用!!!')
                    break #退出系统
                else:
                    continue;
            elif choice==1:
                insert() #录入学生信息
            elif choice==2:
                search()
            elif choice==3:
                delete()
            elif choice==4:
                modify()
            elif choice==5:
                sort()
            elif choice==6:
                total()
            elif choice==7:
                show()

def insert():
    pass

def search():
    pass

def delete():
    pass

def modify():
    pass

def sort():
    pass

def total():
    pass

def show():
    pass

if __name__ =='__main__':
    main()


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/916823.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存