需掌握知识点:
函数定义
函数调用
嵌套函数
全局变量,全局变量不可以修改,可以用g_a
局部变量
函数例子:编写学生管理系统
使用自定义函数,完成对程序的模块化
学生信息至少包括:姓名,年龄, 学号, 除此以外,可以适当添加
必须完成的功能:添加,删除,修改,查询,退出
1. 把整体框架搞清楚,先搭建框架,不要一开始就考虑函数
经过分析,应该把显示提示的代码,放到一个函数中
def showInfo():
print("-"*30)
print(" 学生管理系统 v1.0 ")
print(" 1:添加学生的信息")
print(" 2:删除学生的信息")
print(" 3.修改学生的信息")
print(" 4.查询学生信息")
print(" 5.遍历所有的学生信息")
print(" 6.退出系统")
print("-"*30)
#功能1,添加学生
def addNewStu(studentsTemp):
# 只要有一个字典,并且这个字典中已经准备好数据,就可以进行添加
name = input("学生姓名:")
age = input("学生年龄:")
num = input("学生学号:")
stuInfo = {'name': name, 'id': num, 'age': age}
studentsTemp.append(stuInfo)
#功能2,删除学生
def delStuInfo(students):
delNum = int(input("请输入要删除的序号:"))
#students=[{}]
#del students[0]
del students[delNum]
# 定义列表,存储多个学生的信息
students = []
#功能3,修改学生信息
def changeStu(students):
changeNum = int(input("请输入要修改的序号:"))
print("=======================================")
students[changeNum]['name'] = input("输入想要修改的名字")
students[changeNum]['id'] = input("输入想要修改的学号")
students[changeNum]['age'] = input("输入想要修改的年龄")
#功能4,查询学生信息
def findStu(students):
#findNum = int(input("请输入要查询的学生学号:"))
findNum = input("请输入要查询的学生学号:")
#print("=======================================")
for stu in students:
#print(stu)
print("id 姓名 年龄")
if stu['id'] == findNum:
print(stu['name'], stu['id'], stu['age'])
else:
continue
while True:
# 1.0 先把功能列表进行显示给用户
showInfo()
# 功能1,添加学生信息,姓名,年龄,学号
# 1.1 提示用户选择功能
# 1.2 获取用户选择的功能
key = int(input("请选择功能(序号):"))
# 1.3 根据用户选择,执行相应功能
if key == 1:
addNewStu(students)
#删除,可以选用序号
elif key == 2:
delStuInfo(students)
elif key == 3:
changeStu(students)
elif key == 4:
findStu(students)
elif key == 5:
print("*" * 20)
print("遍历所有学生人数。。。")
print("id 姓名 年龄")
for temp in students:
print(temp['name'], temp['id'], temp['age'])
elif key == 6:
quitConfirm = input("亲,真的要退出吗(yes or no)")
if quitConfirm == 'yes':
break
else:
print("输入有误,重新输入")
运行结果:
D:\1a\python3.6.1\python.exe E:/python_workspace/python_notes/example7-studentsSys.py
------------------------------
学生管理系统 v1.0
1:添加学生的信息
2:删除学生的信息
3.修改学生的信息
4.查询学生信息
5.遍历所有的学生信息
6.退出系统
------------------------------
请选择功能(序号):1
学生姓名:1
学生年龄:1
学生学号:1
------------------------------
学生管理系统 v1.0
1:添加学生的信息
2:删除学生的信息
3.修改学生的信息
4.查询学生信息
5.遍历所有的学生信息
6.退出系统
------------------------------
请选择功能(序号):1
学生姓名:2
学生年龄:2
学生学号:2
------------------------------
学生管理系统 v1.0
1:添加学生的信息
2:删除学生的信息
3.修改学生的信息
4.查询学生信息
5.遍历所有的学生信息
6.退出系统
------------------------------
请选择功能(序号):4
请输入要查询的学生学号:1
id 姓名 年龄
1 1 1
id 姓名 年龄
------------------------------
学生管理系统 v1.0
1:添加学生的信息
2:删除学生的信息
3.修改学生的信息
4.查询学生信息
5.遍历所有的学生信息
6.退出系统
------------------------------
请选择功能(序号):5
********************
遍历所有学生人数。。。
id 姓名 年龄
1 1 1
2 2 2
------------------------------
学生管理系统 v1.0
1:添加学生的信息
2:删除学生的信息
3.修改学生的信息
4.查询学生信息
5.遍历所有的学生信息
6.退出系统
------------------------------
请选择功能(序号):4
请输入要查询的学生学号:2
id 姓名 年龄
id 姓名 年龄
2 2 2
------------------------------
学生管理系统 v1.0
1:添加学生的信息
2:删除学生的信息
3.修改学生的信息
4.查询学生信息
5.遍历所有的学生信息
6.退出系统
------------------------------
请选择功能(序号):
函数返回多个值:
如果一个函数有多个return,程序只要执行任何一个return,剩下的return都不会被执行,return只要呗调用了,就会立刻结束当前的函数,类似于break,直接结束,只不过结束的是函数 返回的必须顺序保持一致
不定长参数:
eg: def addAll(a, b),带的是可传可不传 原来说,a += a 等价于 a = a+a(a是列表),其实不一样,a+=a是在数据上进行修改,而a=a+a是先定义一个变量然后再进行修改
编写程序的思路以及程序的整体框架:
- 做什么
- 做什么
- 做什么
- 做什么
- 最后的效果 可以先前往后推,或者从后往前推。或者同时进行
递归例子-求阶乘:
#递归实现阶乘例子
def factorial(num):
if num > 1:
result = num * factorial(num-1)
elif num == 1:
result = 1
return result
if __name__ == "__main__":
print(factorial(4))