Day5 控制语句值

1187-吴同学

发表文章数:41

首页 » Python » 正文

选择结构

选择结构有多种形式,分为:单分支、双分支、多分支。

单分支结构

Day5 控制语句值

语法格式

if 条件表达式:

/qquad

语句/语句块

条件表达式的值为 False 的情况如下:

  1. False(区别字符串“False”是非空字符串)
  2. 0,0.0
  3. 空值 None、空序列对象(空列表、空元祖、空集合、空字典、空字符串)、空 range 对象、空迭代对象

其他情况,均为 True
条件表达式中,不能有赋值操作符“=”

双分支结构

Day5 控制语句值

语法格式

if 条件表达式 :

/qquad

语句 1/语句块 1
else:

/qquad

语句 2/语句块 2

三元条件运算符

双分支结果在较简单时,可以用三元条件运算符代替
格式如下:
条件为真时的值 if (条件表达式) else 条件为假时的值

a=50
a if a<100 else "too much"
#50

多分支结构

Day5 控制语句值

语法格式

if 条件表达式 1 :

/qquad

语句 1/语句块 1
elif 条件表达式 2:

/qquad

语句 2/语句块 2
……
elif 条件表达式 n :

/qquad

语句 n/语句块 n
[else:

/qquad

语句 n+1/语句块 n+1]
方括号中的句子表示可选(不选也可)。多分支结构,几个分支之间是有逻辑关系的,不能随意颠倒顺序

选择结构的嵌套

选择结构可以嵌套, 使用时一定要注意控制好不同级别代码块的缩进量, 因为缩进量决定了代码的从属关系。

语法形式

if 表达式 1:

/qquad

语句块 1

/qquad

if 表达式 2:

/qquad/qquad

语句块 2

/qquad

else:

/qquad/qquad

语句块 3
else:

/qquad

if 表达式 4:

/qquad/qquad

语句块 4

python实例

给分数评级的两种写法

score = int(input(" 请输入一个在0-100之间的数字 :"))
grade = ""
if score>100 or score<0:
    score = int(input("输入错误!请重新输入一个在0-100之间的数字 :"))
else:
    if score>=90:
        grade = "A"
    elif score>=80:
        grade = 'B'
    elif score>=70:
        grade = 'C'
    elif score>=60:
        grade = 'D'
    else:
        grade = 'E'
print(" 分数为{0}, 等级为{1}".format(score,grade))
score = int(input(" 请输入一个在0-100之间的数字 :"))
degree = "ABCDE"
num = 0
if score>100 or score<0:
    score = int(input("输入错误!请重新输入一个在0-100之间的数字 :"))
else:
    num = score//10
	if num<6:num=5
print(" 分数 是{0}, 等级是{1}".format(score,degree[9-num]))

循环结构

循环结构用来重复执行一条或多条语句。
Day5 控制语句值

循环体里面的语句至少应该包含改变条件表达式的语句,以使循环趋于结束;否则,就会变成一个死循环。

while 循环

语法格式

while 条件表达式:

/qquad

循环体语句

for循环

语法格式

for 变量 in 可迭代对象:

/qquad

循环体语句

可迭代对象

  1. 序列 (包含:字符串、列表、元组)
  2. 字典(详情看https://blog.csdn.net/little_yueyue/article/details/108174316 中的字典序列解包)
  3. 迭代器对象(iterator,包头不包尾)
  4. 生成器函数(generator)
  5. 文件对象

嵌套循环

一个循环体内可以嵌入另一个循环,一般称为“嵌套循环”,或者“多重循环”。

#九九乘法表
for i in range(1,10):
    for j in range(1,i+1):
        print('{}*{}={}'.format(j,i,i*j),end='/t')#'/t'打印制表符
    print()#仅用于换行

break 语句和continue语句

break 语句可用于 while 和 for 循环,用来结束整个循环。当有嵌套循环时,break 语句只能跳出最近一层的循环

continue 语句用于结束本次循环继续下一次。多个循环嵌套时,continue 也是应用于最近的一层循环
总结如下表:

语句 相同点 不同点
break语句 只能跳出最近一层的循环 结束整个循环
continue语句 结束本次循环,继续下一次

循环语句中的else

while、for 循环可以附带一个 else 语句(可选)。如果 for、while 语句没有被 break 语句结束(正常结束),则会执行 else 子句,若被break语句中断,不执行else。

语法结构

while 条件表达式:

/qquad

循环体
else:

/qquad

语句块
或者:
for 变量 in 可迭代对象:

/qquad

循环体
else:

/qquad

语句块

循环代码优化

三个原则

遵守下面三个原则可以大大提高运行效率,避免不必要的低效计算:

  1. 尽量减少循环内部不必要的计算
  2. 嵌套循环中,尽量减少内层循环的计算,尽可能向外提。
  3. 局部变量查询较快,尽量使用局部变量
#循环代码优化测试
import time
start = time.time()
for i in range(1000):
    result = []
    for m in range(10000):
        result.append(i*1000+m*100)
end = time.time()
print(" 耗 时 :{0}".format((end-start)))
#耗 时 :2.289644718170166

start2 = time.time()
for i in range(1000):
    result = []
    c = i*1000
    for m in range(10000):
        result.append(c+m*100)#i*1000+m*100中的i*1000提了出来
end2 = time.time()
print(" 耗 时 :{0}".format((end2-start2)))
#耗 时 :1.9445734024047852

其他优化手段

  1. 连接多个字符串,使用 join()而不使用+
  2. 列表进行元素插入和删除,尽量在列表尾部操作

使用 zip()并行迭代

通过 zip()函数对多个序列进行并行迭代,zip()函数在最短序列“用完”时就会停止。

names = ("高老一","高老二","高老三","高老四")
ages = (18,16,20,25)
jobs = ("老师","程序员","公务员")
for name,age,job in zip(names,ages,jobs):
    print("{0}--{1}--{2}".format(name,age,job))
#高淇--18--老师
#高老二--16--程序员
#高老三--20--公务员
#当然,用下面这种方法也可
for i in range(min(len(names),len(ages),len(jobs))):
    print("{0}--{1}--{2}".format(names[i],ages[i],job[i]))

拜师教育学员文章:作者:1187-吴同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《Day5 控制语句值》 发布于2020-08-24

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录