Python学习 day2-2021.2.28(判断语句与循环控制)


Python入门课程系列:

  • Python学习 day1:认识Python

简介

流程:就是计算机执行代码的顺序;
流程控制:对计算机代码执行的顺序进行有效的管理,只有流程控制才能实现在开发当中的业务逻辑

流程控制的分类

  1. 顺序流程:就是代码一种自上而下的执行结构,也是python默认的流程

  2. 选择流程/分支流程:根据在某一步的判断,有选择的去执行相应的逻辑的一种结构(if else)

    • 单分支
      if条件句:if 条件表达式:代码指令

    • 双分支

      if-else语句:if 条件表达式:代码指令 else 条件表达式:代码指令

    • 多分支
      if elif语句

  1. 循环流程:在 一定的条件下,一直重复的去执行某段代码的逻辑(while循环和for循环)

(条件表达式可以是比较运算符/逻辑运算符/复合的运算符)

⚠️1. if-else语句

if-else

单分支:

#if 条件表达式:比较运算符/逻辑运算符/符合条件的表达式
#   代码指令
#   ......
 score=60
 if score<=60: #满足条件会输出打印提示
     print('成绩不是太理想,要继续加油哦')
     pass #pass就是隔开代码用的,是怕复制代码时漏了缩进符,导致if条件语句判断错误
 print('语句运行结束')

双分支:

 #if 条件表达式:比较运算符/逻辑运算符/符合条件的表达式
 #   代码指令
 #else:
 #   代码指令
 score=int(input('请输入您的成绩'))
 if score>60:
     print("及格")
     pass
 else:
     print('不及格,继续努力')
     pass #空语句

多分支:

 # if 条件表达式:比较运算符/逻辑运算符/符合条件的表达式
 #   代码指令
 # elif 条件表达式:
 #   代码指令
 # ......
 #   else:
 #❗️特征:
 # 1.只要满足其中一个分支,就会退出本层if语句结构。【必定会执行其中一个分支】
 # 2.至少有2种情况可以选择
 # elif后面必须写上条件和语句
 # else是选配,根据实际情况来写
 score=int(input('请输入您的成绩'))
 if score>=80:
     print("优秀")
     pass
 elif score<80 and score >60:
     print('及格')
     pass
 else:
     print('不及格')
     pass
 print('程序运行结束')

猜拳小游戏:

 import random
 person=int(input('请出拳:[0:石头 1:剪刀 2:布]'))
 computer=random.randint(0,2)
 if person==0 and computer ==1 or person==1 and computer ==2 or person==2 and computer ==0:
     print('厉害了..你赢了')
     pass
 elif person == computer:
     print('不错,居然是平手')
     pass
 else:
     print('哈哈,你输了吧')

#if-else嵌套使用
学分=int(input("请输入您的学分"))
if 学分>10:
    grade=int(input('请输入您的成绩'))
    if grade>80:
        print('恭喜,你可以升班了')
        pass
    else:
        print('您的成绩不达标')
        pass
    pass
else:
    print("您的表现不佳")
    pass

⚠️2. while循环

while:适用于对未知的循环次数(用于判断)
for:适用于已知的循环次数(可迭代对象遍历)

while语法结构:while 条件表达式:代码指令

语法特点❗️
1. 有初始值
2. 条件表达式
3. 变量【循环体内计数变量】的自增自减,否则会造成死循环

使用条件:循环的次数不确定,是依靠循环来结束
目的:将相似或相同的代码操作变得更加简洁,使得代码可以重复利用。

#案例1 输出1-100之间的数据
index = 1
while index<=100:
    print(index)
    index+=1 #如果没有这个循环体内计数变量,就会陷入死循环,持续输出1
    pass

#案例2
#猜拳小游戏 连续玩10次
import random
variate=1
while variate <= 10:
    person=int(input('请出拳:[0:石头 1:剪刀 2:布]'))
    computer=random.randint(0,2)
    if person==0 and computer ==1 or person==1 and computer ==2 or person==2 and computer ==0:
        print('厉害了..你赢了')
        pass
    elif person == computer:
        print('不错,居然是平手')
        pass
    else:
        print('哈哈,你输了吧')
        pass
    variate+=1
    pass

#案例3 打印99乘法表
row=9
while row>=1:
    col=1
    while col<=row:
        print('%d*%d=%d'%(row,col,row*col),end='') #end通俗理解就是阻止print自带的换行
        col+=1
        pass
    print()
    row -=1
    pass

#案例4 打印直角三角形
row=1
while row<=7:
    j=1
    while j<=row:
        print('*',end=' ')
        j+=1
        pass
    print()
    row+=1
    pass
#画倒三角
row=7
while row>=1:
    j=1
    while j<=row:
        print('*',end=' ')
        j+=1
        pass
    print()
    row-=1
    pass

#案例5 打印等腰三角形
row=1
while row<=10:
    j=1
    while j<=10-row: #控制打印空格的数量
        print(' ',end='') #print“#”更有助于理解。如果end=''的两个''中间有空格 ,打印的是靠右的直角三角形,
        j+=1
        pass
    k=1
    while k<=2*row-1: #控制打印*号
        print('*',end='')
        k+=1
        pass
    print()
    row+=1

⚠️3. for循环

for跟while循环一样也可以完成循环(while能做的for也能做)

  • for循环格式
    for 临时变量 in 字符串,列表等
    执行代码块
    执行代码块
  • for循环示例
 a = 'python'
 for i in a:
     print(i)
  • for循环 遍历列表
li = ['a','b','c','d']
for i in li:
  print(i)
# 语法特点:遍历操作,依次的取集合容器中的每个值
# for 临时变量 in 容器:
#       执行代码块

# 案例1
tages='我是一个中国人'
for item in tages:
    print(item)
    pass

# 案例2 求1到100的加和
# range 此函数可以生成一个数据集合列表 格式:range(起始,结束,步长),步长不能为0,range取的数据是左包含右不包含
sum=0
for data in range(1,101):#左包含右不包含
    sum+=data #求累加和
    #print(data,end=' ')
    pass
print('sum=%d'%sum)
#❗️注意range的用法:
print(range(0,5))
#range(0, 5)
print(list(range(0,5)))
#[0, 1, 2, 3, 4]

#案例3 打印50-200见所有的奇数和偶数
for data in range(50, 201):
    if data % 2 == 0:
        print("%d是偶数" % data)
        pass
    else:
        print("%d是奇数" % data)

#案例4 for循环打印九九乘法表
for i in range(1,10):
    for j in range(1, i+1):
        print('%d*%d=%d'%(i,j,i*j),end='')
        pass
    print() #控制换行
    pass

4. break、continue语句

break:退出(for/while)循环;break 语句可以立即终止当前循环的执行,跳出当前所在的循环结构。无论是 while 循环还是 for 循环,只要执行 break 语句,就会直接结束当前正在执行的循环体。
continue:跳过本次循环 ,继续下一次循环(当continue条件满足时 ,本次循环的语句将不再执行,后面的循环继续)
这两个关键字只能用在循环中

#break案例1 猜拳小游戏,赢三次退出游戏
import random
win = 0
while True:  #while是需要接判断表达式,true的话就会一直循环(无限循环),所以要有break退出。
    if win >= 3:
        print('你已经胜利3次')
        break
    else:
        person = int(input('请出拳:[0:石头 1:剪刀 2:布]'))
        computer = random.randint(0, 2)
        if person == 0 and computer == 1 or person == 1 and computer == 2 or person == 2 and computer == 0:
            print('厉害了..你赢了')
            win +=1
            pass
        elif person == computer:
            print('不错,居然是平手')
            pass
        else:
            print('哈哈,你输了吧')
            pass

# break案例2 1到50的加和大于100就退出
sum=0
for item in range(1,51):
    if sum > 100:
        print('循环执行到%d就 退出来了'%item)
        break
        pass
    sum += item
    pass
print("sum = %d"%sum)

#案例3 字符串遍历
for item in 'I love python':
    if item == 'e':
        break
    print(item)

for item in 'I love python':
    if item == 'o':
        continue
    print(item)

5. 多条件与短路运算

for....else...

案例1
for item in range(1,11):
    print(item,end="")
    if item >= 5:
        break
    pass
else:
    print('已经执行完了') #只要上面的循环中出现了break, else的代码都不会执行

案例2 
account = 'hh'
pwd = '123'
for i in range(3):
    zh = input('请输入账号:')
    pd = input('请输入密码:')
    if account==zh and pwd==pd
        print('恭喜您登录成功')
        break
        pass
    else:
        print('您的账号已被系统锁定')

while...else...

index=1
while index<=10:
    print(index)
    if index==6:
        break
    index+=1
    pass
else:
    print('else执行了')
小结

课后练习:

重复练习:

  1. 绘制等腰三角形
  2. 编写剪刀石头布小游戏,人获胜次数超过三次就打印“您已获胜三次”,并退出程序。否则游戏进行10次,打印“您已累计玩了10次”并退出程序。
  3. 分别使用while循环和for循环打印九九乘法表
#第二题
times=0
win=0
while True:
    if win >= 3 and times < 10:
        print('Win 3 times')
        break
    elif times == 10:
        print('Have a break')
        break
    else:
        person = int(input('请输入:(石头=0,剪刀=1,布=2)'))
        import random
        computer = random.randint(0, 2)
        if person == 0 and computer == 1 or person == 1 and computer == 2 or person == 2 and computer == 0:
            print('你赢啦')
            win += 1
            pass
        elif person == computer:
            print('平局')
            pass
        else:
            print('你输啦')
            pass
        times += 1
        pass
    pass

##第三题
col=9
while col >=1:
    row=1
    while row<=col:
        print('%d*%d=%d'%(row,col,row*col),end=' ')
        row+=1
        pass
    print()
    col-=1
    pass

你可能感兴趣的:(Python学习 day2-2021.2.28(判断语句与循环控制))