Python ---循环语句

简介: Python ---循环语句

在相同的地方有相同的代码,用while来解决代码冗余

a=1  ##初始值
while a<=6:  #循环的结束条件,范围在a<=6
    a=a+1     #更新循环变量
    print(f'我吃了第{a}个小笼包')   ##循环体,执行的打印代码
 
打印结果:
我吃了第2个小笼包
我吃了第3个小笼包
我吃了第4个小笼包
我吃了第5个小笼包
我吃了第6个小笼包
我吃了第7个小笼包
当a=6的情况下,满足a=a+1,所以会打印7
若不想打印7,在6的时候就结束循环,将=去掉就行了,改变条件
break的用法,提前结束所有循环
a=0
while a<=6:
    a=a+1
    if a==3:
        print('吃到奇怪的东西')
        break##提前结束循环        
    print(f'我吃了第{a}个小笼包')
 
 continue仅仅跳过某个循环,后面的接着运行         
 a=0
while a<=6:
 
    a=a+1
    if a==3:
         print('吃到奇怪的东西')
         continue##跳过本次循环执行下一次循环       
    print(f'我吃了第{a}个小笼包')  
 
 
 
 
 
else在循环结束后的位置,不在循环之内           
 
添加else
第一种情况:没有break和continue
a=0
while a<6:
    a=a+1
 
    print(f'我吃了第{a}个小笼包')
else:  ###循环结束才会执行的代码  
    print('我吃完了小笼包')
 
  输出结果为:
我吃了第1个小笼包
我吃了第2个小笼包
我吃了第3个小笼包
我吃了第4个小笼包
我吃了第5个小笼包
我吃了第6个小笼包
我吃完了小笼包
 
 
 
 
 
第二种情况:break存在
a=0
while a<6:
    a=a+1
    if a==3:
        print('吃到奇怪的东西')
        break##提前结束循环        
    print(f'我吃了第{a}个小笼包')
else:    
    print('我吃完了小笼包')
 
输出结果为:
我吃了第1个小笼包
我吃了第2个小笼包
吃到奇怪的东西
break是没有正常执行循环的,提前终止循环,所以不会执行else里面的代码的
 
 
 
第三种情况:存在continue
a=0
while a<6:
 
    a=a+1
    if a==3:
         print('小明女朋友吃了第三个小笼包')
         continue##跳过本次循环执行下一次循环       
    print(f'我吃了第{a}个小笼包')
else:     
    print('我吃完了小笼包')
 
 
      输出结果为:
我吃了第1个小笼包
我吃了第2个小笼包
小明女朋友吃了第三个小笼包
我吃了第4个小笼包
我吃了第5个小笼包
我吃了第6个小笼包
我吃完了小笼包
 
continue会正常执行完循环的代码,会正常执行else里面的代码

break是没有正常执行循环的,提前终止循环,所以不会执行else里面的代码的

continue会正常执行完循环的代码,会正常执行else里面的代码

跟conyinue同层级后面的代码不会执行,就是摆放在continue的正在正下方

for循环:计数循环,迭代循环,适用于字符串,例如'python',迭代就是把这个字符串里面的6个字符都拿出来 p y t h o n

格式:
for i in 'python'
print(i)
 
输出结果就是:
p
y
t
h
o
n
将python 保存在变量i中,该for循环打印了6次
for循环的次数就是可迭代对象(字符串)的长度
 
去取完字符串的内容后自动结束运行
自动生成一个范围内的数字
for i in range(5):
    print(i)
    运行结果是
0
1
2
3
4
##括号内只有一个数字,默认从0开始,左闭右开区间,也就是>=0,<5,从0开始打印,到5就停止,5本身不打印
括号里面的数字得不到
 
 
for i in range(5,10):
    print(i)
    打印结果是:
5
6
7
8
9
 
 
#第一个数字是开始值,第二个数字是结束值
 
 
for i in range(5,20,5):
    print(i)
打印结果是:
5
10
15
第三位数字就是每一次循环要添加的数值 
 
range函数里面只能 传入整数
 
 
 
 
 
 
for i in range(1,7):
    if i==3:
        print('吃到了石头')
        break
    print(f'吃了{i}笼包子')
    输出:
 吃了1笼包子
吃了2笼包子
吃到了石头   
 
 
 
 
for i in range(1,7):
    if i==3:
        print('吃到了石头')
        continue
    print(f'吃了{i}笼包子')
 
输出:
吃了1笼包子
吃了2笼包子
吃到了石头
吃了4笼包子
吃了5笼包子
吃了6笼包子
while循环
i = 1
sum = 0
for i in range(0,100,3):
    if i % 3 == 0:
        sum += i
    i += 1
print("三的倍数相加", sum)
 
 
另一种写法:for循环
i = 1
sum = 0
while i <= 100:
    if i % 3 == 0:
        sum += i
    i += 1
print("三的倍数相加", sum)

else跟if判断结合使用,是当if elif里面的条件不满足的时候,才会执行

else跟循环结合使用,当循环正常结束的时候,才会执行代码

else一定要跟判断语句或者循环语句结合使用

循环嵌套

i=0
while i<5:
    x=0
    while x <5:
        x=x+1
        print(f'小明喝了一口饮料')
    i=i+1
    print(f'小明吃了{i}饼干')
输出:
小明喝了一口饮料
小明喝了一口饮料
小明喝了一口饮料
小明喝了一口饮料
小明喝了一口饮料
小明吃了1饼干
小明喝了一口饮料
小明喝了一口饮料
小明喝了一口饮料
小明喝了一口饮料
小明喝了一口饮料
小明吃了2饼干
小明喝了一口饮料
小明喝了一口饮料
小明喝了一口饮料
小明喝了一口饮料
小明喝了一口饮料
小明吃了3饼干
小明喝了一口饮料
小明喝了一口饮料
小明喝了一口饮料
小明喝了一口饮料
小明喝了一口饮料
小明吃了4饼干
小明喝了一口饮料
小明喝了一口饮料
小明喝了一口饮料
小明喝了一口饮料
小明喝了一口饮料
小明吃了5饼干
 
此代码运行顺序是先喝饮料,当饮料喝了5口,就吃一口饼干
 
喝了几口饮料这个循环是在吃饼干这个循环的内部
 
 
现在想让外面吃饼干的次数和喝饮料的次数一样,应该做出一下调整:
将第四行的条件改成while x <=i:
 
 
  打印结果则是:
小明喝了一口饮料
小明吃了1饼干
小明喝了一口饮料
小明喝了一口饮料
小明吃了2饼干
小明喝了一口饮料
小明喝了一口饮料
小明喝了一口饮料
小明吃了3饼干
小明喝了一口饮料
小明喝了一口饮料
小明喝了一口饮料
小明喝了一口饮料
小明吃了4饼干
小明喝了一口饮料
小明喝了一口饮料
小明喝了一口饮料
小明喝了一口饮料
小明喝了一口饮料
小明吃了5饼干
 
 
 
吃饼干和喝饮料的次数一样了
 
 
 
for i in range(1,6):
    for x in range(1,6):
        print(f'小明喝了一口饮料')        
    print(f'吃了{i}口饼干')
 
 
    打印结果:
吃了1口饼干
小明喝了一口饮料
吃了2口饼干
小明喝了一口饮料
小明喝了一口饮料
吃了3口饼干
小明喝了一口饮料
小明喝了一口饮料
小明喝了一口饮料
吃了4口饼干
小明喝了一口饮料
小明喝了一口饮料
小明喝了一口饮料
小明喝了一口饮料
吃了5口饼干
 
 
    喝饮料和吃饼干的次数不一样,若要一样,修改如下:
    将range(1,6)修改为range(1,i)
 
与while不同的是for循环是先吃饼干后喝饮料
原因:
因为在第修改后的79行,range(1,i),开始的i的值是1,所以范围是[1,1),j不能从里面获取值
当把print(f'吃了{i}口饼干')注释掉,再把range 的范围改成[1,1),就会发现打印没有结果
 
 
 
 
for i in range(1,6):
    for x in range(1,i+1):
        print('*'*x)        
    print('#'*i)   
打印结果是 :
 *
#
*
**
##
*
**
***
###
*
**
***
****
####
*
**
***
****
*****
#####
 为什么这个*号从第二次循环的时候开始就可以把第一次循环啊引出来的*号带上?这个*号每循环一次就会带上上一次的循环 ,
 就是因为print('*'*x)这个循环在这个print('#'*i)循环的里面,所以要等x在所规定的范围内print('*'*x) 打印完,才能打印#号,
原理和第9行输出的结果道理一样的                                    
for i in range(6):
    for x in range(i+1):
        print(f'{i}-{x}')        
    print('#'*5)
打印结果:
0-0
#####
1-0
1-1
#####
2-0
2-1
2-2
#####
3-0
3-1
3-2
3-3
#####
4-0
4-1
4-2
4-3
4-4
#####
5-0
5-1
5-2
5-3
5-4
5-5
#####
如何使打印的结果呈现在同一行呢?
应该修改一下内层循环的print,在后面添加end=' '
输出结果为:
1*0 1*1 #####
2*0 2*1 2*2 #####
3*0 3*1 3*2 3*3 #####
4*0 4*1 4*2 4*3 4*4 #####
5*0 5*1 5*2 5*3 5*4 5*5 #####
6*0 6*1 6*2 6*3 6*4 6*5 6*6 #####
7*0 7*1 7*2 7*3 7*4 7*5 7*6 7*7 #####
8*0 8*1 8*2 8*3 8*4 8*5 8*6 8*7 8*8 #####
9*0 9*1 9*2 9*3 9*4 9*5 9*6 9*7 9*8 9*9 #####
如果不想要*号,若是将打印*号的代码删去,打印结果为:
1*0 1*1 2*0 2*1 2*2 3*0 3*1 3*2 3*3 4*0 4*1 4*2 4*3 4*4 5*0 5*1 5*2 5*3 5*4 5*5 6*0 6*1 6*2 6*3 6*4 6*5 6*6 7*0 7*1 7*2 7*3 7*4 7*5 7*6 7*7 8*0 8*1 8*2 8*3 8*4 8*5 8*6 8*7 8*8 9*0 9*1 9*2 9*3 9*4 9*5 9*6 9*7 9*8 9*9
因为若是将打印*号的print删去,就没有Printf去给print(f'{i}*{x}',end=' ')换行了,所以后面的end就没用了
 
print('#'*5)  在本次代码中承担外层循环控制行的作用还要控制换行
 
若果不想要*号,可进行修改,将最后一行的代码进行修改
改为:print(end='\n'),则就是默认换行

外层循环控制行,内层循环控制列

for i in range(1,10):
    for x in range(1,i+1):
        print(f'{i}*{x}',end=' ')        
    print(end='\n')
 
    输出结果为:
1*1 
2*1 2*2 
3*1 3*2 3*3 
4*1 4*2 4*3 4*4 
5*1 5*2 5*3 5*4 5*5 
6*1 6*2 6*3 6*4 6*5 6*6 
7*1 7*2 7*3 7*4 7*5 7*6 7*7 
8*1 8*2 8*3 8*4 8*5 8*6 8*7 8*8 
9*1 9*2 9*3 9*4 9*5 9*6 9*7 9*8 9*9    
i=1
while i<=9:
    j=1
    while j<=i:
        print(f'{i}*{j}',end='  ')
        j=j+1
    print(end='\n')
    i+=1
 
 
  i = 1
while i <= 9:
    j = 1
    while j <= i:    # j的大小是由i来控制的
        print(f'{i}*{j}={i*j}', end='\t')
        j += 1
    print('')
    i += 1

for循环和while不同,while循环要写出条件,例如 j += 1

相关文章
|
5月前
|
测试技术 Python
Python接口自动化测试框架(基础篇)-- 流程控制之循环语句for&while
本文介绍了Python中的循环语句,包括while和for循环的使用,range()函数的运用,以及continue、break和pass关键字的说明,同时提出了关于while循环是否能与成员运算符结合使用的思考。
61 1
Python接口自动化测试框架(基础篇)-- 流程控制之循环语句for&while
|
5月前
|
Python
揭秘Python编程核心:一篇文章带你深入掌握for循环与while循环的奥秘!
【8月更文挑战第21天】Python中的循环结构——for循环与while循环,是编程的基础。for循环擅长遍历序列或集合中的元素,如列表或字符串;而while循环则在未知循环次数时特别有用,基于某个条件持续执行。本文通过实例展示两种循环的应用场景,比如用for循环计算数字平方和用while循环计算阶乘。此外,还通过案例分析比较了两者在处理用户输入任务时的不同优势,强调了根据实际需求选择合适循环的重要性。
59 0
|
2月前
|
开发工具 Python
[oeasy]python043_自己制作的ascii码表_循环语句_条件语句_缩进_indent
本文介绍了如何使用Python制作ASCII码表,回顾了上一次课程中`print`函数的`end`参数,并通过循环和条件语句实现每8个字符换行的功能。通过调整代码中的缩进,实现了正确的输出格式。最后展示了制作完成的ASCII码表,并预告了下一次课程的内容。
29 2
|
2月前
|
Python
在 Python 中实现各种类型的循环判断
在 Python 中实现各种类型的循环判断
35 2
|
2月前
|
Python
Python 中,循环判断
Python 中,循环判断
55 1
|
2月前
|
人工智能 Python
[oeasy]python039_for循环_循环遍历_循环变量
本文回顾了上一次的内容,介绍了小写和大写字母的序号范围,并通过 `range` 函数生成了 `for` 循环。重点讲解了 `range(start, stop)` 的使用方法,解释了为什么不会输出 `stop` 值,并通过示例展示了如何遍历小写和大写字母的序号。最后总结了 `range` 函数的结构和 `for` 循环的使用技巧。
40 4
|
3月前
|
Java 索引 Python
【10月更文挑战第19天】「Mac上学Python 30」基础篇11 - 高级循环技巧与应用
本篇将介绍更深入的循环应用与优化方法,重点放在高级技巧和场景实践。我们将讲解enumerate()与zip()的妙用、迭代器与生成器、并发循环以及性能优化技巧。这些内容将帮助您编写更高效、结构更合理的代码。
75 5
|
3月前
|
Python
Python 循环语句的高级应用与深度探索
本文深入探讨了Python中循环语句的高级应用,包括`for`循环遍历字典获取键值、同步遍历多个序列,以及`while`循环结合条件判断和异常处理。通过嵌套循环实现了矩阵乘法,并介绍了如何优化循环以提升程序性能。示例代码展示了这些技术的实际应用。
58 15
|
3月前
|
数据安全/隐私保护 Python
Python循环语句
【10月更文挑战第7天】
|
4月前
|
Python
Python 中如何循环某一特定列的所有行数据
Python 中如何循环某一特定列的所有行数据
41 2