Python基础语法02 -- 流程控制

目录

流程控制

1、顺序结构

对象的布尔值

2、选择结构

1)单分支结构

2)双分支结构

3)多分支结构

4)嵌套if

5)条件表达式

6)Pass语句

3、循环结构

1)While循环

2)for in循环

4、流程控制语句

1)break

2)continue

3)else语句

5、嵌套循环

1)二重循环中的break和continue


流程控制

  • 顺序结构
  • 选择结构,if
  • 循环结构,for

 

1、顺序结构

# 顺序结构
'''去上学一共分为几步'''
print('----------程序开始---------------')
print('1、起床')
print('2、吃早饭')
print('3、步行去学校')
print('----------程序结束---------------')

 

对象的布尔值

  • Python一切皆对象,所有对象都有一个布尔值
  • 获取对象的布尔值:使用内置函数bool()

 

以下对象的布尔值为False

  • False
  • 数值0
  • None
  • 空字符串
  • 空列表
  • 空元组
  • 空字典
  • 空集合
# 对象的布尔值
print('----------以下对象的布尔值为False---------------')
print(bool(False)) # False
print(bool(0)) # False
print(bool(0.0)) # False
print(bool(None)) # False
print(bool('')) # False
print(bool("")) # False
print(bool([])) # False,空列表
print(bool(list())) # False,空列表
print(bool(())) # False,空元组
print(bool(tuple())) # False,空元组
print(bool({})) # False,空字典
print(bool(dict())) # False,空字典
print(bool(set())) # False,空集合

print('----------其他对象的布尔值为True---------------')
print(bool(10)) # True
print(bool('hello')) # True
print(bool(True)) # True

可以把对象放在条件表达式进行判断:(根据对象取值对应的布尔值判断True或False)

# 使用对象的布尔值做表达式来进行判断
age = int(input('请输入年龄:'))
if age:
    print(age)
else:
    print('年龄为:', age)

输出结果: 

  

 

2、选择结构

1)单分支结构

语法结构:

if 条件表达式:
      条件执行体
# 单分支结构
money = 1000  # 账户余额
s = int(input('请输入取款金额:'))
# 判断余额是否充足
if money >= s:
    money = money - s
    print('取款成功,余额为:', money)

输出结果: 

 

2)双分支结构

语法结构:
 

if 条件表达式:
      条件执行体1
else:
      条件执行体2
# 双分支结构
num = int(input('请输入一个整数:'))
if num % 2 == 0:
    print(num, '是偶数')
else:
    print(num, '是奇数')

输出结果:

 

3)多分支结构

语法结构:

if 条件表达式1:
      条件执行体1
elif 条件表达式2:
      条件执行体2
elif 条件表达式N:
      条件执行体N
[else:]
      条件执行体N+1
# 多分支结构
score = int(input('请输入一个成绩:'))
if score >= 90 and score <=100:
    print('A级')
elif score >=80 and score <90:
    print('B级')
elif score >= 60 and score < 80:
    print('C级')
elif score < 60:
    print('D级')
else:
    print('非法数据')

 

4)嵌套if

语法结构:

if 条件表达式1:
    if 内层条件表达式:
        内层条件执行体1
    else:
        内层条件执行体2
else:
    条件执行体
# 嵌套if
answer = input('请是会员吗?y/n:')
money = int(input('请输入您的购物金额:'))
if answer == 'y':
    if money >= 200:
        print('会员大于200元,打8折')
    elif money >= 100:
        print('会员大于100元,打9折')
    else:
        print('会员购物没有折扣')
else:
    if money >= 200:
        print('非会员大于200元,打9折')
    else:
        print('非会员购物没有折扣')

 

5)条件表达式

语法结构:条件表达式是 if else 的简写

x if 判断条件 else y

运算规则:

  • 如果判断条件的布尔值为True,条件表达式的返回值为x;否则,条件表达式的返回值为y
# 条件表达式
num1 = int(input('请输入第一个整数:'))
num2 = int(input('请输入第二个整数:'))
print(str(num1) + '大于' + str(num2) if num1 > num2 else str(num1) + '小于' + str(num2))

 

6)Pass语句

  • pass语句什么都不做,只是一个占位符,用在语法上需要语句的地方
  • 什么时候使用:先搭建语法结构,还没想好代码怎么写的时候

 

哪些语句一起使用:

  • if 语句的条件执行体
  • for-in 语句的循环体
  • 定义函数时的函数体
# Pass语句,先占个位置,语法不报错
answer = input('你是会员吗?y/n:')
if answer == 'y':
    pass
else:
    pass

 

3、循环结构

  • while
  • for in

 

1)While循环

语法结构:

while 条件表达式:
    条件执行体(循环体)

 

选择结构的 if 与循环结构的 while 的区别

  • if 是判断一次,条件为True执行一行;
  • while是判断N+1次,条件为True执行N次;
# 循环结构
a = 1
while a < 5:
    print(a)
    a += 1
# 计算1-100之间的偶数和
a = list(range(1, 101))
s = 0
i = 0
while i < len(a):
    if a[i] % 2 == 0:
        s += a[i]
    i += 1

print('1-100之间的偶数和:', s) # 2550

 

2)for in循环

  • in 表达从(字符串、序列等)中依次取值,遍历。
  • for in 遍历的对象,必须是可迭代的对象

 

语法结构:

for 自定义的变量 in 可迭代对象:
    循环体

 

# for in循环
for item in 'Python':
    print(item)

# range() 产生一个整数序列,也是一个可迭代对象
for i in range(4):
    print(i)

 

循环体内不需要访问自定义变量,可以将自定义变量替代为下划线_

# 如果循环体内不需要访问自定义变量,可以将自定义变量替代为下划线_
for _ in range(4):
    print('国庆快乐')

 

计算1-100之间的偶数和 

# 计算1-100之间的偶数和
s = 0
for i in range(1, 101):
    if i % 2 == 0:
        s += i
print('1-100之间的偶数和:', s)

 

输出100-999之间的水仙花数 

# 输出100-999之间的水仙花数
# 即个位的三次方与十位的三次方与百位的三次方之和为该数字,这个数字就是水仙花数
for i in range(100, 1000):
    ge = i % 10 # 个位
    shi = i // 10 % 10 # 十位
    bai = i // 100 # 百位
    total = ge **3 + shi**3 + bai**3
    if total == i:
        print('这是水仙花数:%d, %d+%d+%d=%d' % (i, ge**3, shi**3, bai**3, total))

 

4、流程控制语句

  • break
  • continue

 

1)break

  • 用于结束循环结构,可在 for in 和 while 循环中使用,常与分支结构 if 搭配一起使用
  • 满足什么样的条件,就退出

 

从键盘录入密码,最多输入3次,如果正确结束循环

# 从键盘录入密码,最多输入3次,如果正确结束循环
pwd = input('请输入密码:')
max = max_input = 3

for _ in range(1, max+1):
    if pwd == '8888':
        print('密码输入正确')
        break
    else:
        max_input -= 1
        if max_input == 0:
            print('密码输入错误超过%d次,请明天再试。' % max)
            break
        else:
            pwd = input('密码输入错误,请重新输入密码(剩余%d次机会):' %(max_input))

输出结果:

请输入密码:999
密码输入错误,请重新输入密码(剩余2次机会):111
密码输入错误,请重新输入密码(剩余1次机会):000
密码输入错误超过3次,请明天再试。

 

2)continue

  • 用于结束当前循环,进入下一次循环,可在 for in 和 while 循环中使用,常与分支结构 if 搭配一起使用

 

输出1-50之间,所有5的倍数 

# 输出1-50之间,所有5的倍数
for i in range(1, 51):
    if i % 5 != 0:
        continue
    print(i)

 

3)else语句

与else语句配合使用的三种情况

  • if else,if 条件表达式不成立时,执行else
  • while else,没有碰到break时,在循环体执行完后执行else;如果执行到break,就不再执行else
  • for else,没有碰到break时,在循环体执行完后执行else;如果执行到break,就不再执行else

 

for else :密码输入(只能输入3次)

# 密码输入(只能输入3次)
for i in range(3):
    pwd = input('请输入密码:')
    if pwd == '8888':
        print('密码输入正确')
        break
    else:
        print('密码输入不正确')
else:
    print('对不起,密码输入次数超过3次,请明天再试')

输出结果:没有执行到break,最后再执行for语句的else部分

请输入密码:999
密码输入不正确
请输入密码:999
密码输入不正确
请输入密码:999
密码输入不正确
对不起,密码输入次数超过3次,请明天再试

或输出结果:执行了break后,就不再执行for语句的else部分

请输入密码:8888
密码输入正确

 

5、嵌套循环

  • 循环结构中又嵌套了另外的完整的循环结构,其中内层循环做外层循环的循环体执行;

 

语法结构:

while 条件表达式:
    循环体
    for 条件表达式:
        循环体
    else:
else:

 

打印3行4列的矩形

# 打印3行4列的矩形
for i in range(3):
    for j in range(4):
        print('*', end='\t')  # 不换行输出
    print()  # 换行输出

 

打印九九乘法表

# 打印九九乘法表
for j in range(1, 10):
    for i in range(1, 10):
        if i > j:
            continue
        print('%d*%d=%d' % (i, j, i*j), end='\t')
    print()

输出结果: 

 

1)二重循环中的break和continue

  • 二重循环中的break和continue,用于控制本层循环不影响外层循环的执行;

 

a)没有break和continue时

# 二重循环中的break和continue
for i in range(5):
    for j in range(5):
        print('*', end='\t')
    print()

输出结果:

*    *    *    *    *    
*    *    *    *    *    
*    *    *    *    *    
*    *    *    *    *    
*    *    *    *    *    

 

b)使用break 

# 二重循环中的break和continue
for i in range(5):
    for j in range(5):
        if j == 2:
            break
        print('*', end='\t')
    print()

输出结果:内层循环,因为break,没有再打印第三列即其后列数;外层循环不受影响,还是打印了5行

*    *    
*    *    
*    *    
*    *    
*    *    

 

c)使用continue

# 二重循环中的break和continue
for i in range(5):
    for j in range(5):
        if j == 2:
            continue
        print('*', end='\t')
    print()

输出结果:内层循环,因为continue,没有打印第三列,第四第五列有打印;外层循环不受影响,还是打印了5行

*    *    *    *    
*    *    *    *    
*    *    *    *    
*    *    *    *    
*    *    *    *    

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值