声明:
(1)该学习笔记是根据B站“Python_子木”分享的杨淑娟老师授课的“马士兵Python入门基础版”所整理的。该系列笔记适合初学Python的同学,仅供学习交流。
(2)博主是零基础的Python初学者,撰写笔记是为了更好复盘所学内容。如有错误还望大佬们多多指点,不胜感激!
目录
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()