声明:
(1)该学习笔记是根据B站“Python_子木”分享的杨淑娟老师授课的“马士兵Python入门基础版”所整理的。该系列笔记适合初学Python的同学,仅供学习交流。
(2)博主是零基础的Python初学者,撰写笔记是为了更好复盘所学内容。如有错误还望大佬们多多指点,不胜感激!
目录
一、顺序结构
二、对象的布尔值
三、选择结构
1. 单分支结构
2. 双分支结构
3. 多分支结构
4. 分支结构-嵌套if
5. 条件表达式
6. Pass语句
四、循环结构
1. 内置函数range()
2. 循环结构
3. while 循环结构的执行流程
4. for-in 循环
5. 流程控制语句break
6. 流程控制语句continue
7. else 语句
8. 嵌套循环
9. 二重循环中的break和continue
1996年,计算机科学家证明了这样的事实:任何简单或复杂的算法都可以由顺序结构、选择结构和循环结构这三种基本结构组合而成。
计算机的流程控制:顺序结构、选择结构(if语句)、循环结构(while语句、for-in结构)。
一、顺序结构
程序从上到下顺序地执行代码,中间没有任何的判断和跳转,直到程序结束。
二、对象的布尔值
Python一切皆对象,所有对象都有一个布尔值。获取对象的布尔值,使用内置函数bool()。
以下对象的布尔值皆为False:
False、数值0、None、空字符串、空列表、空元组、空字典、空集合。
其他均为True。
#以下对象的布尔值为false,其他均为true print(bool(False)) print(bool(0)) print(bool(0.0)) print(bool(None)) print(bool(''))#空字符串 print(bool([]))#空列表 print(bool(list()))#空列表 print(bool(()))#空元组 print(bool(tuple()))#空元组 print(bool({}))#空字典 print(bool(dict()))#空字典
三、选择结构
程序根据判断条件的布尔值选择性地执行部分代码,明确地让计算机知道在什么条件该去做什么。
【选择取款操作】--->【输入取款金额】--->【余额是否充足】---True--->【吐出钞票】
---False--->【提示余额不足】
1. 单分支结构
中文语义:如果……就(如果下雨就带伞);
语法结构:if 条件表达式:
条件执行体
#单分支结构 money=1000 s=int(input('请输入取款金额')) if money>=s: #条件表达式,判断余额是否充足 money=money-s print('取款成功,余额为:',money)
2. 双分支结构
中文语义:如果……就……不满足就……
语法结构:if 条件表达式:
条件执行体1
else:
条件执行体2
#双分支结构 #用户输入一个整数,让程序判断奇偶 num=int(input('请输入一个整数')) if num%2==0: print(num,'是偶数') else: print(num,'是奇数')
3. 多分支结构
中文语义:是……吗?不是
是……吗?不是
……
是……吗?是
语法结构:if 条件表达式1:
条件执行体1
elif 条件表达式2:
条件执行体2
else:
条件执行体
#从用户处录入一个整数成绩,90-100A,80-89B,70-79C,60-69D,0-59E,小于0或大于0为非法数据 score=int(input('请输入成绩')) if 90<=score<=100: print('A') elif 80<=score<=89: print('B') elif 70<=score<=79: print('C') elif 60<=score<=69: print('D') elif 0<=score<=59: print('E') else: print('非法数据')
4. 分支结构-嵌套if
语法结构:
if 条件表达式:
if 内层条件表达式1:
内层条件执行体1
else:
内层条件执行体2
else:
条件执行体
'''会员:购物金额>=200,8折 >=100,9折 非会员:购物金额>=200,9.5折''' answer=input('请问您是会员吗?yes/no') money=float(input('请输入你的购物金额')) if answer=='yes': if money>=200: print('打8折,付款金额为:',money*0.8) elif money>=100: print('打9折,付款金额为:',money*0.9) else: print('不打折,付款金额为:',money) else: if money>=200: print('打9.5折,付款金额为:',money*0.95) else: print('不打折,付款金额为:',money)
5. 条件表达式
条件表达式是if...else的简写。
语法结构:x if 判断条件 else y(True时执行前面,False执行后面)。
运算规则:如果判断条件的布尔值为True,条件表达式的赶回值为x,否则条件表达式的返回值为False。
#从键盘录入2个整数,比较两个整数的大小 num_a=int(input('请输入一个整数')) num_b=int(input('请输入另一个整数')) '''if num_a>=num_b: print(num_a,'大于等于',num_b) else: print(num_a,'小于',num_b)''' #用条件表达式简写 #print((num_a,'大于等于',num_b) if num_a>=num_b else (num_a,'小于',num_b)) #美化 print(str(num_a)+'大于等于'+str(num_b) if num_a>=num_b else str(num_a)+'小于'+str(num_b))
6. Pass语句
pass语句:语句什么都不做,只是一个占位符,用在语法上需要语句的地方
什么时候使用:现搭建好了语法结构,还没想好代码怎么写的时候
哪些语句一起使用:if 语句的条件执行体、for-in语句的循环体、定义函数时的函数体。
answer=input('您是会员吗?y/n') #还没想好怎么写,用pass占位 if answer=='y': pass else: pass
四、循环结构
1. 内置函数range()
内置函数range()用于生成一个整数序列。
创建range()对象的三种方式:
(1)range(stop):创建一个[0,stop)之间的整数序列,步长为1;
(2)range(start,stop):创建一个[start,stop)之间的额整数序列,步长为1;
(3)range(start,step,stop):创建一个[start,stop)之间的额整数序列,步长为step。
返回值是一个迭代器对象。
range类型的优点:不管range对象表示的整数序列有多长,所有range对象所占用的内存空间是相同的,因为仅仅需要存储start、stop和step,只有当用到range对象时,才会去计算序列中的相关元素。
in 与not in 判断整个序列中是否存在/不存在指定整数。
#只有一个参数 r=range(10) print(r)#结果是一个迭代器对象 print(list(r))#查看序列中的具体数据,list是列表的意思,默认从0开始,相差1(步长);结果不包含10 #两个参数 r=range(2,10) print(list(r)) #三个参数 r=range(0,10,2)#步长为2 print(list(r)) #判断指定的整数,在序列中是否存在in,not in print(10 in r) print(8 in r) print(10 not in r) print(8 not in r)
2. 循环结构
循环结构指反复做同一件事情的情况称为循环。
循环结构的流程图(图源网络):
循环的分类:while、for- in。
语法结构:
while 条件表达式
条件执行体(循环体)
选择结构的 if 与循环结构 while 的区别:if 是判断一次,条件为True执行一行;while 是判断N+1次,条件执行体为N次。
3. while 循环结构的执行流程
四步循环法:初始化变量、条件判断、条件执行体(循环体)、改变变量。
#选择结构 a=1 if a<10: print(a) #循环结构 a=1 while a<10: print(a) a+=1 #计算0-4的累加和 sum=0 a=0 while a<5: sum+=a a+=1 print('和为:',sum) #计算1-100之间的偶数和 sum=0 a=1 while a<=100: if a%2==0: sum+=a a+=1 print('偶数和为:',sum) #1-100之间的奇数和 sum=0 a=1 while a<=100: if a%2: sum+=a a+=1 print('奇数和:',sum) #同方法计算1-100偶数和 sum=0 a=1 while a<=100: if not bool(a%2): sum+=a a+=1
4. for-in 循环
in表示从字符串、序列等中依次取值,又称为遍历。
for- in遍历的对象必须是可迭代对象。
for-in 的语法结构:for 自定义变量 in 可迭代对象:
循环体
当循环体内不需要访问自定义变量时,可以将自定义变量替代为下划线。
#in 表示从(字符串、序列等)中依次取值 #字符串 for item in "Python": print(item) #将"Python"依次赋值给item #序列 #range()产生整数序列——也是一个可迭代对象 for i in range(10): print(i) #如果在循环体中不需要使用自定义变量,可将变量写为"_" for _ in range(5): print('加油学python') #使用for循环,计算1-100之间的偶数和 sum=0 for item in range(1,101): if item%2==0: sum+=item print(sum) #输出100-999之间的水仙花数 #水仙花数:153=3*3*3+5*5*5+1*1*1 for item in range(1,1000): ge=item%10 shi=item//10%10 bai=item//100 #print(bai,shi,ge) if ge**3+shi**3+bai**3==item: print(item)
5. 流程控制语句break
break语句用于结束循环结构,通常与分支结构 if 一起使用(非正常结束循环)
#从键盘录入密码,最多录入3次,如果正确结束循环(for-in方法) for item in range(3): pwd=input('请输入密码') if pwd=='8888': print('密码正确') break else: print('密码错误') #while方法 a=0 while a<3: pwd=input('请输入密码') if pwd=='8888': print('密码正确') break else: print('密码错误') a+=1 #注意要改变变量,不然不会结束循环
6. 流程控制语句continue
continue语句用于结束当前循环,进入下一次循环,通常与分支结构中的 if 一起使用。
#输出1-50之间所有5的倍数 #方法一 for item in range(1,51): if item%5==0: print(item) #方法二,使用continue for item in range(1,51): if item%5!=0: continue print(item)
7. else 语句
与 else 语句搭配使用的三种情况:if……:…… else: ……;while……:…… else: ……;for……:…… else: ……。
#for-in语句 for item in range(3): pwd=input('请输入密码') if pwd=='8888': print('密码正确') break else: print('密码错误') else: print('对不起,三次密码输入错误') #while语句 a=0 while a<3: pwd=input('请输入密码') if pwd=='8888': print('密码正确') else: print('密码错误') a+=1 else: print('对不起,三次密码输入错误')
8. 嵌套循环
嵌套循环是指循环结构中又嵌套了另外的完整的循环结构,其中内层循环做为外层循环的循环执行。
#输出一个三行四列的矩阵 for i in range(1,4): for j in range(1,5): print('*',end='t') print() #输出一个九行的直角三角形 for i in range(1,10): for j in range(1,i+1): print('*',end='t') print() #输出九九乘法表 for i in range(1,10): for j in range(1,i+1): print(j,'*',i,'=',j*i,end='t') print()
9. 二重循环中的break和continue
二重循环中的break和continue用于控制本层循环。
for i in range(5): for j in range(1,10): if j%2==0: break print(j) for i in range(5): for j in range(1,10): if j%2==0: continue print(j,end='t') print()