Python基础循环语句详解(for、while)

本文详细介绍了Python中的for循环和while循环,包括它们的用法和应用场景。通过实例展示了如何使用for循环遍历数组、字典,以及使用while循环实现特定逻辑。此外,还探讨了循环中的条件判断、布尔运算以及循环控制技巧。
部署运行你感兴趣的模型镜像

*2.8 循环语句*

循环语句主要是两种,for循环和while循环,他们的主要用法和区别:

for循环用于确定的次数,这样会比while循环更加简洁比如我要循环代码多少次,次数明确,适合用for。

while循环多用于不确定的次数,比如我们的案例游戏:猜拳游戏,我们不知道循环几次才能够分出胜负,所以用while循环比较合适。

*2.8.1 for循环 *

在这里插入图片描述

其他编程语言不具备的:输入一个name的变量,成都的拼音,用for循环,打印出x,结果为:

在这里插入图片描述

end=“\t”是排在一排,并且空一格。

在这里插入图片描述

我们写一个数组,用for循环遍历里面的元素,len(a)是求a数组的长度,我们知道计数从0开始的,长度就是3。Print里面a[i]就是列表里面的每一个元素。运行结果就是下面的:

在这里插入图片描述

其中for i in range里面的i表示的是range()函数里面的每一个元素。

如果我们这样写代码:

在这里插入图片描述
在这里插入图片描述

因为range()函数里面是获取a数组的长度,i代表range里面的每个元素,这个时候i=len(a),也就是说打印i就是获取a数组的长度,所以出现这个结果。而你a[i]就是获取数组里面的每一个元素,不是长度。所以代码print(i,a[i])表示的是打印a数组的长度,并且打印a数组里面的每一个元素。

同样,我们若想重复某个字符串,可以使用range():

for i in range(3):
    print('我很棒')

range()函数里面可以填入循环的次数,打印的结果就是三遍“我很棒”。

练习:这是个实例,请用for循环代替复杂的print(),打印出每个人想要的物品。

d={'小明':'醋','小红':'油','小白':'盐','小张':'米'}
print(d['小明'])
print(d['小红'])
print(d['小白'])
print(d['小张'])

答案:

d = {'小明':'醋','小红':'油','小白':'盐','小张':'米'}

for i in d:
    print(d[i])

为何打印d[i]就是里面的值?

前面的例子非常清楚,打印字典的话出来的结果:

d = {'小明':'醋','小红':'油','小白':'盐','小张':'米'}

for i in d:
    print(i)

运行结果如下:

小明
小红
小白
小张

Process finished with exit code 0

用循环遍历字典里面的元素,得到的结果就是字典里面的键。

但是我们如果进行进一步搜索:

d = {'小明':'醋','小红':'油','小白':'盐','小张':'米'}

for i in d:
    print(i[1])

得到的结果就是:

明
红
白
张

Process finished with exit code 0

输入偏移量,我们可以很清晰知道,这是选择的字典的键对应的字符串。

但是如果我们这样:你要查询字典里面值

d = {'小明':'醋','小红':'油','小白':'盐','小张':'米'}

for i in d:
    print(d['小白'])

那就是字典名[键] 打印出来的就是对应键的值。

看到这里,我们知道for i in (字典名):print(字典名[i])输出的结果就是字典里面的键,而字典名[键] 打印出来的就是对应键的值,那么下面:

d = {'小明':'醋','小红':'油','小白':'盐','小张':'米'}

for i in d:
    print(d[i])

print(d[i])表示就是字典里面遍历所有的键对应的值。

2.8.2 while循环

写while循环,最重要的是逻辑和步骤。

一般一个while循环包含以下的内容:

1.先决条件

2.放行条件(重要)

3.办事流程(重要)

我们下面看一个例子:

a = 0                #先定义变量a,并赋值
while a < 5:         #设定一个放行条件:a要小于5,才能办事
    a = a + 1  # 满足条件时,就办事:将a+1
    print(a)   # 继续办事:将a+1的结果打印出来 

其中定义a变量,属于先决条件。==先决条件是非必需要求,根据需要决定。==比如后面求1-100的和,这个时候最好定义先决条件。其中最重要的是第二条和第三条,也就是第二和第三行代码。放行条件可以理解为,在现实里面开车出入小区,是本小区的业主,则放行让你进来;不符合这个条件的,我们不会让你进来。在while循环里面,就是符合这个条件,进行循环本体,不符合条件,就停止循环。

办事流程可以理解为,我进入了循环体需要进行什么操作,==循环本身存在的意义就是避免重复性劳动,进行批量操作。==上面的代码明显是将大量a+1的值赋给a这个变量,如果我一个个用print()打印太麻烦了,所以我用循环来批量实现这个过程。

*2.8.2 While循环:*

在这里插入图片描述

下面是运行结果:

在这里插入图片描述

我们定义了i从0开始,并且范围(循环次数小于)5,打印的是第几次循环,用占位符%d

在后面要把占位的内容补回来。(python要用占位符是因为要格式化输出,见2.6.4)因为i取值为0,我们循环次数肯定是从第一次循环开始,如果不用%(i+1)的话,打印的结果就是当前是第0次循环,不符合我们的习惯。假设我们去掉后面的%(i+1),打印结果就是:
在这里插入图片描述

练习:你家的大门是密码门,密码是你的生日816。当输入密码错误的时候,会提示“请尝试输入密码:”。直到密码输入正确,就会提示“欢迎回家!”。

 # 变量password用来保存输入的密码
password = ''
while password != '816':
    password = input("请尝试输入密码:")
print("欢迎回家!")

如果你的代码是这样:

 # 变量password用来保存输入的密码
password = input("请尝试输入密码:")
while password != 816:
    print("请尝试输入密码:")
print("欢迎回家!")

将会进入死循环。

print()缩进的问题:
# 之前的例题
a = 0

while a < 5:
    a = a + 1
    print(a)

# 本题
a = 0

while a < 5:
    a = a + 1
print(a)

第一个例子打印结果是1,2,3,4,5,因为print在while循环里面,第二个例子print在外面,打印的例子是5。为什么是5?因为循环的次数和过程与上个例子一样,只不过都没有打印出来,循环第四次的时候,a=4+1=5,这个时候a不小于5,所以下一次不执行循环,到while外面去,打印输出。

在这里插入图片描述

练习:1-100分别乘以5:

i = 1
while i<101 :
    print (i*5)
    i = i+1
布尔值的运算:

比如,while循环100次的任务,代码是这样写:

i = 1
while i < 101:
	print("打印这句话100遍")
	i += 1

我们学习了布尔值的运算,可以这么写代码:

i = 100
while i:
    print("打印这句话100遍")
    i = i-1

原理就是:

我们循环次数是100次,i就设置成100次。然后调用while循环,i在这里的值判断为True,就会执行下面的语句,打印一次“打印这句话100遍”,最后i=i-1,i=99,while 99判断值也是True,继续执行……直到i减少为0的时候,程序判断为False,while 0停止循环。这种方式相比上一种更为简单,计算次数减少(因为上一种还要进行判断,i<100,i<99……)

*2.8.3实例:求1-100的和*

n = 100		#n表示的是我们要算100个数的和

sum = 0		#sum是总和,为0的意思就是用来记录总和,但是不能对和有影响,一开始为0,然后经过循环慢慢加直到加最后第100个数,得出结果

counter = 1		#counter相当于计步器,就是步长,等差数列里面的公差,每次加一个(循环的步长)

while counter <= n :		# 循环语句,当计数器小于等于100的时候,就是还没有完成循环任务。

sum = sum+counter	#这时候总和就等于从一开始sum的0一直加计数器

counter += 1		# 每一次加完之后,让计数器+1

print(1-%d的和为:%d”%(n,sum))

另外,用for循环也可以写:

For循环range里面的括号里面有三个参数,range(1,100,1)分别表示从1-100的数字是个范围,不包括100.同时后面的1为步长。

sum = sum +i为何这么写?这条语句完成了自循环,我们可以拿纸笔去模拟,如果这个时候是别的变量,那么sum永远等于0,所以不是我们想要的结果。

在这里插入图片描述

复习遇到的问题:变量改名的问题

# 求1-100的和
sum = 0
for i in range(1,101):
    summary = sum + i
    print(summary)

我们用summary = sum + i这个语句,最后的打印结果:

在这里插入图片描述

为何会出现这样的现象?我们拿纸笔去模拟一下,因为sum = sum + i这条语句,相当于sum自增,不断循环增加。而上面定义变量的语句,sum没有得到增加,一直是0。所以最后的结果不对。

正确的结果截图:

在这里插入图片描述

同样,我们规定一开始还没有执行循环操作时的sum为0,这个时候不同于while循环,可以规定小于多少次数,for循环里面的range函数就有这个范围的功能,1-101就是从1-100的范围,没有步长默认为1。Sum=sum+i的意思就是,i为range范围里面的所有元素,不需要写i += 1是因为步长已经默认,步长为1,没有写出来。

在这里插入图片描述

在这里插入图片描述

python里面的内置函数:sum函数

sum函数用法也很简单,sum(可迭代对象,通常是列表、元组和集合,默认值)

a = list(range(1,101))
#print(a)
b= sum(a,1)
print(b)

这样就实现了求1-100的和。首先定义变量a,然后范围取出来,将变量a变为列表类型,定义变量b用sum函数,打印b。

综合练习:换座位问题

按照要求打印表里面的数据:

students = ['小红', '小刚', '小明']
students = ['小刚', '小明', '小红']
students = ['小明', '小红', '小刚']

方法一:append()方法:

students = ['小明','小红','小刚']
for i in range(3):
    student1 = students[0]  # 获取第一个座位的学生 student1
    students = students[1:]  # 让 student1 暂时离开,后面的学生座位都进一位。
    students.append(student1)  # 将 student1 安排到最后一个座位
    print(students)

方法二:pop()方法:

print('提取只取不删:')
list1 = ['0','1','2','3']
print(list1[3])
print(list1)

print('\n删除(del)只删不取:' )
list1 = ['0','1','2','3']
del list1[3]
print(list1)

print('\n移除(pop)又取又删:')
list1 = ['0','1','2','3']
print(list1.pop())  # 默认删除最后一个元素,并返回该元素的值。
print(list1)
print(list1.pop(0))  # 也可指定删除某个元素,并返回该元素的值。
print(list1)

students = ['小明','小红','小刚']

students = ['小明','小红','小刚']
for i in range(3):
    student1 = students.pop(0)  # 运用pop()函数,同时完成提取和删除。
    students.append(student1)  # 将移除的student1安排到最后一个座位。
    print(students)

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值