三、循环语句

1.while循环

在程序中需要重复的执行一个功能的时候,用循环来实现。

1) while循环的格式
    while 条件:
        条件满足时,做的事情1
        条件满足时,做的事情2
        条件满足时,做的事情3
        ...(省略)...

代码:

#打印5遍 媳妇儿,我错了
i = 1
while i <= 5:
    print('媳妇儿,我错了')
    i += 1  # i = i + 1

计数器的书写习惯

  1. 一般计数器起始值定为0
  2. 计数器的作用是控制循环的遍数,但是一定要记得在程序中添加让计数器发生变化的代码。
  3. 让计数器发生变化的代码一定要放在while循环控制的代码块中,否则不起作用。

上述while循环代码可以修改一下:

i = 0
while i<1000:
    print('人生苦短,我用python')
    i+=1
2)计算1~100的累积和(包含1和100)
#分析:1-100的累加和,即1 + 2 + 3 + 4 +….,即前两个数字的相加结果 + 下一个数字( 前一个数字 + 1)。


i = 1
sum = 0
while i <= 100:
    sum = sum + i
    i += 1

print("1~100的累积和为:%d" % sum)
3)计算1~100之间偶数的累积和(包含1和100)

方法一:条件判断和2取余数则累加

#encoding=utf-8

i = 1
sum = 0
while i <= 100:
    if i % 2 == 0:
        sum = sum + i
    i+=1

print("1~100的累积和为:%d" % sum)

方法二:计数器控制

i = 0
result = 0
while i <= 100:
    result += i
    i += 2

# 输出2550
print(result)
4)打印所有3位回文数
#打印所有3位回文数
i = 100
while i<1000:
    # 百位
    hundreds = i//100
    # 个位
    single = i%10
    if hundreds==single:
        print(i)
    i+=1
5)循环的注意事项

如果在使用while循环的时候,计数器没有发生改变,那么计数器的值便一直是初始值,此时while后面的条件永远成立,那么循环会一直无限执行下去,无法终止,这种循环也称为死循环。

i = 0
while i<100:
    print(i)

2.停止循环

1)break

在实际应用中,如果循环满足了一定的条件,没必要接着往下运行了,那么这个时候就需要用到break退出循环。

#需求:循环吃5个苹果,吃完第3个吃饱了,第4 和 5 不吃了(不执行)
i = 1
while i <= 5:
    # 条件:如果吃到4 或 > 3 打印吃饱了不吃了
    if i == 4:
        print('吃饱了,不吃了')
        break
    print(f'吃了第{i}个苹果')
    i += 1
#需求:#用while循环输出1-100的数字,如果这个数字等于88,那就退出循环,停止输出。
i = 1
while i<101:
    if i==88:
        break
    print(i)
    i+=1
#需求:找到第一个5位数回文数
i = 10000
while i<100000:
    # 万位
    wan = i//10000
    # 千位
    thousand = i%10000//1000
    # 十位
    ten = i%100//10
    # 个位
    single = i%10
    # 万位和个位相同并且千位和十位相同
    if wan==single and thousand==ten:
        print(i)
        break
    i+=1
#需求升级:找到第10个5位数回文数

i = 10000
# 第num个回文数
num = 0
while i<100000:
    # 万位
    wan = i//10000
    # 千位
    thousand = i%10000//1000
    # 十位
    ten = i%100//10
    # 个位
    single = i%10
    # 万位和个位相同并且千位和十位相同
    if wan==single and thousand==ten:
        num+=1
        if num==10:
            print(i)
            break
    i+=1
2) continue

在实际应用中,如果循环满足了一定的条件,当前的代码没必要接着往下运行了,需要跳出本次循环进入到下一个循环,那么就需要用到continue

#吃5个苹果 -- 循环; 吃到第3个吃出一个虫子,第三个不吃了,没吃饱,继续吃4和5个苹果
i = 1
while i <= 5:
    # 条件
    if i == 3:
        print('吃出一个大虫子,这个苹果不吃了')
        # 如果使用continue,在continue之前一定要修改计数器,否则进入死循环
        i += 1
        continue
    print(f'吃了第{i}个苹果')
    i += 1
#用while循环输出1-100的数字,如果某个数字为偶数,那就停止本次循环不再输出,进入下一层循环。
i = 1
while i<101:
    if i%2==0:
        continue
    print(i)    
    i+=1
#把所有3位非回文数找出来
i = 100
while i<1000:
    # 百位
    hun = i//100
    # 个位
    single = 1%10
    if hun==single:
        continue
    print(i)        
    i+=1

3.while循环嵌套

所谓while循环嵌套,就是⼀个while⾥⾯嵌套⼀个while的写法

1) while嵌套的格式
    while 条件1:

        条件1满足时,做的事情1
        条件1满足时,做的事情2
        条件1满足时,做的事情3
        ...(省略)...

        while 条件2:
            条件2满足时,做的事情1
            条件2满足时,做的事情2
            条件2满足时,做的事情3
            ...(省略)...

代码如下:

j = 0
while j < 3:
    i = 0
    while i < 3:
        print('媳妇儿,我错了')
        i += 1
    print('刷晚饭的碗')
    print('一套惩罚结束-----------------------')
    j += 1

嵌套循环的执行流程:当内部循环执⾏完成之后,再执⾏下⼀次外部循环的条件判断

#打印5遍1到10
j = 0
while j<5:
    i=1
    while i<11:
        print(i)
        i+=1
    j+=1
2)打印星号(正方形)

代码实现:

j = 0
while j < 5:
    # 一行星星开始
    i = 0
    while i < 5:
        print('*', end='')
        i += 1
    # 一行星星结束:换行显示下一行
    print()
    j += 1
3)打印星号(三角形)

代码实现:

j = 0
while j < 5:
    # 一行星星开始
    i = 0
    while i <= j:
        print('*', end='')
        i += 1
    # 一行星星结束:换行显示下一行
    print()
    j += 1
4) 九九乘法表

实现代码:

# 重复打印9行表达式
j = 1
while j <= 9:
    # 打印一行里面的表达式 a * b = a*b
    i = 1
    while i <= j:
        print(f'{i}*{j}={j*i}', end='\t')
        i += 1
    print()
    j += 1

倒着的乘法表实现:

j = 9
while j > 0:
    # 一行的表达式开始
    i = 1
    while i <= j:
        print(f'{i} * {j} = {i*j}', end='\t')
        i += 1
    # 一行的表达式结束
    print()
    j -= 1

4.for循环

像while循环一样,for可以完成循环的功能。

在Python中 for循环可以遍历任何序列的项目,如一个列表或者一个字符串等。

1) for循环的格式
for 临时变量 in 列表或者字符串等可迭代对象:
    循环满足条件时执行的代码
#遍历字符串中每一个元素
str1 = 'python'
for i in str1:
    print(i)
2)使用 break

for循环中也可以使用break,和while循环中一样如果循环满足了一定的条件,使用break可以退出循环。

str1 = 'python'
for i in str1:
    # 当某些条件成立退出循环 -- break:条件 i取到字符e
    if i == 't':
        break
    print(i)
#打印字符串'hello world'中第一个'o'出现之前(不包含第一个'o')的所有元素
str = 'hello world'
for ele in str:
    if ele=='o':
        break
    print(ele)
#打印字符串'hello world'中第三个'l'出现之前(不包含第三个'l')的所有元素
str = 'hello world'
# 统计出现的l次数
num = 0
for ele in str:
    if ele=='l':
        num+=1
        if num==3:
            break
    print(ele)
3)使用 continue

for循环中也可以使用continue,和while循环中一样如果循环满足了一定的条件,使用continue跳出本次循环执行下一次循环。

str1 = 'python'
for i in str1:
    # 当某些条件成立退出循环 -- continue:条件 i取到字符e
    if i == 'o':
        continue
    print(i)
#打印字符串'hello world'中除了'w'之外的每一个元素
str = 'hello world'
for ele in str:
    if ele=='w':
        continue
    print(ele)

5.while循环结合else

1) while…else基础
while 条件:
    条件成⽴重复执⾏的代码
else:
    循环正常结束之后要执⾏的代码

代码实现:

i = 1
while i <= 5:
    print('媳妇⼉,我错了')
    i += 1
else:
    print('媳妇原谅我了,真开⼼,哈哈哈哈')
#用while循环输出三次”人生苦短,我用python”,正常结束循环输出”好好学习,天天向上“。
i = 0
while i<3:
    print('人生苦短,我用python')
    i+=1
else:
    print('好好学习,天天向上')
#抽签(随机数1-9)3次,如果抽到6说明很幸运,媳妇原谅,如果三次都没有抽中6就跪搓衣板
import random

i = 0
while i<3:
    num = random.randint(1,9)
    if num==6:
        print('媳妇原谅')
        break
    i+=1
else:
    print('跪搓衣板')
2)结合break
i = 1
while i <= 5:
    if i == 3:
        break
    print('媳妇儿,我错了')
    i += 1
else:
    print('媳妇原谅我了,真开心呐,哈哈哈哈')

所谓else指的是循环正常结束之后要执⾏的代码,即如果是break终⽌循环的情况,else下⽅缩进

的代码将不执⾏。

i==3的时候,执行了break,一旦执行了break,else语句将不会执行了 所以不会执行原谅的代码

2)结合continue
i = 1
while i <= 5:
    if i == 3:
        i += 1
        continue
    print('媳妇儿,我错了')
    i += 1
else:
    print('媳妇原谅我了,真开心呐,哈哈哈哈')

因为continue是退出当前⼀次循环,继续下⼀次循环,所以该循环在continue控制下是可以正常

结束的,当循环结束后,则执⾏了else缩进的代码。

6. for…else

1)语法:

所谓else指的是循环正常结束之后要执⾏的代码,即如果是break终⽌循环的情况,else下⽅缩进

的代码将不执⾏。

for 临时变量 in 序列:
    重复执⾏的代码    
    ...
else:
    循环正常结束之后要执⾏的代码

代码实现:

str1 = 'python'
for i in str1:
    print(i)
else:
    print('循环正常结束执行的else的代码')
2)结合break
str1 = 'python'
for i in str1:
    if i == 't':
        print('遇到t不打印')
        break
    print(i)
else:
 print('没有遇到t')

没有执⾏else缩进的代码。

#输入一个字符串判断是否里面包含i这个字母(不能使用in或not in)。包含就输出包含i,不包含输出不包含

str = input('请输入字符串')
for ele in str:
    if ele=='i':
        print('包含i')
        break
else:
    print('不包含i')
3)结合continue
str1 = 'itheima'
for i in str1:
    if i == 'e':
        print('遇到e不打印')
        continue
    print(i)
else:
    print('循环正常结束之后执⾏的代码')

因为continue是退出当前⼀次循环,继续下⼀次循环,所以该循环在continue控制下是可以正常

结束的,当循环结束后,则执⾏了else缩进的代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值