本文转载自:http://www.itdaan.com/blog/2018/04/27/78c5b6aed784a9d5b4ac6a628a9b162c.html
#1:定义函数
def printInfo():
print("I love Python!")
#调用函数
#注意:函数定义完毕并不会被默认执行,只能通过调用的方式来让它执行
printInfo()
#2:向函数传递信息:即参数
#求两个数的和
def sumNum(a,b): #这里的a,b为形式参数(形参)
print("%d"%(a+b))
sumNum(10,20) #这里的10,20为实际传入的参数(实参)
#3:位置实参/关键字实参:调用带有参数的函数时,可以指定参数的顺序
def myPet(petType, petName):
print("我的宠物是一只"+petType+", 它的名字是"+petName+".")
#以下两种调用方式输出的结果一样
myPet(petType = '小狗', petName = 'jenson')
myPet(petName = 'jenson', petType = '小狗')
#4:带有返回值的函数
def sumNum(a,b):
return a+b
#调用函数,顺便保存函数的返回值,以便以后使用
result = sumNum(11,22)
print(result)
#5:常见的四种函数类型
'''
无参数,无返回值(如上述1)
无参数,有返回值(如下)
有参数,无返回值(如上述2)
有参数,有返回值(如上述4)
'''
def getId():
return 2001234
idNum = getId()
print("id = %d"%idNum)
#6:函数的嵌套调用
def testA1():
print("开始执行函数A1...")
def testA():
print("开始执行函数A...")
testA1()
print("函数A执行结束.")
testA()
#函数嵌套调用实例:写一个函数求三个数的和,并求三个数的平均值
def getSum(a,b,c):
sum = a + b + c
return sum
def avgValue(A,B,C):
result = getSum(A,B,C)
average = result/3.0
return average
result = avgValue(20,30,40)
print("三个数的平均值是:%f"%result)
#7:函数的局部变量和全局变量
'''
局部变量,就是在函数内部定义的变量
不同的函数,可以定义相同的名字的局部变量,但是各用各的不会产生影响
局部变量的作用,为了临时保存数据需要在函数中定义变量来进行存储,这就是它的作用
'''
def test1():
a = 100 #这里的a就是局部变量,只在test1函数内起作用
def test2():
print("a=%d"%a) #在test2中不能使用a
test1()
#test2() #报错
#print("a=%d"%a) #会报错
#如果一个变量既能在这个函数中使用也能在其他函数中使用,则这样的变量就是全局变量
a = 1000 #全局变量
def test1():
print(a)
def test2():
print(a)
test1()
test2()
#全局变量和局部变量名称可以相同
b = 1000
def testA2():
b = 2000 #这里打印的b是局部变量
print(b)
def testA3():
print(b) #这里打印的b是全局变量
testA2()
testA3()
#如果需要在函数中修改全局变量,那么就需要用global进行声明,否则会出错
c = 1000
def testB1():
global c
print("修改前:c=%d"%c)
c = 2000
print("修改后:c=%d"%c) #这里打印的c的值已经发生变化
def testB2():
print(c) #这里打印的c的值也将发生变化
testB1()
testB2()
#练习一:计算1~指定数的和
#定义求和函数,有返回值
def getSum(num):
i = 1
sum = 0
while i<=num:
sum+=i
i+=1
return sum
#将返回值保存在一个变量中
result = getSum(1000)
print("-"*20)
print("求和结果是:%d"%result)
print("-"*20)
#练习二:名片管理系统第一版
#主界面函数:没有参数没有返回值
def displayMenu():
print("-"*30)
print(" 名片管理系统 V6.0")
print(" 1. 添加名片")
print(" 2. 删除名片")
print(" 3. 修改名片")
print(" 4. 查询名片")
print(" 5. 遍历名片")
print(" 6. 退出系统")
print("-"*30)
#获取用户输入的信息:没有参数,有返回值
def getChoice():
selectedKey = int(input("请输入选择的序号:"))
return selectedKey
#有参数,没有返回值
def printAllInfo(nameListTemp):
print("="*20)
for temp in nameListTemp:
print(temp)
print("="*20)
nameList = []
i = 0
while i<10:
#打印提示
displayMenu()
#等待用户选择
key = getChoice()
if key == 1:
print("您选择了名片添加功能")
newName = input("请输入姓名:")
nameList.append(newName)
elif key == 3:
pass
elif key == 4:
pass
elif key == 5:
printAllInfo(nameList)
elif key == 6:
break
else:
print("输入有误,请重新输入!")
i+=1
#练习三:
'''
编写"学生管理系统"(第一版),初步要求如下:
必须使用自定义函数,完成对程序的模块化
学生信心至少包含:姓名、年龄、学号,除此以外可以适当添加
必须完成的功能:添加、删除、修改、查询、遍历、退出
'''
#定义一个列表用来存储多个学生的信息
stuList = []
#定义系统菜单显示函数
def displayMenu():
#完成显示系统菜单的功能
print("*"*40)
print(" 学 生 管 理 系 统 V2.0")
print(" 1. 添加学生信息")
print(" 2. 删除学生信息")
print(" 3. 修改学生信息")
print(" 4. 查询学生信息")
print(" 5. 遍历学生信息")
print(" 6. 退出学生管理系统")
print("*"*40)
def addNewStu(tempStuList):
#完成添加学生信息的功能
name = input("请输入学生的姓名:")
stuId = input("请输入学生的学号:")
age = input("请输入学生的年龄:")
#定义一个字典用来存储每个学生的信息
stuDict = {}
stuDict['name'] = name
stuDict['stuId'] = stuId
stuDict['age'] = age
#将每个学生的信息添加到列表中
tempStuList.append(stuDict)
def delStu():
#完成删除学生信息的功能
delNum = int(input("请输入你要删除的学生的编号:"))
del stuList[delNum]
def reviseStu():
#完成修改学生信息的功能
reviseNum = int(input("请输入你要修改的学生的编号:"))
tempStuDict = stuList[reviseNum]
#输入要修改学生的信息
newName = input("请输入要修改后学生的姓名:")
newStuId = input("请输入要修改后学生的学号:")
newAge = input("请输入要修改后学生的年龄:")
tempStuDict['name'] = newName
tempStuDict['stuId'] = newStuId
tempStuDict['age'] = newAge
def inquireStu():
#完成查询学生信息的功能
inquireNum = int(input("请输入你要查询的学生的编号:"))
inquireStuDict = stuList[inquireNum]
print("你所查询的学生的信息为:")
print("姓名: %s 学号: %s 年龄: %s"%(inquireStuDict['name'], inquireStuDict['stuId'], inquireStuDict['age']))
def bianliStu():
#完成遍历学生信息的功能
print("姓名 学号 年龄")
for tempStu in stuList:
print("%s %s %s"%(tempStu['name'], tempStu['stuId'], tempStu['age']))
while True:
#提示用户选择功能
key = int(input("请输入你选择的功能序号:"))
print("\n")
if key == 1:
displayMenu()
addNewStu(stuList)
elif key == 2:
delStu()
elif key == 3:
reviseStu()
elif key == 4:
inquireStu()
elif key == 5:
bianliStu()
elif key == 6:
ssmu = input("亲,确实要退出吗?(y/n) ~~~~>_<~~~~")
if ssmu == 'y':
break
else:
print("输入有误,请重新输入!")