ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2021-10-18

2021-10-19 18:31:49  阅读:140  来源: 互联网

标签:语句 10 函数 迭代 18 推导 range 2021 print


文章目录

for 循环和可迭代对象遍历

for 循环通常用于可迭代对象的遍历。
for 循环的语法格式如下:

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

【操作】遍历一个元组或列表

for x in (10,20,30):
    print(x*30)

可迭代对象

Python 包含以下几种可迭代对象:

  1. 序列。包含:字符串、列表、元组
  2. 字典
  3. 迭代器对象(iterator)
  4. 生成器函数(generator)
  5. 文件对象

【操作】遍历字典

for y in "abcdef":
    print(y)

d = {"name":"白洋","age":18,"job":"学生"}
for x in d:#遍历字典所有的key
    print(x)
for x in d.keys():#遍历字典所有的key
    print(x)
for x in d.values() :#遍历字典所有value
    print(x)
for x in d.items():  #遍历字典所有“键值对”
    print(x)
for x in range(5):
    print(x)

range对象

range 对象是一个迭代器对象,用来产生指定范围的数字序列。

格式为: range(start, end [,step])

start默认为 0 ;step 默认为 1。

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

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

嵌套循环

【练习1】打印图像
在这里插入图片描述

for x in range(5):
    for y in range(5):
        print(x,end="\t")
    print() #起到换行作用

【练习2】打印九九乘法表

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()  #换行

【练习3】用列表和字典存储信息,并打印工资高于 30000 的数据

tb = []
r1 = dict(name="高级",age=18,salary=20000,city="背景")
r2 = dict(name="好级",age=28,salary=30000,city="是景")
r3 = dict(name="是级",age=38,salary=40000,city="原景")
tb = [r1,r2,r3]

for x in tb:
    if x.get("salary")>30000:
        print(x)

break 语句

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

【操作】测试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":
        print("录入完成,退出")
        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 子句,否则不执行。

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

salarySum= 0
salarys= []


for i in range(4):
    s = input("请输入员工薪资(按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. 局部变量查询较快,尽量使用局部变量
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)))

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

其他优化手段

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

使用 zip()并行迭代

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

推导式创建序列

推导式是从一个或者多个迭代器快速创建序列的一种方法。它可以将循环和条件判断结合, 从而避免冗长的代码。

列表推导式

列表推导式生成列表对象,语法如下:
[表达式 for item in 可迭代对象 ]
或者:{表达式 for item in 可迭代对象 if 条件判断}

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 可迭代对象}

my_text = "i love you, i love sfg, i lve faoh"
char_count = {c:my_text.count(c)for  c in my_text}
print(char_count)
#集合推导式
b = {x for x in range(1,100)if x%9==0}
print(b)

集合推导式

集合推导式生成集合,和列表推导式的语法格式类似: {表达式 for item in 可迭代对象 } 或者:{表达式 for
item in 可迭代对象 if 条件判断}

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

元组没有推导式
一个生成器只能运行一次。第一次迭代可以得到数据,第二次迭代发现数据已经没有了

#生成器推导式(生成元组)
gnt=(x for x in range(1,100)if x%9==0)
for x in gnt:
    print(x,end='')
print(tuple(gnt))

【练习】五彩同心圆

import turtle

t = turtle.Pen()

my_colors = ("red","green","yellow","black")

t.width(4)
t.speed(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_colors [i%len(my_colors )])
    t.circle(15+i*10)   #100,200,300,400,500


turtle.done()  #执行完窗口仍然在

结果展示

在这里插入图片描述
【作业】绘制18*18棋盘

import turtle

t = turtle.Pen()

t.width(4)
t.speed(10)

for i in range(19):

    t.goto(0,-20*i)
    t.pendown()
    t.goto(360,-20*i)
    t.penup()
t.goto(0,0)
for i in range(19):
    t.goto(20*i,0)
    t.pendown()
    t.goto(20*i,-360)
    t.penup()

turtle.done()  #执行完窗口仍然在

结果展示

在这里插入图片描述

函数用法和底层分析

函数是可重用的程序代码块。函数的作用,不仅可以实现代码的复用,更能实现代码的 一致性

函数的基本概念

  1. 一个程序由一个个任务组成;函数就是代表一个任务或者一个功能。
  2. 函数是代码复用的通用机制。

Python 函数的分类

  1. 内置函数
    str()、list()、len()等我们可以拿来直接使用的函数
  2. 标准库函数
    通过 import 语句导入库,然后使用其中定义的函数
  3. 第三方库函数
    Python 社区提供,下载安装后,通过 import 语句导 入,然后可以使用这些第三方库的函数
  4. 用户自定义函数
    用户自己定义的函数,适应用户自身需求定义的函数

函数的定义和调用

定义函数的语法如下:
def 函数名 ([参数列表]) :
‘’‘文档字符串’’’
函数体/若干语句

要点:

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

结果展示

20 较大值
300 较大值
No Python documentation found for '用于比较两个数的大小,打印较大数值'.
Use help() to get the interactive help utility.
Use help(str) for help on the str class.

形式参数是在定义函数时使用的。
printMax(a,b) 中a,b为“形式参数”, 简称“形参”。
在调用函数时,传递的参数称为“实际参数”,简称“实参”。
上面代码中, printMax(10,20),10 和 20 就是实际参数

文档字符串(函数的注释)

“文档字符串”,或“函数的注释”。我们通过三个单引号或者三个双引号来实现,中间可以加入多行文字进行说明。

def print_star(n):
	 '''根据传入的 n,打印多个星号''' 
	 print("*"*n) 
help(print_star)

返回值

return 返回值要点:

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

标签:语句,10,函数,迭代,18,推导,range,2021,print
来源: https://blog.csdn.net/m0_55111053/article/details/120834358

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有