Python—循环结构

欢迎关注微信公众号(医学生物信息学),医学生的生信笔记,记录学习过程。

重复一定次数的循环,称为计次循环,如for循环。

一直重复,直到条件不满足时才结束的循环,称为条件循环。只要条件为真,这种循环会一直持续下去,如while循环。

在Python中循环结构分两类,一类是遍历循环结构for,一类是无限循环结构while

if结构可以互相嵌套,循环结构也可以互相嵌套,建议最多不超过三层。

遍历循环for的语句结构

### 第一种
# 对象可以是任何有序的序列对象,如字符串、列表和元组等。
for 循环变量 in 遍历对象:
        语句块

### 第二种
for 循环变量 in 遍历对象:
    语句块1
else:
    语句块2

示例

# 遍历字符串
for i in 'hello':
    print(i)

magicians = ['alice', 'david', 'carolina']
for magician in magicians:
 print(magician)

magicians = ['alice', 'david', 'carolina']
for magician in magicians:
 print(f"{magician.title()}, that was a great trick!")

magicians = ['alice', 'david', 'carolina']
for magician in magicians:
 print(f"{magician.title()}, that was a great trick!")
 print(f"I can't wait to see your next trick, {magician.title()}.\n")

magicians = ['alice', 'david', 'carolina']
for magician in magicians:
    print(f"{magician.title()}, that was a great trick!")
    print(f"I can't wait to see your next trick, {magician.title()}.\n")
print("Thank you, everyone. That was a great magic show!")

# range()函数,Python中的内置函数,产生一个[n,m)的整数序列,包含n,但是不包含m,多用于for循环语句中。
for i in range(1,11):
    #print(i)
    if i%2==0:
        print(i,'是偶数')

range(start,end,step)
  • start:用于指定计数的起始值,可以省略,如果省略则从0开始。
  • end:用于指定计数的结束值(但不包括该值,如range(7)得到的值为0~6,不包括7。)该参数不能省略。当range()函数中只有一个参数时,即表示指定计数的结束值。
  • step:用于指定步长,即两个数之间的间隔可以省略,如果省略step则表示步长为1。如range(1,7)将得到1、2、3、4、5、6。
    在使用range()函数时,如果只有一个参数,则表示指定的是end。如果有两个参数,则表示指定的是startend。只有当三个参数都存在时,最后一个参数才表示步长。
for i in range(1,10,2):
   print(i,end=" ")

# 计算1-10之间的累加和
s=0 # 用于存储累加和
for i in range(1,11):
    s+=i # 相当于 s=s+i
print('1-10之间的累加和为:',s)

for i in range(100,1000):
    sd=i%10 # 获取个位上的数字     假设   153%10 -->3
    tens=i//10%10 # 获取十位上的数字    153//10-->15  15%10-->5
    hundred=i//100   # 获取百位上的数字   153//100-->1
    # 判断
    if sd**3+tens**3+hundred**3==i:
        print(i)

s=0 # 用于存储累加和
for  i in range(1,11):
    s+=i
else:
    print('1-10之间的累加和为:',s)

squares = []
for value in range(1, 11):
    square = value ** 2
    squares.append(square)
print(squares)

squares = []
for value in range(1,11):
 squares.append(value**2)
print(squares)

# 三行四列
for i in range(1,4): # 外层循环行
    for j in range(1,5): # 内层循环 列
        print('*',end='')
    print() # 空的print语句,作用是换行
print('-----------------')
for i in range(1,6): # 5行
    # *的个数与行相同,range(1,2),第二行,range(1,3)
    for j in range(1,i+1):
        print('*',end='')
    print() # 空的print语句,换行

# 倒三角形
# 1-->5 range(1,6) ,2-->4 range(1,5) 3-->3  range(1,4) ...    5-->1 range(1,2)
for i in range(1,6): # i表示的是行号,第i行
    for j in range(1,7-i):
        print('*',end='')
    print() # 内层循环执行完毕之后,空print()换行

print('------------------------------')
# 等腰三角形
'''
&&&&*
&&&***
&&*****
&*******
*********
'''
for i in range(1,6): # 外层循环 5行
    # 倒三角形
    for j in range(1,6-i):
        # print('&',end='')
        print(' ',end='')
    # 1,3,5,7...等腰三角形 range(1,2) ,range(1,4),range(1,6),  range(1,8),,,range(1,10)
    for k in range(1,i*2):
        print('*',end='')
    print() # 当两个并列的for循环执行完毕之后,再换行

row=eval(input('请输入菱形的行数:'))
while row%2==0: # 判断行数的奇偶性,行数是偶数,重新输入行数
    print('重新输入菱形的行数:')
    row=eval(input('请输入菱形的行数:'))
# 输出菱形的
top_row=(row+1)//2 # 上半部分的行数
# 上半部分
for i in range(1,top_row+1): #
    # 倒三角形
    for j in range(1,top_row+1-i):
        # print('&',end='')
        print(' ',end='')
    # 1,3,5,7...等腰三角形 range(1,2) ,range(1,4),range(1,6),  range(1,8),,,range(1,10)
    for k in range(1,i*2):
        print('*',end='')
    print() # 当两个并列的for循环执行完毕之后,再换行
'''
&&&&*
&&&***
&&*****
&*******
*********
&*******
&&*****
&&&***
&&&&*
'''

# 下半部分
bottom_row=row//2
for i in range(1,bottom_row+1):
    # 直角三角形
    for j in range(1,i+1):
        print(' ',end='')

    # 倒三角
    for k in range(1,2*bottom_row-2*i+2): # 1 -->range(1,8) ,2-->range(1,6) ,3-->range(1,4) ,range(1,2)
        print('*',end='')
    print()

row=eval(input('请输入菱形的行数:'))
while row%2==0: # 判断行数的奇偶性,行数是偶数,重新输入行数
    print('重新输入菱形的行数:')
    row=eval(input('请输入菱形的行数:'))
# 输出菱形的
top_row=(row+1)//2 # 上半部分的行数
# 上半部分
for i in range(1,top_row+1): #
    # 倒三角形
    for j in range(1,top_row+1-i):
        # print('&',end='')
        print(' ',end='')
    # 1,3,5,7...等腰三角形 range(1,2) ,range(1,4),range(1,6),  range(1,8),,,range(1,10)
    for k in range(1,i*2):
        if k==1 or k==i*2-1:
            print('*',end='')
        else:
            print(' ',end='')
    print() # 当两个并列的for循环执行完毕之后,再换行
'''
&&&&*
&&&***
&&*****
&*******
*********
&*******
&&*****
&&&***
&&&&*
'''

# 下半部分
bottom_row=row//2
for i in range(1,bottom_row+1):
    # 直角三角形
    for j in range(1,i+1):
        print(' ',end='')

    # 倒三角
    for k in range(1,2*bottom_row-2*i+2): # 1 -->range(1,8) ,2-->range(1,6) ,3-->range(1,4) ,range(1,2)
        if k==1 or k==2*bottom_row-2*i+2-1:

            print('*',end='')
        else:
            print(' ',end='')
    print()

无限循环while的语句结构

在使用while循环语句时,一定不要忘记添加将循环条件变为False的代码(如i=False),否则会产生死循环。

如果程序陷入无限循环,既可按 Ctrl + C,也可关闭显示程序输出的终端窗口。

### 第一种
while 表达式:
     语句块
     
### 第二种
while 表达式:
语句块1
else:
语句块2
while循环的四个步骤:
  1. 初始化变量
  2. 条件判断
  3. 语句块
  4. 改变变量

示例

# (1)初始化变量
answer=input('今天要上课吗?y/n')
while answer=='y': # (2)条件判断
    print('好好学习,天天向上') # (3)语句块
    #(4)改变变量
    answer=input('今天要上课吗?y/n')

# 1-100之间的累加和
s=0 # 存储累加和
i=1 # (1)初始化变量
while i<=100: #(2)条件判断
    s+=i # (3)语句块
    # (4)改变变量
    i+=1 # 相当于i=i+1
print('1-100之间的累加和:',s)

# 1-100之间的累加和
s=0 # 存储累加和
i=1 # (1)初始化变量
while i<=100: #(2)条件判断
    s+=i # (3)语句块
    # (4)改变变量
    i+=1 # 相当于i=i+1
else:
    print('1-100之间的累加和:',s)

current_number = 1
while current_number <= 5:
 print(current_number)
 current_number += 1

prompt = "\nTell me something, and I will repeat it back to you:"
prompt += "\nEnter 'quit' to end the program. "
message = ""
while message != 'quit':
 message = input(prompt)
 print(message)

prompt = "\nTell me something, and I will repeat it back to you:"
prompt += "\nEnter 'quit' to end the program. "
message = ""
while message != 'quit':
    message = input(prompt)
    if message != 'quit':
        print(message)

prompt = "\nTell me something, and I will repeat it back to you:"
prompt += "\nEnter 'quit' to end the program. "
active = True
while active:
    message = input(prompt)
    if message == 'quit':
        active = False
    else:
        print(message)

# (1)初始化变量
i=0
while i<3:# (2)条件判断 0,1,2
    # (3)语句块
    user_name=input('请输入您的用户名:')
    pwd=input('请输入您的密码:')
    # 登录操作,if...else...
    if user_name=='ysj' and pwd=='888888':
        print('系统正在登录,请稍后')
        # 需要改变循环变量,目的:退出循环
        i=8 #   第三行 判断 i<3, 8<3 False退出while循环  #(4)改变变量
    else:
        if i<2:
            print('用户名或密码不正确,您还有',2-i,'次机会')
        i+=1 #相当于i=i+1  # (4)改变变量

# 单分支的判断
if i==3: # 当用户名或密码输入三次不正确的时候,循环执行结束了,i的最大值为3
    print('对不起,三次均输入错')

循环结构互相嵌套

循环结构也可以互相嵌套,在一个循环结构中嵌套另外一个完整的循环结构就称为嵌套循环。

程序跳转语句

breakcontinue只能用在循环结构中,break用于退出整个循环结构,continue用于结束本次循环而进入下一次循环。

break

程序跳转语句break用于跳(退)出循环结构,通常与if一起搭配使用。如果使用嵌套循环,break语句将跳出最内层的循环:

### 第一种
while 表达式1:
      执行代码
      if  表达式2:
         break

### 第二种
for 循环变量 in 遍历对象:
      执行代码
      if    表达式:
          break

示例

s=0 # 存储累加和
i=1   #(1)初始化变量
while i<11:  #(2)条件判断
    # (3)语句块
    s+=i
    if s>20:
        print('累加和大于20的当前数是:',i)
        break
    i+=1 # (4)改变变量

i=0 # 统计登录的次数 (1)初始化变量
while i<3:  #(2)条件判断
    # (3)语句块
    user_name=input('请输入用户名:')
    pwd=input('请输入密码:')
    if user_name=='ysj' and pwd=='888888':
        print('系统正在登录,请稍后...')
        break
    else:
        if i<2:
            print('用户名或密码不正确,您还有',2-i,'次机会')
    # (4)改变变量
    i+=1
else: # while...else
    print('三次均输入错误!')

for i in 'hello':
    if i=='e':
        break
    print(i)

prompt = "\nPlease enter the name of a city you have visited:"
prompt += "\n(Enter 'quit' when you are finished.) "
while True:
    city = input(prompt)
    if city == 'quit':
        break
    else:
        print(f"I'd love to go to {city.title()}!")

for i in range(3):
    # (3)语句块
    user_name = input('请输入用户名:')
    pwd = input('请输入密码:')
    if user_name == 'ysj' and pwd == '888888':
        print('系统正在登录,请稍后...')
        break
    else:
        if i < 2:
            print('用户名或密码不正确,您还有', 2 - i, '次机会')
else: # for...else
    print('三次均输入错误!')

continue

continue的作用是用于跳过本次循环的后续代码,而继续执行下一次循环操作,continue在循环中通常也是与if一起搭配使用。如果使用嵌套循环,continue语句将只跳过最内层循环中的剩余语句:

### 第一种
while 表达式1:
      执行代码
      if  表达式2:
         continue

### 第二种
for 循环变量 in 遍历对象:
      执行代码
      if    表达式:
          continue

示例

s=0
i=1  #(1)初始化变量
while i <=100: #(2)条件判断
    # (3)语句块
    if i%2==1: # 奇数
        i+=1
        continue # 不再执行后面的代码了
    # 累加求和的代码
    s+=i
    i+=1
print('1-100之间的偶数和:',s)

s=0
for i in range(1,101):
    if i%2==1:
        continue
    # 累加求和的代码
    s+=i
print('1-100之间的偶数和是:',s)

current_number = 0
while current_number < 10:
    current_number += 1
    if current_number % 2 == 0:
        continue
    print(current_number)

空语句pass

  • pass是Python中的保留字。
  • 在语法结构中只起到占位符作用,使语法结构完整,不报错。
  • 一般可用在ifforwhile、函数的定义、类的定义中。
if True:
    pass

while True:
    pass

for i in range(10):
    pass

参考资料

[1] https://www.bilibili.com/video/BV1wD4y1o7AS/?p=7&share_source=copy_web&vd_source=d40f0854606900163a564a59cfa3027c

[2] 零基础Python学习笔记 明日科技编著

[3] Python编程从入门到实践(第3版)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值