【Python】03-Python控制结构(条件表达式 分支结构 循环结构)) [cyairhp]

目录

1 条件表达式

1.1 关系运算符的连写

1.2 逻辑运算符

2  分支结构

(1)单行 if 语句:

(2)if …else语句:

(3)if-elif-else 语句

(4)嵌套if语句:

(5)其它

3 循环结构

(1)while语句

(2)for语句

(3)range()

(4)else、break和continue、pass子句

  循环的 else 子句

break子句:

countinue子句

pass子句:

4 异常处理

4.1 什么是异常

4.2 try…except语句

4.3 异常的高级用法

5 练习


1 条件表达式

所谓条件表达式,就是能作为判断(选择或循环)条件的式子。

  • 条件不成立

      (1) False、0、None

      (2) 空字符串(‘’、“”)

      (3) 空序列( [ ]、( )、{ }等)

  • 条件成立

       以上不成立值之外,皆成立

  • Python不支持 赋值语句“=”作为条件,使用“==”表示等于。

      

1.1 关系运算符的连写

  • >、<、<=、>=、==、!=
  • 以上关系运算符可以像数学中那样连写

       

1.2 逻辑运算符

  • not、and、or
  • 运算顺序 not > and > or

 

2  分支结构

  • python 通过if、elif、else等保留字提供单分支、二分支和多分支结构;

(1)单行 if 语句:

     当if后跟随的子句只有一条语句时

     语法格式:

      

【实例1】PM2.5空气质量提醒(1)

目前空气质量等级以PM2.5数值划分为6级。PM2.5数值在0-35空气质量为优,35~75为良,75~115为轻度污染,115~150为中度污染150~250为重度污染,250~500为严重污染。

一个简化版的空气质量标准采用三级模式:0~35为优,35-75为良,75以上为污染。人们也许不关心PM2.5指数值具体为多少,而更关心空气质量到底怎样,计算机可以通过PM2.5指数分级发布空气质量提醒。

  • 输入:接收外部输入的PM2.5值
  • 处理:

                 if PM2.5值<35,打印空气质量优,建议户外运动

                 if 35≤PM2.5值<75,打印空气质量良,建议适度户外运动

                 if PM2.5值≥75,打印空气污染警告

  • 输出:打印空气质量提醒
pm = eval(input("请输入PM2.5数值:"))
if 0 <= pm < 35:
    print('空气优质,快去户外运动!')
if 35 <= pm < 75:
    print('空气良好,适度户外运动!')
if pm >= 75:
    print('空气污染,请小心!')

运行结果:

     

(2)if …else语句:

语法格式:

语句块1是在if条件满足(True)后执行的一个或多个语句序列,语句块2是if条件不满足(False)后执行的语句序列。二分支语句用于区分条件的两种可能,即True或者 False分别形成执行路径。

【实例2】PM2.5空气质量提醒(2)

若用户只关心空气质量是否污染两种情况,可以通过二分支语句实现。

pm = eval(input("请输入PM2.5数值:"))
if pm >= 75:
    print('空气污染,请小心!')
else:
    print('空气没有污染,可以开展户外活动!')

运行结果:

 

 

(3)if-elif-else 语句

语法格式:

【实例3】PM2.5空气质量提醒(3)

针对实例1改造:

pm = eval(input("请输入PM2.5数值:"))
if 0 <= pm < 35:
    print('空气优质,快去户外运动!')
elif 35 <= pm < 75:
    print('空气良好,适度户外运动!')
else:
    print('空气污染,请小心!')
 

 

(4)嵌套if语句:

  • 因采用语句缩进方式,可避免else就近配对情况,

(5)其它

二分支结构还有一种更简洁的表达方式(if-else的紧凑结构),适合通过判断返回特定值,

语法格式如下:

条件表达式:  <表达式1> if <条件> else <表达式2>

  • 其中,表达式1、表达式2一般是 数字或字符串类型的一个值,
  • 适合特殊值处理
>>> a=0
>>> print(a) if a!=0 else print('不存在')
不存在
>>> a=5
>>> print(a) if a!=0 else print('不存在')
5
>>> print(a if a!=0 else '不存在')
5
>>> b = a if a!=0 else '不存在'
>>> b
5

【实例4】PM2.5空气质量提醒(4)

针对实例2改造:

pm = eval(input("请输入PM2.5数值:"))
print('空气{}污染!'.format('存在' if pm >= 75 else '没有'))

 

3 循环结构

包括:

  • while语句:一般用于循环次数难以提前确定的情况,也可以用于循环次数确定的情况
  • for语句:一般用于循环次数可以提前确定的情况,尤其是用于枚举序列或迭代对象中的元素。

说明:

  • 一般优先考虑使用for循环;
  • 相同或不同的循环结构之间都可以互相嵌套,实现更为复杂的逻辑。

(1)while语句

基本使用方法如下:

  • 其中条件与if语句中的判断条件一样,结果为True和False;
  • 当条件为False时,循环终止

示例:

count = 0  # 计数器初始化
while count < 9:
    print('The count is:', count)
    count = count + 1  # 计数器累加
print('Good bye!')

 

运行结果:

 

(2)for语句

for语句实现遍历循环,基本使用方法如下:

  • 循环执行次数根据遍历结构中的元素个数确定;
  • 逐一提取元素,放在循环变量中,对于所提取的每个元素执行一次语句块。
  • 遍历结构可以是字符串、文件、组合数据类型或range()函数等,常用的使用方式如下:

示例:

for letter in 'Python':  # 字符串
    print('Current Letter:', letter)
print()
fruits = ['banana', 'apple', 'mango']
for fruit in fruits:  # 列表
    print('Current fruit:', fruit)

print('Good bye!')

运行结果:

嵌套语句

输出结果:

(3)range()

  • 是一个内建函数,可构建迭代序列,for循环中经常用它控制循环次数
  • 格式:

       range([start,] stop[, step=1])

       注意:  “算头不算尾”原则; 省略起始位置,默认为0

>>> range(5)
range(0, 5)
>>> for i in range(5):
...     print(i)
...
0
1
2
3
4
>>> for i in range(0,5,2):
...     print(i)
...
0
2
4
>>>

 

(4)else、break和continue、pass子句

  循环的 else 子句

  • 当循环正常结束时会执行else字句
  • 当由于break跳出循环时不执行else子句
count = 0
while count < 5:
    print(count, 'is less than 5')
    count = count + 1
else:
    print(count, 'is not less than 5')

print('Good bye!')

运行结果:

 

break子句:

  • break用来跳出最内层for或 while循环,脱离该循环后程序从循环代码后继续执行。
# 示例1
for letter in 'Python':
    if letter == 'h':
        break
    print('Current Letter:', letter)
# 示例2
var = 10
while var > 0:
    print('Current value:', var)
    var = var - 1
    if var == 5:
        break
print('Good bye!')

输出结果:

 

countinue子句

  • continue用来结束当前当次循环,即跳出循环体中下面尚未执行的语句,但不跳岀当前循环。
# 示例1
for letter in 'Python':
    if letter == 'h':
        continue
    print('Current Letter:', letter)
# 示例2
var = 10
while var > 0:
    print('Current value:', var)
    var = var - 1
    if var == 5:
        continue
print('Good bye!')

  • continue语句和 break语句的区别是, continue语句只结束本次循环,而不终止整个循环的执行:而 break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。

 

pass子句:

  • 占一个位置,不做任何操作
for letter in 'Python':
    if letter == 'h':
        pass
        print('This is pass block')
    print('Current Letter:', letter)

print('Good bye!')

输出结果

 

4 异常处理

4.1 什么是异常

        异常可能使程序中断,不能正常结束

  • eval()

        input将接收的结果存为字符串,可以使用eval实现表达式的还原,并且实现表达式的计算

num = eval(input('请输入一个整数:'))
print(num**2)

 

当输入数字时,程序正常执行

如果输入的不是数字呢?

 

4.2 try…except语句

异常处理机制可以在发生异常的情况下,能够有效处置,不会立即中断运行

  • 语句块1是正常执行的程序内容,当发生异常时执行 except保留字后面的语句块,为上述小程序增加异常处理,代码如下:
try:
    num = eval(input('请输入一个整数:'))
    print(num**2)
except NameError:
    print('输入错误,请输入一个整数!')

运行结果:

 

4.3 异常的高级用法

try:
    alp = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    idx = eval(input("请输入一个整数: "))
    print(alp[idx])
except NameError:
    print("输入错误,请输入一个整数!")  
except:
    print("其他错误")

运行结果:

 

try:
    alp = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    idx = eval(input("请输入一个整数: "))
    print(alp[idx])
except NameError:
    print("输入错误,请输入一个整数!")
else:
    print("没有发生异常")
finally:
    print("程序执行完毕,不知道是否发生了异常")

 

5 练习

(1)身体质量指数BMI:编写一个根据体重和身高计算BMI值的程序,对BMI数值按照不同区间范围进行分类,同时输出国际和国内的BMI指标分类建议值。

height, weight = eval(input("请输入身高(米)和体重(公斤)[逗号隔开]: "))
bmi = weight / pow(height, 2)
print("BMI 数值为:{:.2f}".format(bmi))
wto, dom = "", ""
if bmi < 18.5: # WTO 标准
	wto = "偏瘦"
elif bmi < 25: # 18.5 <= bmi < 25
	wto = "正常"
elif bmi < 30: # 25 <= bmi < 30
	wto = "偏胖"
else:
	wto = "肥胖"
if bmi < 18.5: # 我国卫生部标准
	dom = "偏瘦"
elif bmi < 24: # 18.5 <= bmi < 24
	dom = "正常"
elif bmi < 28: # 24 <= bmi < 28
	dom = "偏胖"
else:
	dom = "肥胖"
print("BMI 指标为:国际'{0}', 国内'{1}'".format(wto, dom))
height, weight = eval(input("请输入身高(米)和体重\(公斤)[逗号隔开]: "))
bmi = weight / pow(height, 2)
print("BMI 数值为:{:.2f}".format(bmi))
wto, dom = "", ""
if bmi < 18.5:
    wto, dom = "偏瘦", "偏瘦"
elif 18.5 <= bmi < 24:
    wto, dom = "正常", "正常"
elif 24 <= bmi < 25:
    wto, dom = "正常", "偏胖"
elif 25 <= bmi < 28:
    wto, dom = "偏胖", "偏胖"
elif 28 <= bmi < 30:
    wto, dom = "偏胖", "肥胖"
else:
    wto, dom = "肥胖", "肥胖"
print("BMI 指标为:国际'{0}', 国内'{1}'".format(wto, dom))

 

 

(2)输入一行字符,输出其中包含英文字母、数字、空格及其它字符的个数;

m=input("请输入一行字符:")
lett_count,num_count,spa_count,other_count=0,0,0,0
for i in m:
    if i.isalpha():
        lett_count+=1
    elif i.isdigit():
        num_count+=1
    elif i==' ':
        spa_count+=1
    else:
        other_count+=1
print("其中英文字符个数为:{}\t数字个数为:{}\t空格个数为:{}\t其它字符个数为:{}".format(lett_count,num_count,spa_count,other_count))

 

 

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值