Python自学笔记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()


  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值