流程控制
1.顺序流程
代码自上而下的执行。
2.选择流程/分支流程
根据在某一步的判断有选择的执行相应的逻辑。
2.1单分支
if语句
if 条件表达式:代码代码...
2.2双分支
if-else语句
if 条件表达式:代码代码...
else:代码代码...
2.3多分支
if-elif-else语句
if 条件表达式:代码代码...
elif 条件表达式:代码代码...
elif 条件表达式:代码代码...
elif 条件表达式:代码代码...
....................
else:代码代码...
代码会了多分支另两个就会了所以不举例了,内容瞎写的没有逻辑:
a=int(input())
if a>90:print("优秀")pass #空语句
elif a>80:print("a==b")pass
else:print("a<b")pass
pass是空语句,试了一下不写pass也可以
else是选配,根据实际情况设计
和电脑玩剪刀石头布小程序:
import random #引入生成随机数的库
#0:石头 1:剪刀 2:布
person=int(input('请玩家输入:'))
comp=random.randint(0,2) #电脑随机生成一个位于0-2的随机整数
if person==0 and comp==1 or person==1 and comp==2 or person==2 and comp==0:print('你赢了!')pass
elif person==0 and comp==0 or person==1 and comp==1 or person==2 and comp==2:print('平局!')pass
else:print('你输了!')pass
print(comp)
嵌套循环:
xuefen=int(input('请输入学分:'))
grade=int(input('请输入成绩:'))
if xuefen>10:if grade>=80:print('恭喜考的很好')passelse:print('很遗憾,成绩不好')passpass
else:print('很遗憾学分不够')pass
3.循环流程
在满足一定的条件时,一直重复的执行某段代码逻辑。循环可以将相似/相同的代码操作变得更加简洁,使得代码可以重复利用。
3.1 while循环
while 条件表达式:代码代码...
while循环的计数量一般都有初始值
计数值自增/自减,否则会导致死循环
循环次数不确定
index=1
while index<=100:print(index)index+=1 #不可以用index++,会报错
打印九九乘法表:
index=1
j=1
while index<=9:j=1while j<=index:print('{}*{}={}'.format(index,j,index*j),end=" ") #注意这里的end一定要加,不然就会默认打完直接换行,就不能三角形显示了j+=1passprint() #换行用,如果print('\n')就直接换两行了index+=1pass
或是:
index=1
j=1
while index<=9:j=1while j<=index:print('%d*%d=%d'%(index,j,index*j),end=" ")j+=1passprint()index+=1pass
如果不加end的话就会:
打印倒三角:
while index<=9:j=1while j<=10-index:print('%d*%d=%d'%(index,j,index*j),end=" ")j+=1passprint()index+=1pass
打印三角:
row=10
while row>=1:j=1while j<=row:print('*',end=" ")j+=1passrow-=1print()pass
打印等腰三角形:
row=1
while row<=5: #5是三角形的行数ta=1while ta<=5-row: ta+=1print(' ',end=" ")passwhile ta<5-row+2*row:ta+=1print('*',end=" ")passprint()row+=1pass
2.2 for循环
for ... in 集合对象:代码代码...
集合对象可以是列表、数组、字符串等,for循环可以用于遍历序列。
tags='我是一个好人'
for item in tags:print(item)pass
for item in 'I love you':print(item)
range函数可以生成一个数据集合列表
range(起始值,结束值,步长),步长不能为0
range(起始值,结束值) 默认步长是1
for i in range(1,100,2):print(i,end=' ')pass
for i in range(1,100,2):print(i,end=' ')pass
用for循环嵌套打印九九乘法表:
for i in range(1,10):for j in range(1,10):if i<j:print('%2d*%2d=%2d'%(i,j,i*j),end=' ')passelse:continuepasspassprint()pass
3. break和continue
break和continue只能用在循环中。
3.1 break
break表示中断、退出循环。
sum=0
for i in range(1,51):if sum>100:print('循环执行到%d退出'%i)breakpasssum+=ipass
print(sum)
3.2 continue
continue表示退出本次循环,继续下次循环。
sumj=0
sumo=0
sum=0
for i in range(1,51):sum+=iif i%2==0:sumo+=icontinuepasssumj+=ipass
print('奇数和是%d'%sumj)
print('偶数和是%d'%sumo)
print('总和是%d'%sum)
4.短路运算
4.1 for-else结构
for i in range(1,11):print(i,end=' ')if i>=5:break #有break的话,for循环结束后的else不执行passpass
else:print('循环执行结束')
for i in range(1,11):print(i,end=' ')pass
else:print('循环执行结束')
即如果是因为break结束的循环就不会执行else,如果是正常执行的就执行else,可以用于查找信息失败的时候给出相应提示的情况
username='haha'
pwd='xixi'
for i in range(3): #循环三次u=input('请输入用户名')p=input('请输入密码')if u==username and p==pwd:print('登陆成功')breakpasspass
else:print('用户名密码错误三次,已锁!')
4.2 while-else语句
和for-else一样,如果因为break结束循环,则不执行else后面的语句,如果是正常结束,则执行。
username='haha'
pwd='xixi'
i=1
while i<=3: #循环三次i+=1u=input('请输入用户名')p=input('请输入密码')if u==username and p==pwd:print('登陆成功')breakpasspass
else:print('用户名密码错误三次,已锁!')
5. 实践
5.1 猜年龄小游戏
sign='Y'
age=16
flag=1
while sign=='Y' or sign=='y':index=1while index<=3:guage=int(input('请输入猜测的年龄:'))if guage==age:print('恭喜猜对了!')flag=0breakpasselse:print('很遗憾,请重新输入')passindex+=1passif flag==0:breakpasselse:sign=input('请输入是否继续:')passpass
5.2 计算BMI指数
tall=1.75
weigh=80.5
t=tall*tall
B=weigh/t
if B<18.5:print('您的BMI指数是%d,过轻'%B)pass
elif B>=18.5 and B<25:print('您的BMI指数是%d,属于正常范围'%B)pass
elif B>=25 and B<28:print('您的BMI指数是%d,过重'%B)pass
elif B>=28 and B<32:print('您的BMI指数是%d,肥胖'%B)pass
else:print('您的BMI指数是%d,严重肥胖'%B)pass