老师授课内容
day04-实训4
1、双重循环
循环也可以嵌套,如果循环里面还有循环,称之为双重循环
2、函数
定义:在项目的开发过程中,有一些代码会被反复的使用到。程序猿就会将这个代码块封装起来,那么封装起来的代码块就叫做函数
函数就是代码块
优点:
面向函数编程(每一个功能都是一个一个函数)
面向对象编程(每一个功能都是一个一个对象的方法)
(1)提高代码的利用率
(2)增加代码的可读性
(3)便于调试bug(debug),解决错误,bug
发现bug需要3秒钟,解决bug需要3个小时,debug却需要一辈子
分类:
库函数(官方的函数print,input,或者第三方的函数)、自定义函数(自己写的函数)
python是一个胶水语言,有很多非常强大的第三方库。需要安装,安装之后就可以使用
命名:给这一坨代码块起个名字,函数名
标识符
只能由 数字、字母、下划线 组成
不能以数字开头
不能是系统关键字
my_love myLove(小驼峰原则)
使用方式:(function, method, func)
def funcname(parameter_list):
pass
【注1】函数必须调用才能够执行
【注2】函数必须先定义才能够调用
【注3】函数执行,会直接调到函数里面执行所有的代码
有几种格式:
参数:该函数有没有参数,看定义函数的时候小括号里面有没有内容,有的话就代表有参数,没有的话就代表没有参数
返回值:该函数有没有返回值,就要看这个函数里面有没有一个关键字,return,有就是有返回值,没有,就是没有返回值
(1)无参无返回值
(2)无参有返回值
函数碰到return代表函数的结束
可以返回多个值,可以返回任何类型
不写return默认返回 None
(3)有参无返回值
两种调用方法
顺序传参
关键字传参
(4)有参有返回值
见代码
函数注释:对函数进行一些功能性描述
默认参数:如果传递,以传递的为主,如果不传递,以默认值为主,如果有的有默认值有的没有默认值,那么没有默认值的放在前面,有默认值的放在后面
函数的重载
可以重写一个和以前函数一模一样的函数名,后面的会覆盖前面的
可变长度参数
不定长度
def haha(*args):
顺序传参-传递过来的都会放入args这个元组中
def haha(**args):
关键字传参-传递过来的都会放在args这个字典中
列表拆包和字典拆包
* 和 **
局部变量和全局变量
局部变量:在函数体内的变量叫做局部变量
全局变量:在函数体外的变量叫做全局变量
在函数体内可以使用全局变量
在函数体外不能使用局部变量
在函数体内只能读取全局变量的值,不能修改,如果你要修改,通过global关键字声明一下
3、常用函数
round() : 四舍五入 还可以设置保留几位
abs() : 绝对值
max() : 可以传递列表,也可以挨个给
min() : 最小的,和上面的一样
hex() : 得到十六进制数
oct() : 得到八进制数
bin() : 得到二进制数
sum() : 求和,给一个列表
pow() : 2**5 求幂
divmod() : 返回一个元组,得到商和余数
random
import random
random.函数名()
random() : 随机0-1之间的小数
uniform() : 得到指定区间内的一个小数
choice() : 从列表里面随机一个元素出来
randint() : 从指定区间随机一个整数出来
sample() : 样本,从列表里面随机n个出来
shuffle() : 将列表打乱顺序
time
sleep() : 延迟几秒,可以写小数
math
e : 常量
pi : 常量
ceil() : 向上取整
floor() : 向下取整
sqrt() : 开根号
degrees() : 弧度转化为度
radians() : 度转化为弧度
sys
sys.argv : 给程序传参
os
os.system() : 可以执行系统指令
cls : 清屏指令
晚间习题:
# 1、打印99乘法表
# for i in range(1,10):
# for j in range(1,i+1):
# print('%d*%d=%d\t'%(i,j,i*j),end="")
# print()
# 2、编写函数,输入两个参数,m,n,打印m行n列的表格,输出依次为1234。。。。m*n
# 5 4
# 1 2 3 4
# 5 6 7 8
# 9 10 11 12
# 13 14 15 16
# 17 18 19 20
# m = int(input('请输入行数-'))
# n = int(input('请输入列数-'))
# k=1
# for i in range(1,m+1):
# for j in range(k,i*n+1):
# print(j,end=" ")
# k += 1
# print()
# 3、封装函数,传递3个参数,返回最大的那个
# m = int(input('请输入第一个数-'))
# n = int(input('请输入第二个数-'))
# q = int(input('请输入第三个数-'))
# def max(a,b,c):
# if a > b:
# if b > c:
# print(a,b,c)
# else:
# if a > c:
# return a
# else:
# return b
# else:
# if a > c:
# return b
# else:
# if c > b:
# return c
# else:
# return b
# print(max(m,n,q))
# 4、封装函数,传递3个参数,从大到小依次返回
# m=int(input('请输入第一个数-'))
# n=int(input('请输入第二个数-'))
# q=int(input('请输入第三个数-'))
# def paixu(a,b,c):
# if a > b:
# if b > c:
# print(a,b,c)
# else:
# if a > c:
# return a,c,b
# else:
# return c,a,b
# else:
# if a > c:
# return b,a,c
# else:
# if c > b:
# return c,b,a
# else:
# return b,c,a
# print(paixu(m,n,q))
# 5、封装函数,将时分秒封装好
# hour1 = int(input('请输入小时-'))
# minute1 = int(input('请输入分钟-'))
# second1 = int(input('请输入秒数-'))
# def time(hour,minute,second):
# if second < 60 and minute < 60 and hour < 24:
# second += 1
# if second == 60:
# second = 0
# minute += 1
# if minute == 60:
# minute = 0
# hour += 1
# if hour == 24:
# hour = 0
# return '下一刻时间:%02d:%02d:%02d' % (hour,minute,second)
# else:
# return '请输入正确时间'
# print(time(hour1,minute1,second1))
# 6、封装函数,传递一个十进制,返回其二进制
# a = int(input('请输入一个十进制数-'))
# def zhuanhua(m):
# return bin(m)
# print(zhuanhua(a))
# 7、输入一个数n,计算 1!+2!+...+n!
# sum=0
# n=1
# num = int(input('请输入一个数字:'))
# for i in range(1,num+1):
# n = n*i
# sum +=n
# print('阶乘之和:',sum)
# 8、输入一个正整数,输出这个正整数的位数
# a = int(input('请输入一个整数-'))
# num = 0
# while a:
# a = int(a/10)
# num += 1
# print(num)
# 9、输入4,打印如下图形
# *
# ***
# *****
# *******