python学习_循环结构(while循环和for循环)

一、什么叫循环结构?

反复做同一件事情的情况,就叫循环

python中的循环结构主要有两种:

1)while

2)for-in

二、while循环

只要条件成立,其包含的某条语句或某个语句块就会一直被执行

循环结构while与分支结构if的区别:

if是判断一次,条件为True就执行一次执行体

while是判断N+1次,条件为True就执行N次循环体

while循环语法结构

while 条件表达式:

    条件执行体(循环体)

#while循环

'''程序要求1:计算1~1000000的累和'''
i=1
sum=0   
while i<=1000000:
    sum+=i
    i+=1
print(sum)


#程序要求2:计算0~100之间偶数的累加和
sum=0
a=1
while a<=100:
    if a%2==0:
        sum+=a
    a+=1
print("0~100之间偶数的累加和为:",sum)

#程序要求3:计算0~100之间奇数的累加和
sum=0
a=1
while a<=100:
    if a%2!=0:
        sum+=a
    a+=1
print("0~100之间奇数的累加和为:",sum)

while循环流程图:

while循环的执行流程:

  • 初始化变量
  • 条件判断(对初始化的那个变量进行判断)
  • 循环体
  • 改变变量(改变的也是初始化的那个变量)

三、for-in循环

  • in表示从(字符串、序列)中依次取值,又叫做遍历
  • for-in遍历的对象必须是可迭代对象

for-in语法结构

for 自定义的变量 in 可迭代对象:
    循环体


'''程序要求1:输出100~999之间的水仙花数
什么叫水仙花数?
水仙花数是指一个 3 位数,它的每个位上的数字的3次幂之和等于它本身。例如:1**3 + 5**3+ 3**3 = 153
'''
for i in range(100,1000):
    ge=i%10    #得出个位数
    shi=i//10%10  #得出十位数,也可以i%100//10
    bai=i//100   #得出百位数
    if ge**3+shi**3+bai**3==i:
        print(i)

'''程序要求2:用for循环计算1~1000000的累和'''
sum=0
for i in range(1,1000001):
    sum=sum+i
print(sum)

'''程序要求3:用for循环计算1~100之间偶数的和'''
sum=0
for i in range(1,101):
    if i%2==0:
        sum+=i
print(sum)

for-in流程图

 注意:当自定义变量在循环体中不用到时,可以用下划线_ 替代自定义变量

 

for _ in 可迭代对象:
    循环体(循环体中不用到自定义的变量)


'''循环输出语句5次'''
for _ in range(5): print('执行循环')

四、流程控制语句break(非正常结束循环)

break语句用于结束循环结构,通常与分支结构if一起使用

'''程序要求:从键盘录入密码,最多录入3次,如果正确就结束循环'''
for i in range(3):
    password=input("请输入密码:")
    if password=="8888":
        print("密码正确")
        break
    else:
        print("密码错误!")
'''程序要求:从键盘录入密码,要求输入3次,如果密码正确则退出循环'''

'''初始化变量'''
n=0

'''条件判断'''
while n<3:
    '''条件执行体'''
    pwd=input("请输入密码:")
    if pwd=='8888':
        print("密码正确")
        break
    else:
        print("密码错误!")
    '''改变变量'''
    n += 1

五、流程控制语句continue

continue语句用于结束当前循环,进入下一次循环,通常也是与分支结构if一起使用

'''程序要求:输出1~50之间所有5的倍数,5、10、15、20.....
   5的倍数:与5的余数为0的数就是5的倍数
   反过来说:也可以是与5的余数不为0的数就不是5的倍数
'''

for i in range(1,51):
    if i%5==0:
        print(i)


print("----------使用continue---------")
for i in range(1,51):
    if i%5!=0:
        continue
    print(i)

break和continue流程执行图如下:

 六、else语句

与else语句配合使用的三种情况:

for i in range(3):
    pwd=input("请输入密码:")
    if pwd=='8888':
        print("密码正确")
        break
    else:
        print("密码错误")
else:
    print("密码输入错误次数过多,被锁定")
n=0
while n<3:
    pwd=input("请输入密码:")
    if pwd=='8888':
        print("密码正确")
        break
    else:
        print("密码错误")
    n+=1
else:
    print("密码错误次数过多,被锁定")

七、嵌套循环

循环结构中又嵌套了另外的完整的循环结构,如下图,这种就叫嵌套循环,其中内层循环做为外层循环的循环体执行

'''题目要求:打印一个9行的直角三角形,如下
*
**
***
****
*****
******
*******
********
*********
'''
for i in range(1,10):   #控制行
    for j in range(1,i+1):   #控制列
        print("*",end="")
    print()

print("-------------将上面例子改成一个九九乘法表---------------------")
for i in range(1,10):
    for j in range(1,i+1):
        print(i,"*",j,"=",i*j,end="\t")
    print()


#while循环打印九九乘法表
i=1 #
while i<=9:
    j=1 #
    while j<=i:
        print(j,'*',i,'=',j*i,end='\t')
        j+=1
    print() #换行
    i+=1

二重循环中的break和continue只用于控制一层循环(本层循环)

'''输出10以内的素数
素数:也叫质数,大于1的自然数,除了1和它本身外不能被其他数整除的自然数
'''
#流程控制语句break和continue在二重循环中的使用
for i in range(2,11): for j in range(2,i): if i%j==0: break else: print(i,'是素数')
posted @ 2023-07-17 12:01  机智的老猫咪  阅读(1381)  评论(0编辑  收藏  举报