程序结构(11.2-8分支结构)
- 程序的三种结构
- 顺序
- 循环
- 分支
分支结构
- 分支结构的基本语法
if 条件表达式:
语句1
语句2
语句3
…… - 条件表达式就是计算结果必须为布尔值的表达式
- 表达式后面的冒号不能少
- 注意if后面的出现的语句,如果属于if语句块,则必须同一个缩进登记
- 条件表达式结果为True执行if后面的缩进的语句块
- 字符串的真假:
- 只有空字符串为False,其余全为True
#if语句
age = 19
if age > 18:
print("已成年")
else:
print("未成年")
已成年
双向分支
- if…else…表达
- 语法结构
if 条件表达式:
语句1
语句2
…
else:
语句1
语句2
…
input的作用:
- 1.在屏幕上输出括号内的字符串
- 2.接受用户输入的内容并返回到程序
- 3.input返回的内容一定是字符串类型
#input
gender = input("请输入你的性别:")
print(gender)
if gender == "man":
print("告辞")
else:
print("交个朋友吧")
请输入你的性别:man
man
告辞
score = input("请输入你的成绩:")
score = int(score)
if score >= 90:
print("优秀")
if score >= 80 and score < 90:
print("良")
if score >= 70 and score < 80:
print("中等")
if score >= 60 and score < 70:
print("及格")
if score < 60:
print("辣鸡")
请输入你的成绩:80
良
多路分支(12.2-9循环结构)
-
多个分支的情况
if 条件表达式:
语句1
…
elif 条件表达式:
语句1
…
elif 条件表达式:
语句1
…
else
语句1
… -
elif可以根据实际情况设置多个
-
多路分支最多只会执行一种情况
score = input("请输入你的成绩:")
score = int(score)
if score >= 90:
print("优秀")
elif score >= 80:
print("良")
elif score >= 70:
print("中等")
elif score >= 60:
print("及格")
else:
print("辣鸡")
if语句补充
- if语句可以嵌套使用,但是容易出错
- python中没有switch语句
循环语句
- 重复的执行某一个固定的动作或任务
- 分类
- for
- while
for循环
- 语法
for 变量 in 序列:
语句1
语句2
……
#for循环
#列表
list_one = [1,2,3,4,5,6]
for number in list_one:
print(number)
1
2
3
4
5
6
for-else语句
- for循环结束的时候,有时候需要执行一些收尾工作,此时需要使用else语句
- else语句是可选择的
break,continue,pass
break: 无条件结束整个循环,简称循环猝死
#确定一个数字队列中是否包含数字7
dig_list = [2,3,5,6,45,7,89,54,22,66,7]
for number in dig_list:
if number == 7:
print("已找到数字7")
break
else:
print(number)
2
3
5
6
45
已找到数字7
13.2-10循环while
continue:结束本次循环
pass:占位符,并没有跳过的功能
#pass
age = 19
if age > 18:
pass
else:
print("未成年")
range函数
- 生成有序数列
- 生成数字队列可以定制
- range(数字1,数字2)
- 生成的数字序列包左不包右
#range案例
#生成一个从1到100的数字序列
dig_list = range(1,100)
for number in dig_list:
print(number)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#打印1到10的数字
for i in range(1,11):
print(i)
1
2
3
4
5
6
7
8
9
10
while循环
-
适用于不知道循环次数的循环
-
while语法:
-
while 条件表达式:
- 语句块
-
或者
while 条件表达式:
语句块1
else:
语句块2
#年利率为6.7%,本金为10000元,多少年本金翻倍
money = 10000
year = 0
while money < 20000:
money = money * (1+0.067)
year+=1
print(year)
11
14.2-11函数1
函数
- 函数是代码的一种组织形式
- 函数的使用
- 函数使用需要先定义
def 函数名():
语句
…… - 使用函数,俗称调用
函数名()
- 函数使用需要先定义
- 函数调用方法
- 直接写出函数名字,后面小括号不能省略,括号内容根据实际情况
15.2-11函数2
函数的参数和返回值
- 参数:负责给函数传递一些必要的数据或信息
- 形参(形式参数):在函数定义时使用的参数,没有具体值,只是一个占位符
- 实参(实际参数):在调用函数时输入的值
- 返回值:调用函数的时候的一个执行的结果
- 使用return返回结果
- 如果没有返回结果,最好使用return None表示函数结束
- 函数一旦执行return,则函数立即结束
- 如果函数没有return关键字,则函数默认返回None
#形参和实参
#参数person只是一个符号
#调用的时候用另一个
def hello(person):
print("{0},are you ok?".format(person))
print("{},I'm fine.".format(person))
p = "xiaoming"
hello(p)
xiaoming,are you ok?
xiaoming,I'm fine.
#九九乘法表1
for i in range(1,10):
for j in range(1,i + 1):
print(i * j,end=" ")
print()
1
2 4
3 6 9
4 8 12 16
5 10 15 20 25
6 12 18 24 30 36
7 14 21 28 35 42 49
8 16 24 32 40 48 56 64
9 18 27 36 45 54 63 72 81
16.2-13函数3
def printLine(line_num):
for i in range(1,line_num + 1):
print(i * line_num,end=" ")
def double_nine():
for j in range(1,10):
printLine(j)
print()
double_nine()
1
2 4
3 6 9
4 8 12 16
5 10 15 20 25
6 12 18 24 30 36
7 14 21 28 35 42 49
8 16 24 32 40 48 56 64
9 18 27 36 45 54 63 72 81
参数详解
- 参数分类
- 普通参数/位置参数:函数中形参有多少个,在调用函数时就必须输入相同个数的实参
- 默认参数:就是给参数一个初始的值,在调用函数时,默认参数可以不用给实参,此时形参的值就是默认值
- 关键字参数:在调用函数时,在给出实参时,给形参赋值,不用按照位置给出实参
- 收集参数
#普通参数案例
def sum(a,b,c):
print(a + b)
return None
sum(1,2,3)
3
#默认参数
def sum_1(a,b,c=100):
print(a + b)
return None
sum_1(1,2)
3
#关键字参数
def sum_2(a,b,c):
print(a + b)
print(c)
return None
sum_2(1,2,4)
sum_2(c=4,a=1,b=2)
3
4
3
4
收集参数
- 把没有位置,不能和定义时的参数位置相对应的参数,放入一个特定的数据结构中
- 语法
def func(*args)
func_body
按照list使用方式访问爱人感受得到传入的参数
调用:
func(p1,p2,p3,……) - 参数名args是一种约定俗成的名字
- 参数名args前需要有*
- 收集参数可以和其他参数共存
- 收集参数可以不带任何实参进行调用
#收集参数
#函数模拟一个学生进行一个自我介绍
#把args看作一个列表
def stu(*args):
print(type(args))
for item in args:
print(item)
stu("张三",18,"单身")
<class 'tuple'>
张三
18
单身
收集参数之关键字参数
-
把关键字参数按字典格式存入手机函数
-
语法:
def func(**kwargs): func_body 调用: func(p1=valuea1,p2=value2,……)
-
收集参数中的关键字参数命名一般采用kwargs
-
调用的时候,把多余的关键字参数放入kwargs
-
访问kwargs需要按字典格式访问
def stu(**kwargs):
print(type(kwargs))
for m,n in kwargs.items():
print(m,'---',n)
stu(name="张三",age=18,profession="计算机")
<class 'dict'>
name --- 张三
age --- 18
profession --- 计算机
收集参数混合调用的顺序问题
- 收集参数、关键字参数、普通参数可以混合使用
- 使用规则:普通参数和关键字参数优先
- 定义的时候是普通参数、关键字参数、收集参数tuple、收集参数dict
收集参数的解包问题
- 把参数放入list或者字典中,直接把list/dict中的值放入收集参数中能够
#收集参数的解包问题
def func(*args):
print("名字")
for name in args:
print(name)
func("张三","李四","王五")
list_name = ["张三","李四","王五"]
func(list_name)#此时list_name是一个列表类型,调用时需要解包
#解包调用
func(*list_name)
名字
张三
李四
王五
名字
['张三', '李四', '王五']
名字
张三
李四
王五
函数文档
- 函数文档的作用是对当前函数提供使用相关的参考信息
- 文档的写法:
- 在函数内部开始的第一行使用三引号字符串定义符
- 一般具有特定格式
- 文档查看:
- 使用help函数,形如 help(func)
- 使用doc,形如 func.doc
def stu(name,age,*args):
"""
这是文档第一行
这是文档第二行
"""
return None
help(stu)
stu.__doc__
Help on function stu in module __main__:
stu(name, age, *args)
这是文档第一行
这是文档第二行
'\n 这是文档第一行\n 这是文档第二行\n '