Day 5 :for循环,推导式,zip

2020/8/26

For 循环结构

for 变量 in 可迭代对象:
循环体语句

可迭代对象 就是序列。 可以是元组,字符串 ,列表

for x  in (20,30,40)
	print(x*3)

for y in "abcdefg"
	print(y)

d = {'name': 'liuxi','age':18,'job':'programmer'}
for x in d:  #== d.keys
	print(x)

for x in d.items:
	print(x)

Range 对象

是一个序列,产生一个数字范围的整数

sum_all = 0
sum_odd = 0
sum_even = 0
for x in range(101)
	sum_all += x
	if x%2==1:
		sum_0dd += x
	else:
		sum_even += x
print({0} {1}{2},format(sum_all,sum_odd,sum_even))

嵌套循环

就是循环内套循环,也叫多重循环

or x in range(5):
    for y in range(5):
        print(x, end="/t")
    print()

在这里插入图片描述

99乘法口诀

for m in range(1, 10):
    for n in range(1, m+1):
        print("{0}*{1}={2}".format(m, n, (m*n)), end='\t')
    print()

# 字典也可以
r1 = {'name': 'mark', 'age': 18, 'salary': 1000, 'city': 'beijing'}
r2 = {'name': 'jack', 'age': 20, 'salary': 1500, 'city': 'beijing'}
r3 = {'name': 'hank', 'age': 28, 'salary': 8000, 'city': 'beijing'}
tb = [r1, r2, r3]
for x in tb:
    if x.get('salary') > 1000:
        print(x.values())

Break语句

break 用于while, for中断循环 只能中断最临近的循环

while True:
	a = input("输入一个字符,有q是退出")
	if a == 'q' or a == 'Q':
		print("有q 程序退出")
		break
	elseprint(a)
	

continue 用于结束本次循环,然后继续下一次循环

Else 语句

while,for循环可以带一个 else,如果 for,while 被break 停止了,就不执行else了

salary_sum = 0
salary = []
for i in range(4):
    s = input("请输入4个员工的工资 按q结束")
    if s.upper() == "Q":
        print("程序结束 已退出")
        break
    if float(s) < 0:
        continue
    salary_sum += float(s)
    salary.append(float(s))
else:
    print("已录入所有员工")

print("总工资是:", salary_sum)
print("平均工资是", salary_sum//4)

循环代码的优化

编写循环时 遵守3个原则 来提高运行效率

  1. 尽量减少循环内部不必要的计算
  2. 嵌套循环中,尽量减少内层循环的计算,尽可能的往外面放
  3. 局部变量比较好,因为局部变量查询快
  4. 连接多个字符串,使用join 而不是使用+
  5. 列表插入最好 是在列表尾部操作

使用zip()并行迭代

可以使用多个序列 并行迭代

name = ('jiaxi', 'jake', 'hank',)
age = (16, 17, 18, 22)
jobs = ("worker", "nurse", "doctor")

for name, age, jobs in zip(name, age, jobs):
    print("{0}---{1}---{2}".format(name, age, jobs))

推导式创建序列

是一个典型的Python 风格,是一个或者多个迭代器快速创建序列的一种方法。

列表推导式
[表达式 for item in 可迭代对象]
or
[表达式 for item in 可迭代对象 if 条件判断]

y = [x*2  for x in range(1,5)]
print (y)

y = [x*3  for x in range(1,50) if x/5 ==0]
print (y)

cell = [(x,y) for x in range(5) for y in range(5)]
print(cell)

字典推导式
{key : value for 表达式 in 可迭代对象} 也可以增加if条件判断 和多个for 循环

#统计文本中出现的次数
my_text = " i love you, you love me"
char_count = {c: my_text.count(c) for c in my_text if my_text.count(c) >= 2}
print(char_count)

集合推导式
{key for item in 可迭代对象} 也可以加if条件语句。集合不可重复

生成器推导式(生成元组)
(表达式 for item in 可迭代对象)
只能读取一次,返回的是一个生成器,用来生成一个元组
y = (x*3 for x in range(1,50) if x/5 ==0)
print (y)
只能读取一次

小练习

海龟画图画同心圆 并且换不同的颜色

import turtle
p = turtle.Pen()
p.width(4)
my_colors = ['yellow', 'light blue', 'brown', 'red', 'pink']
p.speed(0)

for i in range(100):
    p.penup()
    p.goto(0, -10*i)
    p.pendown()
    p.color(my_colors[i % len(my_colors)])
    p.circle(20+i*10)

turtle.done()

函数的用法和底层分析

函数的可复用性 的程序代码块,也代表了一个功能。

有内置函数,标准库函数,第三方库函数,,自定义函数

def 函数名([参数列表]):
函数体/多个语句块
”文档字符串“

def test01():
	print("*"* 10)

test01()

形参和实参

  1. 圆括号内是形式参数列表,有多个参数则使用逗号隔开
  2. 形式参数不需要参数声明,也不需要指定函数返回类型
  3. 无参数也要必须要保留空的圆括号
  4. 实参列表必须与形参列表一致
def printMax(a, b):
    """用于比较两个数的大小"""
    max1 = ''
    if a > b:
        max1 = a
    else:
        max1 = b
        
    return max1
        
                
printMax(10, 20)

d = printMax(10, 20)  

返回值

如果函数中包含return 则代表返回了一个值 或者中断函数
如果函数中不包含return 则返回None值,有return 但没有值 也是None
要返回多个返回值的时候,使用列表,元组,字典 集合将多个值”存起来“即可

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值