流程控制
-
顺序结构:代码从上往下一条一条的执行,而且每条代码只执行一次 (默认)
如:
print('======') print('++++++') print('------') #以上就是按顺序执行每一条语句
-
分支/选择结构:满足某个条件才执行某段代码,如果条件不满足就不执行或者执行其他的代码
-
单分支结构 - - -
if
语法:
if 条件语句: 代码段 ''' 说明: 1) if - 关键字;固定写法 2) 条件语句 - 任何有结果的表达式(赋值语句不可以):具体的数据、已经赋值过的变量、运算表达式 3) : - 固定写法,不能省略 4) 代码段 - 和if保持一个缩进(一般用tab键产生)的一条或者多条语句;就是满足条件才执行的代码 执行过程:如果条件语句为True(成立),就执行代码段,否则代码段不执行 ''' #实例:如果指定的数据是奇数就控制台打印'奇数' num = 29 # 方法一: if num % 2 != 0: print('奇数') # 方法二: if num % 2: print('奇数') ''' 打印结果: 奇数 '''
-
双分支结构 - - -
if...else...
语法:
''' 固定语法: if 条件语句: 代码段1(条件成立的时候会执行的代码) else: 代码段2(条件不成立的时候会执行的代码) ''' #实例: age = 89 if age < 18: print('未成年') else: print('成年') print('是个人!') ''' 打印结果为: 成年 是个人! '''
-
-
循环结构:让代码重复执行多次
-
if
-
if
多分支——elif
用法:根据不同的条件做不一样的事情,但是要求条件之间存在:其中某一个条件成立了,另外的其他条件一定不会成立
语法:
''' if 条件语句1: 代码段1 elif 条件语句2: 代码段2 elif 条件语句3: 代码段3 ... else: 代码段N '''
实例:
# 实例1 :根据分数对成绩进行评级:A(90 ~ 100)、B(80 ~ 89)、C(60~79)、D(60分以下),分数是有效的百分制分数 score = 30 if score >= 90: print('A') elif score >= 80: print('B') elif score >= 60: print('C') else: print('D') # 打印结果为:D
# 实例2:定义两个变量保存⼀个⼈的身⾼和体重,编程实现判断这个⼈的身材是否正常! # 公式: 体重(kg) / (身高(m)的平方值 ) 是否在18.5 ~ 24.9之间打印正常、偏瘦或者偏重。 height = 1.55 #身高 weight = 44 #体重 result = weight / height ** 2 if result < 18.5: print('偏瘦') elif result > 24.9: print('偏重') else: print('正常')
-
if
嵌套实例:
# 实例:判断一个数是否是偶数,如果是打印'偶数'否则打印'奇数',同时判断这个数是否是4的倍数,如果是打印'4的倍数' num = 20 if num % 2 == 0: print('偶数') if num % 4 == 0: print('4的倍数') else: print('奇数') # 打印结果为: ''' 偶数 4的倍数 '''
-
-
for
for
语法:''' for 变量 in 序列: 循环体 ''' ''' #for循环说明: 1)for、in - 关键字;固定写法 2)变量 - 变量名 3)序列 - 容器型数据类型的数据,例如:字符串、列表、字典、元组、集合、迭代器、生成器、range等 4)循环体 - 和for保持一个缩进的一条或者多条语句;循环体就是需要重复执行的代码 执行过程: 让变量去序列中取值,一个一个的取,取完为止,每取一个值就执行一次循环体。(序列中元素的个数决定了循环的次数) ''' #实例 for x in 'abc=+-': print('+++', x) ''' 打印结果为: +++ a +++ b +++ c +++ = +++ + +++ - '''
range
函数 - - - 产生一个指定范围的数字序列
range
函数说明以及实例''' range(N) - 产生[0,N)的数字序列, N必须大于0,每次数字增加1 range(M,N) - 产生[M,N)的数字序列,M < N, 每次数字增加1 range(M,N, ''' #实例1:统计10以内能被3整除数的个数 count = 0 for num in range(0, 10, 3): count += 1 print('10以内能被3整除数的个数为:',count) ''' 打印结果为: 10以内能被3整除数的个数为:3 ''' # 实例2:计算1~20中所有能被3整除但是不能被5整除的数的和 s = 0 # 用来保存最后的和 for x in range(3, 20, 3): if x % 5 != 0: s += x print('和:', s) ''' 打印结果为: 和:48 '''
-
while
循环while
语法''' while 条件语句: 循环体 ''' ''' 说明: 1)while - 关键字;固定写法 2)条件语句 - 任何有结果的表达式 3)循环体 - 和while保持一个缩进的一条或者多条语句;循环体就是需要重复执行的代码段 执行过程: 先判断条件语句是否为True,为True就执行循环体,执行完再判断条件语句是否为True,为True就执行循环体,... 以此类推,直到判断条件语句的时候结果为False,整个循环就结束。 '''
实例:
#实例1:打印1~5 num = 1 while num < 6: print(num) num += 1 ''' 打印结果为: 1 2 3 4 5 ''' # 进阶实例2:写一个猜数字游戏 # 程序开始的时候随机产生一个100以内的数,用户通过输入的方式来猜数字,如果猜对了游戏结束,如果猜错了给出提示信息:大了、小了 from random import randint # 引入随机数 robot = randint(0,99) #产生0~99的随机数 count = 1 print(robot) user =int( input('猜数字(请输入0~99的数,猜猜机器产生了什么数字) 请输入:')) while user != robot: if user < robot: print('很可惜猜小了!再来一次') count += 1 else: print('很可惜猜大了!别气馁再来一次') count += 1 user =int( input('猜数字(请输入0~99的数,猜猜机器产生了什么数字) 请输入:')) else: if count < 10 : print('恭喜你!%d次就猜对了,简直是运气王,数字为:%d'%(count,robot)) else: print('恭喜你!%d次就猜对了,运气有点背!,数字为:%d'%(count,robot))
-
循环关键字
-
continue
:结束一次循环(当执行循环体的时候遇到continue,当次循环结束,直接进入下次循环的判断)#实例1 : for x in range(5): print('====') continue print('++++') ''' 打印结果: ==== ==== ==== ==== ==== '''
-
break
:结束整个循环(当执行循环体的时候遇到break,整个循环直接结束)# 实例1 for x in range(5): print('xxx') break print('hello') ''' 打印结果: xxx '''
-
-
作业
基础题
-
根据输入的成绩的范围打印
及格
或者不及格
。from from random import randint grade = randint(0,100) if grade >= 60: print('你的成绩为%d分,及格了'%grade) else: print('你的成绩为%d分,没有及格,还要继续努力!'%grade)
-
根据输入的年纪范围打印
成年
或者未成年
,如果年龄不在正常范围内(0~150)打印这不是人!
。user_age = int(input('请输入你的年龄:')) if user_age >= 18: print('成年') elif 0 <= user_age < 18: print('未成年') else: print('这不是人!')
-
输入两个整数a和b,若a-b的结果为奇数,则输出该结果,否则输出提示信息
a-b的结果不是奇数
。from random import randint a = randint(0,100) b = randint(0,100) if (a - b ) % 2 == 1: print('a-b的结果为奇数:',a-b) else: print('a-b的结果不是奇数')
-
使用for和while循环输出 0~100内所有3的倍数。
# for循环 for i in range(3,100,3): print(i) # while x = 0 while x < 99: x += 3 print(x)
-
使用for和while循环输出100~200内个位数或者十位数能被3整除的数。
# for循环 for i in range(100,201): ones_unit = i % 10 tens = (i // 10 ) % 10 if ones_unit % 3 == 0 or tens % 3 == 0: print(i) # while循环 i = 100 while i <=200: ones_unit = i % 10 tens = (i // 10) % 10 if ones_unit % 3 == 0 or tens % 3 == 0: print(i) i += 1
进阶题
-
使用循环计算
1*2*3*4*...*10
的结果。j = 1 for i in range(1,11): j *= i print('1*2*3*4*...*10的乘积为:',j)
-
统计100以内个位数是2并且能够被3整除的数的个数。
for i in range(0,101): ones_unit = i % 10 if ones_unit == 2 and i % 3 == 0: count += 1 print('100以内个位数是2并且能够被3整除的数的个数为:',count)
-
输入任意一个正整数,求他是几位数?
注意: 这儿不能使用字符串,只能用循环
int1 = int(input("请输入一个正整数:")) count = 0 x = int1 while int1 > 0: int1 //= 10 count += 1 print("%d正整数为%d位"%(x,count))
-
打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字⽴方和等于该数本身。例如:153是
⼀个⽔仙花数,因为
1³ + 5³ + 3³
等于 153。for x in range(1,10): for y in range(1, 10): for z in range(1, 10): i = x*100 + y*10 + z if x**3 + y**3 + z**3 == i: print("水仙花数有:",i) ''' 打印结果: 水仙花数有: 153 水仙花数有: 371 '''
挑战题
-
判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)
-
求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34… (这儿的n可以是任意正整数,可以通过输入来确定)
-
输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
for i in range(1,10): for j in range(1, i+1): print('%d+%d=%d'%(i, j, i*j),end='\t') print(end='\n') ''' 打印结果: 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 '''
-
这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)
for x in range(1,100): for y in range(1, 100): for z in range(1, 100): i = x + y + z j = 3*x + 2*y +0.5*z if i == j == 100: print('大马有%d匹,中马有%d匹,小马有%d匹的时候'%(x,y,z)) ''' 打印结果: 大马有2匹,中马有30匹,小马有68匹的时候 大马有5匹,中马有25匹,小马有70匹的时候 大马有8匹,中马有20匹,小马有72匹的时候 大马有11匹,中马有15匹,小马有74匹的时候 大马有14匹,中马有10匹,小马有76匹的时候 大马有17匹,中马有5匹,小马有78匹的时候 '''