Day5_Python基础

1、for循环和可迭代对象遍历

for循环通常用于可迭代对象的遍历。语法格式如下:
在这里插入图片描述
其中可迭代对象包含一下几种:
<1>、序列:字符串、列表、元组
<2>、字典
<3>、迭代器对象(iterator)
<4>、生成器函数(generator)
<5>、文件对象

举例:遍历字符串中的字符
在这里插入图片描述
举例:遍历字典
在这里插入图片描述

2、range对象

**range对象是一个迭代器对象,用来产生指定范围的数字序列。格式为
range(start, end [,step])
生成的数值序列从start开始到end结束(不包含end )。若没有填写start,则默认从0开始。step是可选的步长,默认为1。**如下是几种典型示例:
在这里插入图片描述
举例:利用for循环,计算1-100之间数字的累加和;计算1-100之间的偶数累加和,计算1-100之间奇数累加和。
在这里插入图片描述

3、嵌套循环

例1:打印如下图案
在这里插入图片描述
在这里插入图片描述
例2:使用嵌套循环打印九九乘法口诀表

# 打印乘法口诀表

for i in range(1, 10):
    for j in range(1, i+1):
        print("{0} * {1} = {2}".format(i, j, i*j), end=" ")
    print()

在这里插入图片描述

4、break语句和continue语句

break语句可用于while和for循环,用于结束整个循环。当有嵌套循环时,break语句只能跳出最近一层的循环。
continue语句用于结束本次循环,继续进行下一次循环。多个循环嵌套时,continue也是应用于最近的一层循环。

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

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

wo_sum = 0   #员工人数
sa_sum = 0   #薪资总和
salary = []    #存放员工的薪资列表
while True:
    a = input("请输入员工的工资(输入Q时结束):")
    if a == "Q":
        print("录入完成,退出")
        break
    if int(a) < 0:
        print("工资无效,请重新输入……")
        continue
    else:
        salary.append(int(a))
        sa_sum += int(a)
        wo_sum += 1
        
print("员工的人数:{0}".format(wo_sum))
print("薪资明细:{0}".format(salary))
print("平均薪资:{0}".format(sa_sum/wo_sum))

在这里插入图片描述

5、else语句

while、for循环可以附带一个else语句。如果for、while语句没有被break语句结束,则会执行else子句,否则不执行。
语法格式如下:
在这里插入图片描述
例题:员工一共 4 人。录入这 4 位员工的薪资。全部录入后,打印提示“您已经全部录
入 4 名员工的薪资”。最后,打印输出录入的薪资和平均薪资。

sum = 0
work = 0
salary = []  # 存放员工薪资的数组

for i in range(4):
    a = input("请输入员工的薪资(输入Q和q时中途结束):")
    if a.upper() == "Q":
        print("录入完成,退出")
        break
    if float(a) < 0:
        print("输入薪资不规范,请重新输入")
        continue
    salary.append(float(a))
    sum += float(a)
    work += 1
    
else:
    print("您已经全部录入4名员工的薪资")

print(salary)
print("平均薪资为{0}".format(sum/work))

在这里插入图片描述

6、循环代码优化

编写循环时,遵守下面三个原则可以大大提高运行效率,避免不必要的低效计算:
(1) 尽量减少循环内部不必要的计算。
(2) 嵌套循环中,尽量减少内层循环的计算,尽可能向外提。
(3) 局部变量查询较快,尽量使用局部变量。
举例:
在这里插入图片描述
其他优化手段
(1)连接多个字符串,使用join()而不使用+
(2)列表进行元素插入和删除,尽量在列表尾部操作

7、使用zip()并行迭代

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

# 测试zip()并行迭代
names = ("kdx", "sss", "zhangsan", "lisi")
ages = (12, 14, 16, 18)
jobs = ("老师", "程序员", "公务员")

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

8、推导式创建序列

推导式是从一个或者多个迭代器快速创建序列的一种方法。它可以将循环和条件判断结合,从而避免冗长的代码。
(1)列表推导式
在这里插入图片描述
举例:

# 列表推导式
su1 = [i for i in range(1, 5)]
print(su1)
su2 = [i*3 for i in range(1, 5)]
print(su2)
su3 = [i*4 for i in range(1, 5) if i % 4 == 0]
print(su3)
su4 = [i for i in "abcdefg"]
print(su4)
su5 = [(i, j) for i in range(1, 4) for j in range(1, 4)]
for i in su5:
    print(i, end=" ")

在这里插入图片描述

(2)字典推导式

在这里插入图片描述
举例:

# 字典推导式
# 计算一段字符串每个字母的个数
my_text = 'i love you, i love changan, i love ssss'
dic1 = {i: my_text.count(i) for i in my_text}
print(dic1)

(3)集合推导式

在这里插入图片描述
举例:

# 集合推导式
jh = {i for i in range(1, 100) if i % 9 == 0}
print(jh)

在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
举例:

# 生成器推导式(生成元组)
ss = (i for i in range(1, 100) if i % 9 == 0)
for i in ss:
    print(i, end=" ")

for i in ss:
    print(i, end=" ")

如下图所示,第一次迭代可以得到数据,第二次迭代就没有数据了。
在这里插入图片描述

9、函数

(1)函数分类
在这里插入图片描述
(2)函数的定义和调用
<1>核心要点
在这里插入图片描述
在这里插入图片描述

<2> 形参和实参

在这里插入图片描述
(3)文档字符串(函数注释)
程序的可读性最重要,一般建议在函数体开始的部分附上函数定义说明,这就是“文档字符串”,也有人成为“函数的注释”。我们通过三个单引号或者三个双引号来实现,中间可以加入多行文字进行说明。(三个单引号也可以用来定义多行字符串)
在这里插入图片描述
(4)返回值
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LeetCode_C++

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值