当前位置: 移动技术网 > IT编程>脚本编程>Python > Python基础学习Day5(for循环、推导式、函数)

Python基础学习Day5(for循环、推导式、函数)

2020年07月05日  | 移动技术网IT编程  | 我要评论

for循环

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

for x in (20,30,40):
    print(x*3)
for x in "abcdefg":#字符串中的字母
    print(x)
for x in range(5):
    print(x)
d={'name':'Meidi','age':22,'job':'student'}
for x in d:#默认打印键
    print(x)
for x in d.keys():#打印键
    print(x)
for x in d.values():#打印值
    print(x)
for x in d.items():#打印成对信息
    print(x)
sum_all=0
sum_odd=0#100以内的奇数和
sum_even=0#100以内的偶数和
for x in range(101):
    sum_all+=x
    if x%2==1:
        sum_odd+=x
    else:
        sum_even+=x
print("1-100累加和{0},奇数和{1},偶数和{2}".format(sum_all,sum_odd,sum_even))

嵌套循环

#嵌套循环
for x in range(5):
    for y in range(5):
        print(x,end="\t")
    print()#起到换行的作用
#打印九九乘法表
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()

for循环在列表中的应用

#for循环在列表中的应用
tb=[]
r1={"name":"G1","age":18,"salary":30000,"city":"北京"}
r2={"name":"G2","age":19,"salary":20000,"city":"南京"}
r3={"name":"G3","age":20,"salary":10000,"city":"天津"}
tb=[r1,r2,r3]
for x in tb:
    if x.get("salary")>15000:
        print (x)

break语句

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

#测试break
while True:
    a=input("请输入一个字符(输入Q或者q时退出):")
    if a=="q" or a=="Q":
        print("循环结束,退出")
        break
    else:
        print(a)

在这里插入图片描述

continue语句

结束本次循环,进行下一次。多个循环嵌套时,continue也是应用于最近一层循环。

#测试continue;要求输入员工的薪资,若薪资小于0则重新输入。最后打印出录入员工的数量和薪资明细,以及平均工资
empNum=0
salarySum=0
salarys=[]
while True:
    s=input("请输入员工的工资(按Q或q结束)")
    if s.upper()=='Q':
        break
    if float(s)<0:
        continue
    empNum+=1
    salarys.append(float(s))
    salarySum+=float(s)
print("员工数{0}".format(empNum))
print("录入薪资:",salarys)
print("平均工资{0}".format(salarySum/empNum))

在这里插入图片描述

else语句

while、for循环可以附带一个else语句(可选)。如果for、while语句没有被break语句结束,则会执行else子句,否则不执行,语法格式如下
while 条件表达式:
循环体
else:
语句块

或者:
for 变量 in 可迭代对象:
循环体
else:
语句块

#测试循环中的else语句
salarySum=0
salarys=[]
for i in range(4):
    s=input("请输入一共4名员工的薪资(按Q或q中途结束)")
    if s.upper()=='Q':
        print("录入完成,退出")
        break
    if float(s)<0:
        continue
    salarys.append(float(s))
    salarySum+=float(s)
else:
    print("您已经全部录入4名员工的薪资")
print("录入薪资:",salarys)
print("平均薪资{0}".format(salarySum/4))

循环代码优化

1.尽量减少循环内部不必要的计算。
2.嵌套循环中,尽量减少内层循环的计算,尽可能向外提。
3.局部变量查询较快,尽量使用局部变量

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

import time
start=time.time()
for i in range(10000):
    result=[]
    for m in range(10000):
        result.append(i*1000+m*100)
end=time.time()
print("耗时:{0}".format(end-start))
start2=time.time()
for i in range(1000):
    result=[]
    c=i*1000#内层循环丢到外层
    for m in range(10000):
        result.append(c+m*100)
end2=time.time()
print("耗时:{0}".format(end2-start2))

在这里插入图片描述

使用zip()并行迭代

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

#测试并行迭代
names=("ZZ","MM","DD","AA")
ages=(10,20,30,22)
jobs=("老师","学生","程序员")
for name,age,job in zip(names,ages,jobs):
    print("{0}--{1}--{2}".format(name,age,job))

for i in range(3):
    print("{0}--{1}--{2}".format(names[i],ages[i],jobs[i]))

在这里插入图片描述

推导式创建序列

简化代码、效率高
[表达式 for item in 可迭代对象]
{表达式 for item in 可迭代对象 if 条件判断}

#测试推导式
y=[x*2 for x in range(1,5)]
print(y)
#等价于下面
y=[]
for x in range(1,5):
    y.append(x*2)
print(y)

在这里插入图片描述

#测试推导式
y=[x*2 for x in range(1,50) if x%5==0]
print(y)

y=[]
for x in range(1,50):
    if x%5==0:
        y.append(x*2)
print(y)


cells=[(row,col) for row in range(1,10) for col in range(1,10)]
print(cells)

在这里插入图片描述

字典推导式

{key_expression : value_expression for 表达式 in 可迭代对象}
类似于列表表达式,字典推导也可以增加if条件判断、多个for循环。

#字典推导式
my_text='i love you,i love sxt,i love meidi'
char_count={c:my_text.count(c) for c in my_text}
print(char_count)

在这里插入图片描述

集合推导式

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

生成器推导式(生成元组)

#生成器推导式(生成元组),只能一次
gnt=(x for x in range(4))
#print(tuple(gnt))
#print(tuple(gnt))
for x in gnt:#gnt是可迭代对象,生成器是可迭代的对象
    print(x,end=",")
print(tuple(gnt))

在这里插入图片描述
一个生成器只能用一次

同心圆画法

import turtle
t=turtle.Pen()
my_color=("red","green","yellow","black")
t.width(4)
t.speed(5)#10最快
for i in range(10):#0 1 2 3 4
    t.penup()
    t.goto(0,-i*10)#0 -100 -200 -300 -400
    t.pendown()
    t.color(my_color[i%len(my_color)])
    t.circle(15+i*10)#100 200 300 400 500
turtle.done()#程序执行完,窗口仍然在

在这里插入图片描述

函数

Python函数的分类

  1. 内置函数
  2. 标准库函数
  3. 第三方库函数
  4. 用户自定义函数

要点:

1.我们使用def来定义函数,然后就是一个空格和函数名称;
(1)Python执行def时,会创建一个函数对象,并绑定到函数名变量上。
2.参数列表
(1)圆括号内是形式参数列表,有多个参数则使用逗号隔开
(2)形式参数不需要声明类型,也不需要指定函数返回值类型
(3)无参数,也必须保留空的圆括号
(4)实参列表必须与形参列表一一对应
3.return返回值
(1)如果函数体中包含return语句,则结束函数执行并返回值。
(2)如果函数体中不包含return语句,则返回None值。
4.调用函数之前,必须要先定义函数,即先调用def创建函数对象
(1)内置函数对象会自动创建
(2)标准库和第三方库函数,通过import导入模块时,会执行模块中的def语句

def printMax(a,b):
    """用于比较两个数的大小,打印较大的值"""
    if a>b:
        print(a,"较大值")
    else:
        print(b,"较大值")
printMax(10,20)
printMax(200,300)
help(printMax.__doc__)

在这里插入图片描述

返回值

return返回值要点:
1.如果函数体中包含return语句,则结束函数执行并返回值
2.如果函数体中不包含return语句,则返回None值
3.要返回多个返回值,使用列表、元组、字典、集合将多个值“存起来”即可

def add(a,b):
    print("计算两个数的和:{0},{1},{2}".format(a,b,(a+b)))
    return a+b
def test02():
    print("sss")
    print("aaa")
    return  #return两个作用:1.返回值 2.结束函数的执行
    print("hello")
def test03(x,y,z):
    return [x*10,y*10,z*10]
c=add(30,40)
print(add(30,40)*10)
d=test02()
print(d)
print(test03(4,3,2))

在这里插入图片描述

本文地址:https://blog.csdn.net/qq_42881059/article/details/107115630

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网