欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python基础编程语法(for循环、推导式、函数)

程序员文章站 2022-06-20 21:51:22
文章目录for循环嵌套循环for循环在列表中的应用break语句continue语句else语句循环代码优化使用zip()并行迭代推导式创建序列字典推导式集合推导式生成器推导式(生成元组)同心圆画法函数Python函数的分类要点:返回值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)...

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)

Python基础编程语法(for循环、推导式、函数)

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))

Python基础编程语法(for循环、推导式、函数)

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))

Python基础编程语法(for循环、推导式、函数)

使用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]))

Python基础编程语法(for循环、推导式、函数)

推导式创建序列

简化代码、效率高
[表达式 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)

Python基础编程语法(for循环、推导式、函数)

#测试推导式
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)

Python基础编程语法(for循环、推导式、函数)

字典推导式

{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)

Python基础编程语法(for循环、推导式、函数)

集合推导式

{表达式 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))

Python基础编程语法(for循环、推导式、函数)
一个生成器只能用一次

同心圆画法

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基础编程语法(for循环、推导式、函数)

函数

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__)

Python基础编程语法(for循环、推导式、函数)

返回值

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))

Python基础编程语法(for循环、推导式、函数)

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