④初识python--python的while与for循环结构

python的循环结构

一、while循环

1、循环简介

循环:有条件重复做同一件事,直到条件不满足==。

循环的作用:让·代码高效的重复执行

2、while循环三步走

① 定义一个计数器 如: i = 0 , i = 1

② 编写循环条件 如:while i < 100:

③ 在循环内部更新计数器 如 : i +=1

i = 0
while i < 100:
    print("麻衣学姐")
    i += 1

3、案例(实现1-100累加)

i = 1
sum1 = 0
while i <= 100:
    sum1 += i
    i += 1
print("1-100累加的结果为:%d" %sum1)

二、循环中的两大关键词

1、break与continue是循环中满足一定条件退出循环的两种不同方式

break:一旦在循环中执行了break关键字,则强制终止整个循环结构(终止循环)

continue:一旦在循环中执行了continue关键词,则会终止本次正在执行的循环,进入下一次的循环结构(退出当前循环继而执行下一次循环

2、代码分析

break 关键词

i = 1
while i <= 5:
    if i == 4:
        print("已经吃饱了,不吃了")
        break
    print("正在吃第{}个苹果".format(i))
    i += 1

image-20230909160817936

continue 关键词

i = 1
while i <= 5:
    if i == 4:
        print("这个苹果有虫,不吃了,吃下一个")
        i += 1    # 这个很重要,因为程序不会执行continue关键词后面的语句,不会更新计数器 i的值,会进入死循环!
        continue
    print("正在吃第{}个苹果".format(i))
    i += 1

image-20230909161213223

三、死循环

1、死循环的概念
在编程中一个靠自身控制无法终止的程序称为 ”死循环“

① 在while三步走中没有更新计算器的值 ,会造成死循环

② 在while循环中,在使用continue关键词之前没有更新计算器,也会造成死循环

while True:
    print("你是风儿,我是沙~")

2、死循环的意义
与input()方法 (input方法具有暂停程序执行功能)结合,是系统一直执行下去,又可以与用户进行交互。

while True:
    print("欢迎使用学生管理系统")
    print("[1]添加学生信息")
    print("[2]删除学生信息")
    print("[3]修改学生信息")
    print("[4]查询学生信息")

    # 添加一个input()输入语句,给程序添加一个 ”暂停“功能

    user_num = int(input("请输入您要执行的功能编号:"))

1693555343091

四、while循环案例

1、猜数字

需求:计算机从1-10随机输出数字,用户有三次输入数字判断机会,当猜测成功退出

import random

computer = random.randint(1, 10)
i = 1

while i <= 3:
    # input具有暂停程序的功能,放在while循环语句里面每次都重新输入数字进行判断
    num = int(input("请输入您猜测的数字(1-10):")) 
    if num > computer:
        print("您猜大了!")
    elif num == computer:
        print("恭喜您猜对了!")
        break  # break关键词 当猜测成功则不需要重新猜测,可以退出当前循环
    else:
        print("您猜小了!")
    i += 1

五、for循环

1、while循环与for循环对比

① 对于循环次数已知的情况,适合使用while循环(因为while循环有遍历次数)

② 对于循环次数未知的情况,如数据容器(字符串、列表、元组、字典、集合统称为数据容器)推荐使用for循环,其实for循环是专门用于实现对数据容器的遍历

2、for循环的语法

for 临时变量 in 数据容器:
	print(临时变量)
str1 = 'hello world'

for i in str1:
    print(i)

3、range()方法
range()用来生成指定长度的容器,如[1, 2, 3]

range(start , stop, step) 
start : 代表起始值,从哪里开始生成(默认值为0)
stop : 代表结束值,但不包括结束值(包头不包尾)
step : 代表步长,每次前进多少个元素(默认值为1
for i in range(5): # range(0, 5, 1)
    print(i)
sum1 = 0
for i in range(1101):
    sum1 += i

print("1到100的和为:%d" % sum1)

range()函数的反向输出:

range(8, 0, -1) => 8 7 6 5 4 3 2 1

还有reversed(range())实现反向输出

4、for循环进行用户名与密码登陆认证**

'''
默认username = ’admin' password = ‘admin888‘
只有三次登陆机会,超过三次登陆则登陆失败
登陆失败则提示用户名错误或密码错误,以及剩余的登陆机会次数
'''

trycount = 0

for i in range(3):
    username = input('请输入您的用户名:')
    password = input('请输入您的登陆密码:')
    trycount += 1

    if username == 'admin':
        if password == 'admin888':
            print('恭喜您登陆成功!')
            break
        else:
            print('您的密码错误,请重新登陆!')
            print(f'您还剩余{3 - trycount}次的登陆机会!')

    else:
        print('您的用户名错误,请重新登陆!')
        print(f'您还剩余{3 - trycount}次的登陆机会!')

1693651016212

5、for循环中的else结构

for结构可以和else结合使用,else下方缩进的代码强调的是当循环正常结束之后要执行的代码

强调的是正常结束,非正常结束不会执行else下方缩进的代码。(比如遇到break的情况)

基本语法:

for 临时变量 in 序列:
    循环体
else:
    当for循环正常结束之后,返回的代码
   
# 在整个循环过程中只要不是执行break关键词,循环都代表正常结束,都可以执行else语句中的代码1次

for...else...结构的应用场景:在有限次数内没有登陆成功,输出登陆次数已用完,请稍后登陆!

trycount = 0

for i in range(3):
    username = input('请输入您的用户名:')
    password = input('请输入您的登陆密码:')
    trycount += 1

    if username == 'admin':
        if password == 'admin888':
            print('恭喜您登陆成功!')
            break
        else:
            print('您的密码错误,请重新登陆!')
            print(f'您还剩余{3 - trycount}次的登陆机会!')

    else:
        print('您的用户名错误,请重新登陆!')
        print(f'您还剩余{3 - trycount}次的登陆机会!')
else:
    print('很抱歉,您的三次登陆机会已用完,请十分钟之后再次登陆!')

6、报数字游戏(数7游戏)

'''
报数字也称数7数字
从1开始报数,遇到以7为尾数或7的倍数即跳过,最后统计报数的人数
需求分析:
① 提示用户输入参与游戏的人数
② 如何判断为7的倍数或尾数为7
i % 7 == 0 7的倍数
i % 10 == 7 尾数为7
③ 遇到7的倍数使用continue跳过
④ 设计一个变量来统计最后报数的人数
'''

num1 = int(input('请输入参与游戏的人数:'))
count = 0

for i in range(1, num1 + 1):
    if i % 7 == 0 or i % 10 == 7:
        continue
    count += 1
print(f'参与游戏的人数为{num1},最后参与报数的人数为:{count}')
posted @   七落安歌  阅读(1190)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示