小白学Python,分享下我自己的学习笔记【二】
大家好,我又来啦!第二次给蚂蚁老师投稿了,上次作为初级小白整理了最基础概念部分的学习笔记,不仅找到了很好学习方法,自信心还倍增。这一个周又向前迈了一大步,学习了计算机的流程控制中关于各种结构,以及里面的几种循环,并且通过分类能够区分它们之间的相似和不同处。也整理了流程控制语句break和continue、的用法和它们之间的区别、内置函数range的使用,以及它们跟各种循环的搭配使用,嵌套等使用。
程序的组织结构(计算机的流程控制)
任何简单或复杂的算法都可以由顺序结构、选择结构和循环结构这三种基本结构组成。程序的组织结构包含以下三种:
1.顺序结构
2.选择结构:if语句
3.循环结构:while语句、for in语句
顺序结构
程序从上到下顺序地执行代码,中间没有任何的判断和跳转,知道程序结束 例:“把大象放进冰箱一共分几步”
例:“把大象放进冰箱一共分几步”
print('1.把大象门打开')
print('2.把大象放进冰箱')
print('3.把冰箱门关上')
1.把大象门打开
2.把大象放进冰箱
3.把冰箱门关上
选择结构
程序根据判断条件的布尔值选择性地执行部分代码,明确的让计算机知道在什么条件下,该去做什么。选择结构包含以下六种:
1.单分支结构
中文语义:如果......就......
语法结构:if 条件表达式:
条件执行式 例:
money=1000 #余额
s=int(input('请输入取款金额')) #取款金额
请输入取款金额600
if money>= s: #判断余额是否充足,这是条件表达式
money=money-s #只有条件为True,才会执行
print('取款成功,余额为:',money)
取款成功,余额为:400
2.双分支结构
二选一执行
中文语义:如果......不满足......就...... (二选一执行)
语法结构:if条件表达式:
条件执行体1
else:
条件执行体2 例:从键盘输入一个整数,编写程序让计算机判断是奇数还是偶数
num=int(input('请输入一个整数'))
请输入一个整数8
if num%2==0: #条件判断,如果是偶数和2的余数为0,奇数和2的余数为1. 二选一执行。
print(num,'是偶数')
else:
print(num,'是奇数')
8 是偶数
3.多分支结构
多选一执行,常用于解决连续的区间段问题
中文语义:身高在180以上吗?不是
身高在170-180之间吗?不是
身高在160-170之间吗?不是
身高在150-160之间吗?不是
身高在150以下吗?是
语法结构:if 条件表达式1: (条件表达式的为True,就不会往下继续执行了,条件表达式1为False,就会继续往下执行2)
条件执行体1
elif条件表达式2:
条件执行体2
elif条件表达式N:
条件执行式N
[else:] (方括号的else是可以省略的,可写可不写)
条件执行体N+1 例:从键盘录入一个整数成绩90-100 A 80-89 B 70-79 C 60-69 D 0-59 E 小于0或大于100 为非法数据(不在范围內)
score=int(input('输入一个成绩:'))
输入一个成绩:98
if score>=90 and score<=100:
print('A级')
elif score>=80 and score<=89:
print('B级')
elif score>=70 and score<=79:
print('C级')
elif score<=60 and score<=69:
print('D级')
elif score>=0 and score<=59:
print('E级')
else:
print('对不起,成绩有误,不在有限范围')
A级
4.嵌套if
语法结构:
if 条件表达式1:#外分支结构条件表达式
if 内层条件表达式1:#内分支结构条件表达式,只有外分支结构的条件表达式1为True,才能执行此行
内存条件执行体1 #内分支结构条件执行式
else:
内存条件执行体2
else:条件执行体 #外分支结构的条件执行式,当外分支结构的条件表达式为False的时候,执行此行
例:会员 >=200 8折
>=100 9折
不打折
非会员 >=200 9折
不打折
例1:会员
answer=input('您是会员吗?y/n')
money=float(input('请输入您的购物金额'))
您是会员吗?y/ny
请输入您的购物金额300
if answer=='y': #是会员
if money>=200:
print('打8折,付款金额为:',money*0.8)
elif mone>=100:
print('打9折,付款金额为:',money*0.9)
else: #非会员
if money>=200:
print('打9.5折,付款金额:',money*0.95)
else:
print('不打折,付款金额:',money)
打8折,付款金额为:240.0
例2:非会员
answer=input('您是会员吗?y/n')
money=float(input('请输入您的购物金额'))
您是会员吗?y/nn
请输入您的购物金额300
if answer=='y': #是会员
if money>=200:
print('打8折,付款金额为:',money*0.8)
elif mone>=100:
print('打9折,付款金额为:',money*0.9)
else: #非会员
if money>=200:
print('打9.5折,付款金额:',money*0.95)
else:
print('不打折,付款金额:',money)
打9.5折,付款金额: 285.0
5.条件表达式
条件表达式是 :if......else的简写
语法结构:X if 判断条件 else Y
运算法则:如果判断条件的布尔值为True,条件表达式的返回值为X,否则条件表示的返回值为False
例:从键盘录入两个整数,比较两个整数的大小
num_a=int(input('请输入一个整数'))
num_b=int(input('请输入一个整数'))
请输入一个整数10
请输入一个整数20
if num_a>=num_b:
print(num_a,'大于等于',num_b)
else:
print(num_a,'小于',num_b)
10 小于 20
条件表达式的写法(简化代码),也就是if......else的简写写法如下:
print(str(num_a)+'大于等于'+str(num_b) if num_a>=num_b else str(num_a)+'小于'+str(num_b))
10小于20
6.pass语句
语句什么都不做,只是一个占位符,用在语法上需要语句的地方
什么时候使用:先搭建语法结构,还没想好代码怎么写的时候
哪些语句一起使用:
if语句的条件执行体
for-in语句的循环体
定义函数时的函数体
answer=input('您是会员吗?y/n') #判断是否是会员
if answer=='y':
pass #没想好是会员的时候代码怎么写,先用pass搭建语法结构,这样语法不会报错
else:
pass #没想好是会员的时候代码怎么写,先用pass搭建语法结构,这样语法不会报错
您是会员吗?y/ny
循环结构
反复做同一件事情的情况,称为循环
循环结构的流程图
循环的分类:while
for-in
while循环语法机构:
while 条件表达式:
条件执行式(循环体)
选择机构的if与循环结构while的区别:if是判断一次,条件为True执行一行 while是判断N+1次,条件为True执行N次
#例:while 循环
a=1
#判断条件表达式
while a<10:
#执行条件执行体
print(a)
a+=1
1
2
3
4
5
6
7
8
9
while循环的执行流程
四部循环法:
初始化变量
条件判断
条件执行体(循环体)
改变变量 (初始化变量与条件判断的变量与改变的变量为同一个)
while循环的执行流程
例:计算0到4之间的累加和
sum=0 #用于存储累加和
a=0 #1.初始化标量
while a<5: #2.条件判断
sum+=a #3.条件执行体(循环体)
a+=1 #4.改变变量
print('和为',sum)
和为 10
例:计算0-100之间的偶数和
sum=0
a=1
while a<=100:
if a%2==0: #替代代码 偶、奇数 if bool(a%2)==0: if not bool (a%2):
sum+=a
a+=1
print('1-100之间的偶数和',sum)
1-100之间的偶数和 2550
for-in 循环
in表达从(字符串、序列等)中依次取值,又称为遍历
for-in遍历的对象必须是可迭代对象
for-in 语法结构
for 自定义变量 in 可迭代对象:
循环体
for-in的执行图
循环体内不需要访问自定义变量,可以将自定义变量替代为下_线
for item in 'Python':
print(item)
P
y
t
h
o
n
for i in range(10):
print(i)
0
1
2
3
4
5
6
7
8
9
如果在循环中不需要使用自定义变量,可将自定义变量写为“_”
for _ in range(5):
print('我爱学习')
我爱学习
我爱学习
我爱学习
我爱学习
我爱学习
例:使用for循环计算1-100之间的偶数和
sum=0 #用于储存偶数和
for a in range(1,101):
if a%2==0:
sum+=a
print('1-100之间偶数和:',sum)
1-100之间偶数和: 2550
流程控制语句break
用于结束循环结构,通常与分支结构if一起使用
for ...in ... :
......
if ... :
break
while(条件):
......
if ... :
break
例:从键盘录入密码,最多录入3次,如果正确就结束循环
例1.(for ... in...)输入三次不正确就结束循环
for item in range(3):
pwd=input('请输入密码:')
if pwd=='888':
print('密码正确')
break
else:
print('密码不正确')
请输入密码:999
密码不正确
请输入密码:777
密码不正确
请输入密码:666
密码不正确
例2.(for ... in...)输入正确就结束循环
for item in range(3):
pwd=input('请输入密码:')
if pwd=='888':
print('密码正确')
break
else:
print('密码不正确')
请输入密码:888
密码正确
例3.用(while)输入三次不正确就结束循环
a=0 #自定义变量
while a<3: #条件判断
pwd=input('请输入密码:') #条件执行体(循环体)
if pwd=='888':
print('密码正确')
break
else:
print('密码不正确')
a+=1 #改变变量
请输入密码:777
密码不正确
请输入密码:999
密码不正确
请输入密码:666
密码不正确
例4.用(while)输入正确就结束循环
a=0 #自定义变量
while a<3: #条件判断
pwd=input('请输入密码:') #条件执行体(循环体)
if pwd=='888':
print('密码正确')
break
else:
print('密码不正确')
a+=1 #改变变量
请输入密码:888
密码正确
流程控制语句continue
用于结束当前循环,进入下一次循环,通常与分支结构中的if一起使用
for ... in ...:
......
if ... :
continue
...
while(条件):
......
if ... :
continue
...
例:要求输出1到50之间所有5的倍数,5,10,15,20.....
for item in range(1,51):
if item%5!=0:
continue
print(item)
5
10
15
20
25
30
35
40
45
50
else语句
与else语句配合使用的三种情况( if ,else ,while )
if......:
.....
else:
......
if条件表达式不成立时执行else
while......:
......
else:
......
for......:
......
else:
......
与while,for搭配使用,没有碰到break时执行else
例1:与for搭配使用时,遇到break
for item in range(3):
pwd=input('请输入密码:')
if pwd=='888':
print('密码正确')
break
else:
print('密码不正确')
else: #这里的else是和for搭配使用的
print('对不起,三次密码均错误')
请输入密码:888
密码正确
for item in range(3):
pwd=input('请输入密码:')
if pwd=='888':
print('密码正确')
break
else:
print('密码不正确')
else: #这里的else是和for搭配使用的
print('对不起,三次密码均错误')
请输入密码:777
密码不正确
请输入密码:666
密码不正确
请输入密码:999
密码不正确
对不起,三次密码均错误
例2.与while搭配使用时,遇到break
a=0
while a<3:
pwd=input('请输入密码')
if pwd=='888':
print('密码正确')
break
else:
print('密码不正确')
a+=1
else:
print('对不起,三次密码均错误')
请输入密码888
密码正确
a=0
while a<3:
pwd=input('请输入密码')
if pwd=='888':
print('密码正确')
break
else:
print('密码不正确')
a+=1
else:
print('对不起,三次密码均错误')
请输入密码777
密码不正确
请输入密码999
密码不正确
请输入密码666
密码不正确
对不起,三次密码均错误
嵌套循环
循环结构中又嵌套了另外的完整的循环结构,其中内层循环作为外层循环的循环体执行
例:输出一个三行四咧的矩形
for i in range(1,4): #行数,执行三次,一次是一行
for i in range(1,5): #列数,一行中执行4次输出
print('*',end='\t') #输出的是*,不换行输出
print()
* * * *
* * * *
* * * *
for i in range(1,10):
for j in range(1,i+1):
print(i,'*',j,'=',i*j,end='\t')
print()
1 * 1 = 1
2 * 1 = 2 2 * 2 = 4
3 * 1 = 3 3 * 2 = 6 3 * 3 = 9
4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16
5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25
6 * 1 = 6 6 * 2 = 12 6 * 3 = 18 6 * 4 = 24 6 * 5 = 30 6 * 6 = 36
7 * 1 = 7 7 * 2 = 14 7 * 3 = 21 7 * 4 = 28 7 * 5 = 35 7 * 6 = 42 7 * 7 = 49
8 * 1 = 8 8 * 2 = 16 8 * 3 = 24 8 * 4 = 32 8 * 5 = 40 8 * 6 = 48 8 * 7 = 56 8 * 8 = 64
9 * 1 = 9 9 * 2 = 18 9 * 3 = 27 9 * 4 = 36 9 * 5 = 45 9 * 6 = 54 9 * 7 = 63 9 * 8 = 72 9 * 9 = 81
二重循环中的break和continue
二重循环中的break和contiue用于控制本层循环
流程控制语句break与continue在二重循环中的使用
例:
for i in range(5): #代表外层循环中要执行5次
for j in range(1,10):
if j%2==0:
break
print(j)
1
1
1
1
1
for i in range(5):
for j in range(1,10):
if j%2==0:
continue
print(j,end='\t')
print()
1 3 5 7 9
1 3 5 7 9
1 3 5 7 9
1 3 5 7 9
1 3 5 7 9
内置函数range()
内置函数:不需要加任何前缀,可以直接使用的函数(print,input都属于内置函数)
range()函数
用于生成一个整数序列
创建range对象的三种方式:
1.range(stop):创建一个[0,stop)之间的整数序列,步长为1
2.range(start,stop):创建一个[start,stop)之间的整数序列,步长为1
3.range(start,stop,step):创建一个[start,stop)之间的整数序列,步长为step
返回值是一个迭代器对象
range类型的特点:不管range对象表示的整数序列有多长,所有range对象占用的内存空间都是相同的,因为仅仅需要存储start,stop和step,只有当用到range对象时,才会去计算序列中的相关元素
in与not in 判断整数序列中是否存在(不存在)指定的整数
1.第一种创建方式:只有一个参数(小括号中只给了一个数)
a=range(10)
print(a)
range(0, 10)
print(list(a)) #用于查看range对象中的整数序列,默认从0开始,默认相差1称为步长,list是列表的意思
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2.第二种创建方式:给了两个参数(小括号中给了两个数)
a=range(1,10) #指定了起始值,从1开始,到10结束(不包括10),默认步长1
print(list(a))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
3.第三种创建方式:给了三个参数(小括号中给了三个数)
a=range(1,10,2)
print(list(a)) #指定了起始值,从1开始,到10结束(不包括10),指定了步长2
[1, 3, 5, 7, 9]
判断指定的整数,在序列中是否存在 in与not in
print(10 in a)
False
print(9 in a)
True
print(10 not in a)
True
print(9 not in a)
False
对象的布尔值
python一切皆对象,所有的对象都有一个布尔值
获取对象的布尔值,使用内置函数bool()
测试对象的布尔值,以下对象的布尔值为False,其它对象的布尔值均为True
print(bool(False))
False
print(bool(0)) #数字0
False
print(bool(0.0))
False
print(bool(None))
False
print(bool('')) #长度为零的空字符串
False
print(bool("")) #长度为零的空字符串
False
print(bool([])) #空列表
False
print(bool(list())) #空列表
False
print(bool()) #空元组
False
print(bool(tuple())) #空元组
False
print(bool({})) #空字典
False
print(bool(dict())) #空字典
False
对象的布尔值对执行的影响,例:
age=int(input('请输入您的年龄:')) #输入的0的布尔值为False
请输入您的年龄:0
if age:
print(age)
else:
print('年龄为:',age) #因为布尔值是False,所以执行了else
年龄为: 0
最后,依然是推荐蚂蚁老师的《零基础学Python》的系列课程: