目录
1.程序的组织结构
计算机的基本结构:顺序结构、选择结构、循环结构
1.1 顺序结构
程序从上到下顺序地执行代码,中间没有任何的判断和跳转,直到程序结束
1.2 选择结构(分支结构)
1.2.1 单分支结构
表示:如果...就...
money=100
s=int(input('请输入你的取款金额'))
if money>=s:
money = money - s
print('您的余额剩余:',money)
#结果:
#请输入你的取款金额120,没有后续了
#请输入你的取款金额40
您的余额剩余: 60
1.2.2 双分支结构
表示:如果...不满足...就....
if 条件表达式:
条件执行体1
else:
条件执行体2
money=100
s=int(input('请输入取款金额'))
if money>=s:
money=money-s
print('取款成功,所剩余额为:',money)
else:
print('余额不足,所剩余额为:',money)
#结果:
输入金额小于等于100,如10
请输入取款金额10
取款成功,所剩余额为: 90
#输入金额大于100,如:220
请输入取款金额200
余额不足,所剩余额为: 100
1.2.3 多分支结构
语法结构:
if 条件表达式1:
条件执行体1
elif 条件表达式2:
条件执行体2
elif 条件表达式N:
条件执行体N
[else:]
条件执行体N+1
#录入一个整数成绩,判断成绩的范围
#90-100为A;80-89为B,70-79为C,60-69为D,0-59为E,小于0或者大于100为非法数据
a=int(input('请录入一个整数成绩'))
if a>=90 and a<=100:
print('您的成绩为A等')
elif 80<=a<=89:
print('您的成绩为B等')
elif 70<=a<=79:
print('您的成绩为C等')
elif 60<=a<=69:
print('您的成绩为D等')
elif 0<=a<=59:
print('您的成绩为不合格')
else:print('您输入的数错误,不在0-100之间')
1.2.4 分支结构-嵌套if的使用
语法结构:
if 条件表达式1:
if 内层条件表达式
内存条件执行体1
else:
内存条件执行体2
else:
内存条件执行体
#会员:购买金额大于200,打8折,大于等于100,打9折;
#非会员:购买大于等于200,打9.5折,其余情况不打折
answer=input('您是会员吗?y/n')
money=float(input('您的购物金额是:'))
if answer=='y':
print('您是会员')
if money>=200:
print('8折,付款金额为:',money*0.8)
elif 100<=money<200:
print('9折,付款金额为:',money*0.9)
else:print('小于100不打折哦,付款金额为:',money)
else:
print('您是非会员')
if money>=200:
print('打9.5折,付款金额为:',money*0.95)
else:
print('不打折')
1.2.5 条件表达式
判断条件表达式后,根据真、假来执行对应侧的代码。条件表达式为真,则执行左侧的代码,条件表达式为假,则执行右侧的代码。
a=int(input('请输入一个整数'))
b=int(input('请再输入一个整数'))
"""if a>=b:
print(a,'大于等于',b)
else:
print(a,'小于',b)
"""
print('用条件表达式来进行比较')#简化上述注释掉的代码
print((a,'大于等于',b) if a>=b else (a,'小于',b))#条件判断的结果为True则执行左侧的代码;条件判断结果为False,则执行右侧的代码
#转换类型后,输出结果更美观
print((str(a)+'大于等于'+str(b)) if a>=b else (str(a)+'小于'+str(b)))
#结果
请输入一个整数10
请再输入一个整数23
用条件表达式来进行比较
(10, '小于', 23)
10小于23
这边条件表达式会受bool对象值的影响。比如if...else,结果为真或假,bool值的真假,会影响走的哪个执行体语句
age=int(input('输入您的年龄'))
if age:
print('你好')
else:
print('年龄为:',age)
#结果,输入年龄为0则执行的是else的语句,因为bool(0)的值是False,所以才执行else这句
输入您的年龄0
年龄为: 0
#而,如果输入的年龄为18,bool(18)的值是True,所以执行的是if的语句,所以输出的是:你好
输入您的年龄18
你好
1.2.6 pass语句
语句只是一个占位符,什么都不用做,用在语法上需要语句的地方
什么时候使用:先搭建语法结构,还没想好代码怎么写的时候
哪些语句一起使用:
if语句的条件执行体
for-in语句的循环体
定义函数时的函数体
1.3 循环结构
1.3.1 while循环
while 条件表达式:
条件执行体(循环体)
i=0
while i<=4:
i+=1
print(i)
print(i)
#结果:
1
2
3
4
5
5
使用while循环去计算 1-100之间的偶数求和:
四步循环法:
初始化变量
条件判断
条件执行体(循环体)
改变变量
sum=0
i=0
while i<=100:
if i%2==0:
sum+=i
i+=1
print(sum)
#结果:
2550
或者如下代码:因为i%2的bool值为0是false,所以进入循环体的是非0,非0的话那么i就是奇数,所以当i%2等于0的计算的是奇数和;所以要算偶数和就要加上not ,即not false为true。
sum=0
i=0
while i<=100:
if not i%2:
sum+=i
i+=1
print(sum)
1.3.2 for -in循环
in表达从(字符串,序列等)中依次取值,又称为遍历
for -in 遍历的对象必须是可迭代对象
for -in的语法结构:
for 自定义的变量in可迭代对象:
循环体
for i in '好好学习':
print(i)
for i in range(1,5):
print(i)
#range()函数是一个可迭代的对象,range(1,5)里面是(1,2,3,4),整体表示是i在循环中执行的次数4次
#结果:
好
好
学
习
1
2
3
4
range()函数祥看第三点。
循环体内不需要访问自定义变量,可以将自定义变量替代为下划线
for _i in range(3):
print('你在干嘛')
for _a in range(1,3):
print('去吃饭')
#结果:
你在干嘛
你在干嘛
你在干嘛
去吃饭
去吃饭
使用for -in循环去计算1-100之间的偶数和
sum=0
i=0
for i in range(1,101):
if i%2==0:
sum+=i
print(sum)
#结果:
2550
使用for -in去得出100-999之间的水仙花数(个位数的三次方+十位数的三次方+百位数的三次方=该数)
for i in range(100,1000):
g=i%10
s=i//10%10
b=i//100
#print(b,s,g)
if b**3+s**3+g**3==i:
print(i)
#结果:
153
370
371
407
2.bool对象的布尔值
python一切皆有对象,所有的对象都有一个布尔值
获取对象的布尔值:使用内置函数bool()
以下对象的布尔值为False,其他的都为true。
False,数值(),None,空字符串,空列表,空元组,空字典,空集合
#测试对象的bool值
print(bool(False))
print(bool(0))#数值0
print(bool(0.0))#数值0.0
print(bool(None))
print(bool(''))#空字符串(长度为0的字符串对象)
print(bool(""))#空字符串(长度为0的字符串对象)
print(bool([]))#空列表
print(bool(list()))#空列表
print(bool(()))#空元组
print(bool(tuple()))#空元组
print(bool({}))#空字典
print(bool(dict()))#空字典
print(bool(set()))#空集合
#结果:
False
False
False
False
False
False
False
False
False
False
False
False
False
3.range()函数
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判断整数序列中是否存在(不存在)指定的整数
r=range(10)
print(r)
print(list(r))
q=range(2,10)
print(q)
print(list(q))
e=range(1,10,2)
print(list(e))
print(10 in e)
#结果:
range(0, 10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
range(2, 10)
[2, 3, 4, 5, 6, 7, 8, 9]
[1, 3, 5, 7, 9]
False
4.流程控制语句
4.1 break语句
用于结束循环结构,通常与分支结构if一起使用
密码输入三次,三次错误则退出程序,如果一旦正确就退出程序
(for -in)循环的方式:
for i in range(3):
pwd=input('请输入密码')
if pwd=='1234':
print('密码正确')
break
else:print('密码输入错误')
#结果:
请输入密码12
密码输入错误
请输入密码33
密码输入错误
请输入密码1234
密码正确
while循环的方式:
i=0
while i<3:
pwd=input('请输入密码')
if pwd=='1234':
print('密码正确')
break
else:print('密码输入错误')
i+=1
#结果:
请输入密码1
密码输入错误
请输入密码1
密码输入错误
请输入密码1
密码输入错误
4.2 continue语句
用于结束当前循环,进入下一次循环。通常与分支结构中的if一起使用
例子:要求输入1-50之间的所有5的倍数
for i in range(1,51):
if i%5!=0:
continue
else:print(i)
4.3 else语句
if else。
while else;for else:如果没有碰到break时执行else
for..else:
for i in range(3):
pwd=input('请输入密码')
if pwd=='1234':
print('密码正确')
break
else:print('密码不正确')
else:print('三次密码均输入错误')
#结果:
请输入密码q去、
密码不正确
请输入密码1
密码不正确
请输入密码1
密码不正确
三次密码均输入错误
while..else:
i=0
while i<3:
pwd=input('请输入密码')
if pwd=='1234':
print('密码正确')
break
else:print('密码错误')
i+=1
else:print('输入三次密码均错误')
5.嵌套循环
循环结构中又嵌套了另外的完整的循环结构,其中内层循环做为外层循环的循环执行体。
示例:输出三行四列的加油
#输出三行四列的循环
for i in range(1,4):#行数要执行三次,一次是一行
for a in range(1,5):
print('加油',end='\t')#不换行输出
print()#换行
#结果
加油 加油 加油 加油
加油 加油 加油 加油
加油 加油 加油 加油
示例:输出九九乘法表
for i in range(1,10):#行数要执行九次,一次是一行
for a in range(1,i+1):#星的个数与行数相等,所以第一行从从1开始,到1结束,即(1,i+1)
print('*',end='\t')
print()
#结果:
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
* * * * * * * *
* * * * * * * * *
for i in range(1,10):#行数要执行九次,一次是一行
for a in range(1,i+1):#星的个数与行数相等,所以第一行从从1开始,到1结束,即(1,i+1)
print(i,'*',a,'=',i*a,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
6.二重循环中的break和continue
二重循环中的break和continue用于控制本层循环
break:
for i in range(5):
for a in range(1,11):
if a%2==0:
break
print(a)
#结果:
1
1
1
1
1
#可查看断点,当i=1,a=1时,a%2!=0,所以是打印a
#当i=1,a=2时,a%2==0,所以是break,但是不会去打印a,而是退出内层循环,进入for循环,即i=2,a=1,继续a%2!=0循环往复。
#所以内存循环一直都是循环一次,而不会影响外层循环,所以fou的i一直在循环5次得出5个1
continue:当层循环结束后再一次继续循环
for i in range(5):
for a in range(1,11):
if a%2==0:
continue
print(a,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