day5----python基础之循环结构

本文详细介绍了Python中的循环结构,包括while循环、for循环、可迭代对象、range对象、break和continue语句的使用,以及else子句。此外,还讲解了zip()函数的并行迭代,列表推导式、字典推导式和集合推导式的应用,并通过实例展示了这些概念的实际操作。
摘要由CSDN通过智能技术生成

循环结构

 

循环结构用来重复执行一条或多条语句。表达这样的逻辑:如果符合条件,则反复执行循环体里的语句。在每次执行完后都会判断一次条件是否为 True,如果为 True 则重复执行循环体里的语句。图示如下:

while 循环

while 循环的语法格式如下:

while     条件表达式:循环体语句

for 循环和可迭代对象遍历

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

可迭代对象

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

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

range 对象

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

                                                                 range(start, end   [,step])

生成的数值序列从 start 开始到 end 结束(不包含 end)。若没有填写 start,则默认从 0

开始。step 是可选的步长,默认为 1。如下是几种典型示例: for i in range(10)       产生序列:0 1 2 3 4 5 6 7 8 9 for i in range(3,10)  产生序列:3 4 5 6 7 8 9 for i in range(3,10,2)       产生序列:3  5     7     9

break 语句

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

continue 语句

continue 语句用于结束本次循环,继续下一次。多个循环嵌套时,continue 也是应用于最近的一层循环。

else 语句

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

while     条件表达式:循环体 else:

语句块

或者:

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

语句块

使用 zip()并行迭代 

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

列表推导式

列表推导式生成列表对象,语法如下:

[表达式 for item in 可迭代对象 ] 或者:{表达式 for item in 可迭代对象 if 条件判断}

字典推导式

字典的推导式生成字典对象,格式如下:

               {key_expression    :    value_expression     for    表达式     in    可迭代对象}

类似于列表推导式,字典推导也可以增加 if 条件判断、多个 for 循环。

集合推导式

集合推导式生成集合,和列表推导式的语法格式类似:

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

随堂训练

a={'name':'ding','age':18,'job':'student'}
for x in a.keys():
    print(x)
print("#################")

#100以内奇数和
sum=0
for i in range(100):
    if i%2==0:
        sum=sum+i
print(sum)

H:\Anaconda3\python.exe H:/PycharmProjects/MyDemo/day5/demo1.py
name
age
job
#################
2450

Process finished with exit code 0

#打印9x9乘法表

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

H:\Anaconda3\python.exe H:/PycharmProjects/MyDemo/day5/demo2.py
1x1=1    
2x1=2    2x2=4    
3x1=3    3x2=6    3x3=9    
4x1=4    4x2=8    4x3=12    4x4=16    
5x1=5    5x2=10    5x3=15    5x4=20    5x5=25    
6x1=6    6x2=12    6x3=18    6x4=24    6x5=30    6x6=36    
7x1=7    7x2=14    7x3=21    7x4=28    7x5=35    7x6=42    7x7=49    
8x1=8    8x2=16    8x3=24    8x4=32    8x5=40    8x6=48    8x7=56    8x8=64    
9x1=9    9x2=18    9x3=27    9x4=36    9x5=45    9x6=54    9x7=63    9x8=72    9x9=81    

Process finished with exit code 0
 

salary=[]
t=0
sum=0
for i in range(4):
    s=input("请输入薪资P(按Q或q结束):")
    if s.upper()=='Q':
        print("录入中断,退出")
        break
    if float(s)<0:
        print("重新输入!")
        continue
    t+=1
    salary.append(float(s))
    sum+=float(s)
else:
    print("全部录入完成")

print("员工数:{0}".format(t))
print("录入薪资:{0}".format(salary))
print("平均薪资:{0}".format(sum/t))

H:\Anaconda3\python.exe H:/PycharmProjects/MyDemo/day5/demo3.py
请输入薪资P(按Q或q结束):12
请输入薪资P(按Q或q结束):23
请输入薪资P(按Q或q结束):24
请输入薪资P(按Q或q结束):62
全部录入完成
员工数:4
录入薪资:[12.0, 23.0, 24.0, 62.0]
平均薪资:30.25

Process finished with exit code 0
 

#zip并行迭代

names=("ding1","ding2","ding3")
ages=(18,20,19)
address=("hangzhou","shanghai","beijing")

for names,ages,address in zip(names,ages,address):
    print("{0}---{1}---{2}".format(names,ages,address))

H:\Anaconda3\python.exe H:/PycharmProjects/MyDemo/day5/demo4.py
ding1---18---hangzhou
ding2---20---shanghai
ding3---19---beijing

Process finished with exit code 0

#字典推导式
my_text="I love you blake, I love you baby"
char_count={c:my_text.count(c)for c in my_text}
print(char_count)

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

#生成器推导式(生成元组)
gnt=(x for x in range(4))
print(gnt)
print(tuple(gnt))

H:\Anaconda3\python.exe H:/PycharmProjects/MyDemo/day5/demo5.py
{'I': 2, ' ': 7, 'l': 3, 'o': 4, 'v': 2, 'e': 3, 'y': 3, 'u': 2, 'b': 3, 'a': 2, 'k': 1, ',': 1}
{99, 36, 72, 9, 45, 81, 18, 54, 90, 27, 63}
<generator object <genexpr> at 0x00000181D9B48248>
(0, 1, 2, 3)

Process finished with exit code 0

#画⚪
import turtle

my_colors=("red","blue","green","yellow","black")
for i in range(100):
    turtle.penup()
    turtle.goto(0,-i*10)
    turtle.pendown()
    turtle.color(my_colors[i%len(my_colors)])
    turtle.circle(10+i*10)

turtle.done()

 

#画棋盘
import turtle

#     turtle.goto(x,180)
for i in range(0, 181, 10):
    turtle.goto(180, i)
    turtle.penup()
    turtle.goto(0, i+10)
    turtle.pendown()

for j in range(0,181,10):
    turtle.penup()
    turtle.goto(j,0)
    turtle.pendown()
    turtle.goto(j,180)


turtle.done()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值