本文目录
  1. 1.分支语句
  2. 1.1单分支语句
  3. 1.2双分支语句
  4. 1.3多分支语句
  5. 1.4 多分支语句的嵌套
  6. 1.5数字炸弹案例
  7. 2.循环语句
  8. 2.1 while循环
  9. 2.2 for循环
  10. 2.3 循环中断

Python 分支与循环

使用条件判断、while 与 for 循环控制程序执行流程。

1.分支语句

1.1单分支语句

#控制单个代码是否执行
#语法
if 条件:
   符合条件执行的语句

#例子
num=int(input("""
请选择您要办理的业务:
1.查询余额
2.存钱
3.取钱
4.退出登录
"""))
if num == 4:
    print("感谢您的使用,欢迎下次光临")

1.2双分支语句

#控制两个代码是否执行
#语法
if 条件:
   符合条件执行的语句
else:
   不符合条件执行的语句
    
#例子
num=int(input('请输入一个数字:'))
if num % 2 ==0:
    print(f'{num}是偶数')
else :
    print(f"{num}是奇数")

1.3多分支语句

#控制多个代码是否执行
#语法
 if 条件1:
     条件1成立执行的代码
  elif 条件2:
      条件成2立执行的代码
  elif 条件3:
      条件成3立执行的代码
  else(也可不写else)
      以上条件不成立的代码
    
#在elif和else的选择上
#如果是确定的值,使用elif,else用来处理异常场景
#如果是区间,else用来处理最宽泛区间
    
#练习:水果价格查询程序
#用户输入水果名称,输出对应水果的价格
name = input('请输入水果名称')
if name == '西瓜':
    print(f'{name}的价格是1.8元')
elif name == '榴莲':
    print(f'{name}的价格是29.8元')
elif name == '樱桃':
    print(f'{name}的价格是30元')
elif name == '车厘子':
    print(f'{name}的价格是100元')
elif name == '牛油果':
    print(f'{name}的价格是20元')
elif name == '佛手瓜':
    print(f'{name}的价格是16元')
else:
    print('未查询到您输入的水果价格')

1.4 多分支语句的嵌套

##就是多层使用分支
# #练习 ——相亲
gender=input('请输入性别')
if gender == '男':
    car = input('请输入是否有车')
    if car == '是':
        print('去看看')
    else:
        house = input('请输入是否有房')
        if house == '有':
            print('去看看')
        else:
            print('算了吧')
else:
    beatuy =input('漂亮嘛?')
    if beatuy == '是':
        print('去看看')
    else:
        chara = input("温柔吗?")
        if chara == '是':
            print('去看看')
        else:
            print('算了吧')

1.5数字炸弹案例

#猜数字游戏——简易版:不提示猜大猜小
#生成一个随机数,random是python的一个内置包,可以直接调用
import random
num=random.randint(1,10)
#让用户输入一个数字,猜对了提示猜对了
guess=int(input('请猜一个1-10的数字'))
if guess== num:
    print('猜对了')
#猜错了可以再猜一次,重新输入一个数字
else:
    guess = int(input('还有两次机会,请猜一个1-10的数字'))
    if guess == num:
        print('猜对了')
    else:
        #猜错了可以再猜一次,重新输入一个数字
        guess = int(input('最后一次机会,请猜一个1-10的数字'))
        if guess == num:
            print('猜对了')
        else:
            #第三次都没猜对,提示游戏结束
            print('猜错了,游戏结束')
#不管猜没猜对都展示正确答案
print(f"正确答案是{num}")

2.循环语句

2.1 while循环

2.1.1 死循环

无限的执行一段代码,不会停止

#例
while :
  print("yyqx yyds")

2.1.2 循环

可控次数的执行一短代码

#三要素:
1.定义变量  记录循环次数
2.结束条件  终止循环
3.修改变量  更新循环次数

#例
i=1
while i<= 10:
    print('我要吃饭了')
    i+=1

2.1.3 while循环案例

2.1.3.1 基础案例
#案例1 计算1-100的和
i=1           #定义循环变量
sum=0         #定义求和值
while i<=100: #循环100次
    sum += i  #求和
    i += 1    #记录循环次数
print(sum)    #输出最终结果
#计算x-y的和
x=int(input('请输入较小的数'))
y=int(input('请输入较大的数'))
sum = 0
i=x
while x<= y:
     sum += x
     x +=1
print(f'{i}到{y}的和为{sum}')
#计算x-y的平均数
x=int(input('请输入较小的数'))
y=int(input('请输入较大的数'))
count = y-x+1
sum = 0
i=x
while x<= y:
     sum += x
     x +=1
avg=sum/count
print(f'{i}到{y}的平均值为{avg}')
2..1.3.2 数字炸弹升级版

结束循环的两种思路

#互斥锁————通用解决方案思想
#一开始条件设置为True
#结束时锁改为False 直接退出循环
import random
num=random.randint(1,10)
guess=int(input('请猜一个1-10的数字'))
flag=True
while flag:
    if guess==num:
        print('猜对了')
        flag = False
    elif guess > num:
        print('猜大了,继续猜')
        guess = int(input('请猜一个1-10的数字'))
    else:
        print('猜小了,继续猜')
        guess = int(input('请猜一个1-10的数字'))
#直接退出循环版--break
import random
num=random.randint(1,10)
guess=int(input('请猜一个1-10的数字'))
flag=True
while flag:
    if guess==num:
        print('猜对了')
        break
    elif guess > num:
        print('猜大了,继续猜')
        guess = int(input('请猜一个1-10的数字'))
    else:
        print('猜小了,继续猜')
        guess = int(input('请猜一个1-10的数字'))

2.1.4 while循环的嵌套

2.1.4.1 while循环嵌套if
sum = 0
i=1
while i<=100:
    if i%2==0:
      sum += i
    i +=1
print(f"1-100偶数的和为{sum}")
2.1.4.2 while循环嵌套while

思路:

#1.把基本的循环写出来,当成一个整体
#2.再把第一步重复多次
day = 1
while day <= 10:
    count = 1
    while count <= 10:
        print(f"第{day}天,第{count}次")
        count += 1
    day += 1
2.1.4.3 9*9乘法表案例
second=1
while second<=9:
    first=1
    while first<=second:
        print(f'{first}*{second}={first*second}',end=" ")
        first +=1
    print(" ")
    second +=1

2.2 for循环

2.2.1 基本语法

#语法
for 临时变量 in 内容
      执行的语句
#总结:
#1.for循环就是用于循环内容的
#2.for循环里面的临时变量就是内容的每一项
#3.内容一定是可迭代的对象!

#练习:定义一个字符串,循环打印字符串的每一个字符
cat="Jackson"
for i in cat:
    print(i,end=" ")

2.2.2 临时变量的用法

# 临时变量应该在循环内使用

#临时变量也可以在循环外使用,但是不建议用,输出为最后一次循环的值

#如果要用的话:
# 先在外部定义一个变量,用来记录临时变量,然后使用这个变量

#如果有多次循环嵌套,每个临时变量不能重复

for-else循环(python特有的循环判断)

开始
 ↓
执行for循环
 ↓
判断if执行判断语句 ?
 ├── 是 → 删除该学生 → 打印成功信息 → break 跳出循环 → 跳过 else → 结束
 └── 否 → 继续遍历下一个
         ↓
    所有元素都遍历完了(没有触发 break)?
     ├── 是 → 执行 else 块 → 打印"没有找到" → 结束
     └── 否 → 继续循环
    
 ## 所有的for循环执行结束,没有触发break会执行else语句,如果触发break就不执行else语句了

2.2.3 range语句

#语法
range(num) 从0~num-1
range(num1,num2)  从num1~num2-1
range(num1,num2,step) 从num1~num2-1,步长为step

#例
#1.一个参数:range(数字)
for i in range(5):
      print(f"第{i+1}次打印")
#意义:想循环几次,就循环几次

#2.两个参数  range(开始,结束+1)
for i in range(1,11):
    print(f"第{i}次打印")

# 3.三个参数  range(开始,结束+1,步长)
for i in range(2,11,2):
    print(i)

2.2.4 for循环嵌套-9*9乘法表

#9*9乘法表的for循环写法
#方法1:
for sec in range(1,10):
    for first in range (1,sec+1):
        print(f"{first}*{sec}={first*sec}",end=" ")
    print(" ")

#方法2:
for i in range(9):
    for j in range (9):
        if j<=i:
            print(f"{j+1}*{i+1}={(i+1)*(j+1)}",end=" ")
    print(" ")

2.3 循环中断

#几种退出的区别

##1.pass
for i in range(10):
    if i%2==0:
        print(i)
    else:
        pass  #只是跳过else 这一句话 后续代码继续执行
    print(f"这是第{i+1}次循环")

##2.continue-可以通过逻辑执行,用处不大
for i in range(10):
    if i%2==0:
        print(i)
    else:
        continue #本轮循环结束,后面的代码都不执行了,继续执行下一次循环
    print(f"这是第{i}次循环")

##3.break
   # 直接退出循环,后面所有的都不执行了

### 总结:
# 1.continue 是跳过此次循环后面的语句,继续重头开始执行下一次循环(通过逻辑if-else可以实现)
# 2.break 直接退出循环,后面所有的都不执行了
# 3.while和for循环都可以用