Python之控制语句基础

单分支选择结构

if 语句单分支结构的语法形式如下:
if 条件表达式:
语句/语句块
其中:
1 .条件表达式:可以是逻辑表达式、关系表达式、算术表达式等等。
2 .语句/语句块:可以是一条语句,也可以是多条语句。多条语句,缩进必须对齐一致

操作】输入一个数字,小于 10,则打印这个数字(if_test01.py)

条件表达式中,不能有赋值操作符“=”
Python 中,条件表达式不能出现赋值操作符“=”,避免了其他语言中经常误将关系运算符“==”写作赋值运算符“=”带来的困扰。如下代码将会报语法错误:
if 3<c and (c=20):
print("
赋值符不能出现在条件表达式中")

三元条件运算符

Python 提供了三元运算符,用来在某些简单双分支赋值情况。三元条件运算符语法格式如下:

                               条件为真时的值 if (条件表达式) else 条件为假时的值

多分支选择结构

结果:

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

【操作】输入一个分数。分数在 0-100 之间。90 以上是 A,80 以上是 B70 以上是 C60以上是 D60 以下是 E

range 对象

range 对象是一个迭代器对象,用来产生指定范围的数字序列。格式为:range(start, end [,step])生成的数值序列从 start 开始到 end 结束(不包含 end)。若没有填写 start,则默认从 0开始。step 是可选的步长,默认为 1。如下是几种典型示例:
for i in range(10) 产生序列:0 1 2 3 4 5 6 7 8 9
for i in range(3,10)
产生序列:3 4 5 6 7 8 9
for i in range(3,10,2)
产生序列:3 5 7 9

【操作】利用 for 循环,计算 1-100 之间数字的累加和;计算 1-100 之间偶数的累加和,计算 1-100 之间奇数的累加和

sum_all = 0
sum_odd = 0
sum_even = 0
for i in range(101):
    sum_all = sum_all+i
    if i%2 == 0:
        sum_even = sum_even + i
    else:
        sum_odd = sum_odd + i
print('输入的总数是{0},偶数总和是{1},奇数总和是{2}'.format(sum_all,sum_even,sum_odd))

嵌套循环和综合练习

 

for x in range(5):
    for y in range(5):
        # 当x=0的时候,y=0,1,2,3,4,但是输入的是x,始终为0
        print(x,end='\t')
    # 当y内循环完毕后,换行继续x循环
    print('\n')

结果:

【操作】利用嵌套循环打印九九乘法表

# 九九乘法表
for m in range(1,10):
    # n 是m+1中循环
    for n in range(1,m+1):
        print('{0}*{1}={2}'.format(m,n,m*n),end='\t')
    print('\n')

结果:

【操作】用列表和字典存储下表信息,并打印出表中工资高于 15000 的数据

姓名

年龄

薪资

城市

高小一

18

30000

北京

高小二

19

20000

上海

高小五

20

10000

深圳

# 打印表格,且薪资大于15000的
r1 = {'name':'fan','age': 18, 'salar':30000, 'city':'北京'}
r2 = {'name':'tao','age': 19, 'salar':20000, 'city':'上海'}
r3 = {'name':'lang','age': 30, 'salar':10000, 'city':'深圳'}
tab = [r1, r2, r3]

for x in tab:
    if x.get('salar')>=15000:
        print(x)

结果:

break 语句

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

【操作】使用 break 语句结束循环

# 测试break语句
while True:
    a = input('请输入一个字符(输入 Q 或 q 结束):')
    if a == 'Q' or a == 'q':
        break
    else:
        print('请输出a')

continue 语句

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

【操作】要求输入员工的薪资,若薪资小于 0 则重新输入。最后打印出录入员工的数量和薪资明细,以及平均薪资

empNum = 0
salars = []
salarSum = 0
while True:
    a = input('请输入员工的工资:')
    if a == 'Q' or a == 'q':
        print('录入完成,请退出')
        break
    if float(a) < 0:
        print('输入工资不合法,请重新输入')
        continue
    empNum = empNum + 1
    salars.append(float(a))
    salarSum = salarSum + float(a)
print('员工数{0}'.format(empNum))
print('录入薪资:', salars)
print('平均薪资{0}'.format(salarSum/empNum))

【操作】员工一共 4 人。录入这 4 位员工的薪资。全部录入后,打印提示您已经全部录入 4 名员工的薪资。最后,打印输出录入的薪资和平均薪资

salaries = []
empNum = 0
salarySum = 0
for i in range(4):
    a = input('请输入工资(输入Q或者q时输入结束):')
    if a =='Q' or a == 'q':
        break
    if float(a) < 0:
        continue
    empNum += 1
    salaries.append(float(a))
    salarySum += float(a)
print('员工数{0}'.format(empNum))
print('录入薪资:', salaries)
print('平均薪资{0}'.format(salarySum/empNum))

循环代码优化

编写循环时,遵守下面三个原则可以大大提高运行效率,避免不必要的低效计算:
1. 尽量减少循环内部不必要的计算
2. 嵌套循环中,尽量减少内层循环的计算,尽可能向外提。
3. 局部变量查询较快,尽量使用局部变量

# 循环代码优化测试
import time
start = time.time()
for m in range(1000):
    result = []
    for n in range(1000):
        result.append(m*1000+n*1000)
end = time.time()
print('耗时:{0}'.format(end-start))

start2 = time.time()
for x in range(1000):
    result = []
    s = x*1000
    for y in range(1000):
        result.append(s + y*1000)
end2 = time.time()
print('耗时:{0}'.format(end2-start2))

其他优化手段

推导式是从一个或者多个迭代器快速创建序列的一种方法。它可以将循环和条件判断结合,从而避免冗长的代码。推导式是典型的 Python 风格,会使用它代表你已经超过 Python 初学者的水平

列表推导式

列表推导式生成列表对象,语法如下:

                                      [表达式 for item in 可迭代对象 ]
                      或者:{表达式 for item in 可迭代对象 if 条件判断}

# 切片,包头不包尾
a = [x*2 for x in range(1,5)]
print(a)

s = [x*2 for x in range(1,20) if x%5 == 0]
print(s)

s = [x for x in 'abcdef']
print(s)
# 可以使用两个循环
lisA = [(x,y) for x in range(1,10) for y in range(1,5)]
print(lisA)
print('********************************************************')

for x in lisA:
    print(x)

字典推导式

字典的推导式生成字典对象,格式如下:

                          {key_expression : value_expression for 表达式 in 可迭代对象}

类似于列表推导式,字典推导也可以增加 if 条件判断、多个 for 循环

# 统计文本中字符出现的次数:
my_text = ' i love you, i love sxt, i love Fan'
char_count = {c:my_text.count(c) for c in my_text}
print(char_count)

集合推导式

集合推导式生成集合,和列表推导式的语法格式类似:

                        {表达式 for item in 可迭代对象 }
           或者:{表达式 for item in 可迭代对象 if 条件判断}

a = {x*2 for x in range(1,100) if x%9==0}
print(a)

【操作】绘制多个同心圆

# 绘制多个同心圆
import turtle
t = turtle.Pen()
t.width(5)
myColors = ("red","green","yellow","black")
for i in range(10):
    # 抬笔
    t.penup()
    t.goto(0,-i*15)
    # 下笔
    t.pendown()
    # 把颜色传入进去
    t.color(myColors[i%len(myColors)])
    t.circle((i+1)*15)
#####################################################
# # 思考步骤
# t.circle(100)
# # 抬笔
# t.penup()
# t.goto(0,-100)
# # 下笔
# t.pendown()
# t.circle(200)
#
# t.penup()
# t.goto(0,-200)
# t.pendown()
# t.circle(300)
#
# t.penup()
# t.goto(0,-300)
# t.pendown()
# t.circle(400)

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值