Python学习第八课
1. 函数简介
- 函数也是⼀个对象
- 函数⽤来保存⼀些可执⾏的代码,并且可以在需要时,对这些语句进⾏多次调⽤
语法:
def 函数名([形参1,形参2,形参3....]):
代码块
def xixc(value,value1):
print(value + balue1)
xixc就是一个函数
注意:
函数名必须符合标识符的规范(可以包含字⺟、数字、下划线但是不能以数字开头)
print是函数对象 print()是调⽤函数
例如上面的函数调用就是:xixc(1,2)
2. 函数的参数
2.1 形参和实参
- 形参(形式参数) 定义形参就相当于在函数内部声明了变量,但是并不是赋值
xixc(value,value1) 中的value和value1就是形参 - 实参(实际参数)指定了形参,那么在调⽤函数时必须传递实参,实参将会赋值给对应的形参,简单来说有⼏个形参就要有⼏个实参
**xixc(1,2)**中的1和2就是实参
2.2 函数的传递⽅式
- 定义形参时,可以为形参指定默认值。指定了默认值以后,如果⽤户传递了参数则默认值不会⽣效。如果⽤户没有传递,则默认值就会⽣效
- 位置参数:位置参数就是将对应位置的实参赋值给对应位置的形参
- 关键字参数 : 关键字参数可以不按照形参定义的顺序去传递,⽽根据参数名进⾏传递
- 混合使⽤位置参数和关键字参数的时候必须将位置参数写到关键字参数前⾯去
3. 不定⻓参数
- 定义函数时,可以在形参前⾯加⼀个,这样这个形参可以获取到所有的实参,它会将所有的实参保存到⼀个元组中*
- 带号的形参只能有⼀个,可以和其他参数配合使⽤形参只能接受位置参数,不能接受关键字参数
- **形参可以接收其他的关键字参数,它会将这些参数统⼀保存到字典当中。字典的key就是参数的名字,字典的value就是参数的值
- **形参只有⼀个,并且必须写在所有参数的后⾯
4. 参数的解包
- 传递实参时,也可以在序列类型的参数前添加星号,这样它会⾃动的将序列中元素依次作为参数传递
- 要求序列中的元素的个数必须和形参的个数⼀致
5.作业
- 打印名片程序:输入姓名,电话号码,性别,最后打印出来名片
要求:控制姓名长度为6-20;
电话号码长度11;
性别只能允许输入男或女;
每一样信息不允许为空;
#****************************************************
def use_nm(usename):
for i in usename:
if i == " ": #名字非空判断
print("名字不能有空格或为空")
break
if 6 <= len(usename) <= 20: #名字长度判断
return usename
else:
print("名字不符合要求,请新输入!")
#*****************************************************8
def use_sex(usesex):
if usesex == '男' or usesex == '女':
return usesex
else:
print("你的性别不再考虑下么?")
#*****************************************************
def use_phon(usePhone):
for x in usePhone:
if x == " ":
print("电话号码不能有空格或为空!")
break
if 10 < len(usePhone) < 12:
return usePhone
else:
print("你说的手机号是真的么?")
if __name__ == '__main__':
usename = input("请输入名字(长度6-20):")
usesex = input("输入你的性别:")
usePhone = input("请输入手机号:")
print(" 名片")
print("姓名:" + use_nm(usename))
print("性别:" + use_sex(usesex))
print("电话:" + use_phon(usePhone))
下图是运行结果:
2. 使用函数求前20个斐波那契数列斐波那契数列:1,1,2,3,5,8,13,21…即: 起始两项均为1,此后的项分别为前两项之和
def x12(m):
ac = [0, 1]
while True:
if int(ac[-1]) < m:
ac.append(ac[-1] + ac[-2])
else:
break
print(ac)
if __name__ == '__main__':
print(x12(20))
- 编写一段代码,定义一个函数求1-100之间所有整数的和,并调用该函数打印出结果
def sum1(m, n):
x = 0
for n in range(m, n + 1):
x = x + n
return x
print(sum1(1,100))