欢迎关注微信公众号(医学生物信息学),医学生的生信笔记,记录学习过程。
重复一定次数的循环,称为计次循环,如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
。如果有两个参数,则表示指定的是start
和end
。只有当三个参数都存在时,最后一个参数才表示步长。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)初始化变量
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('对不起,三次均输入错')
循环结构互相嵌套
循环结构也可以互相嵌套,在一个循环结构中嵌套另外一个完整的循环结构就称为嵌套循环。
程序跳转语句
break
和continue
只能用在循环结构中,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中的保留字。- 在语法结构中只起到占位符作用,使语法结构完整,不报错。
- 一般可用在
if
、for
、while
、函数的定义、类的定义中。
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版)