【10月更文挑战第7天】
1.while循环
while 循环条件
语句(循环条件成立时执行)
重复执行某一个函数
while 的使用和 if 类似,
判断为真的时候则运行缩进里面的代码,
判断式为假时则停止循环
赋值运算符(算术运算符+赋值符):+=、-=、*=、\=、\=
作用:将左右两边的内容,进行指定的算术运算,将结果赋值给左边的变量
输出一到10的数字:
#输出一到10的数字
n=1
while n<11:
print(n)
n+=1
输出1到10之间的偶数:
#输出1到10之间的偶数
n=2
while n<=10:
print(n)
n+=2
累加1-10之间的数字和:
#累加1-10之间的数字和
sum=0#用于累加每次循环n的值
n=1
while n<=10:
sum+=n
n+=1
print(sum)
while循环后面也可以接上else循环,当循环正常结束的时候,就会执行else内的代码
else在while循环内的操作:
a=1
while a<5:
print(a)
a+=1
else:
print("循环结束")
2.break和continue
用户登录,用户名和密码错误有三次机会:
#用户登录,用户名和密码错误有三次机会
c=1
while c<=3:
name=input("请输入用户名")
pw=input("请输入登录密码")
if name=="huyunkai" and pw=="123456":
print("登录成功")
else:
print("用户名或者密码输入错误")
c+=1
在我们这个登录题目中
我们输入正确的密码和账号
我们还是要继续进行输入的操作
所以我们需要在输入正确的用户名和密码之后我们需要跳出这个循环
这个时候我们就需要使用到break了
break具有很强的破坏力,它的作用是直接停止当前所在的循环
while 后面也可以直接跟上True,但是内部就必须要使用break来终止循环。
使用break终止的循环,是不会执行else的内容。
有break的版本:
#用户登录,用户名和密码错误有三次机会
c=1
while c<=3:
name=input("请输入用户名")
pw=input("请输入登录密码")
if name=="huyunkai" and pw=="123456":
print("登录成功")
break#登录成功直接跳出了,break的位置一定要放在语句后面
else:
print("用户名或者密码输入错误")
c+=1
break只能在循环里面进行使用
continue
continue语句的作用是终止本次循环,并跳过循环体中continue后面的语句,回到循环的顶端,继续执行下一次循环。
使用continue跳过本次循环,在循环正常执行完毕后依然执行else的内容
仅仅只是跳过某一次循环
跳过此次循环,此次循环的后面 的代码不进行编译
continue的使用:
#continue ----跳过一次循环,开始下一次循环
#输出1到10之间的偶数
n=1
while n<=10:
if n%2!=0:
continue
print(n)
n+=1
#这样写代码是死循环的
'''
因为我们一开始n=1
那么满足这个if条件的雨具,单后就直接continue了
然后就不进行后面的n+=1了
然后进行下一次循环,这次n还是1
那么结果就是和上次的是一样的结果
那么为了避免死循环的话,我们需要将n+=1放在continue的前面
'''
#正确写法:
n=1
while n<=10:
if n%2!=0:
n+=1 #一定要添加,不然就是死循环了
continue
print(n)
n+=1
3.for循环
基本格式1:遍历对象
for 变量 in 序列:
代码
格式2:使用range函数控制循环次数
for 变量 in range():
序列:字符串、列表、元组
目前我们只接触到了字符串
方法一:
for循环中的变量:可以不提前进行定义,后面会将遍历的值赋值给变量
第一种格式
#遍历:从序列中依次拿取数据,每次循环回拿一个,拿完了循环就结束了
for i in "python":#对这个字符串进行遍历
#从字符串里面拿字符依次进行遍历
print(i)
#每次循环都是从字符串里面拿取一个字符
#基本格式就是 for 变量 in 序列
#我们这里的变量是可以直接在这里进行定义的
#可以不像之前那样非要赋值了才能用
依次从序列中拿取,每次拿一个元素
直到整个序列内都拿完了就停止循环了
for else
只要程序正常执行就能运行else中的代码
4.range
for循环中的range的使用方法:
for 变量 in range():
在这个range函数里面有三个参数
开始的数字、结束的数字、步长
对于开始数字的话,我们不进行设置的话默认值是0,
步长的默认值为1
我们循环是不包含结束值的
这个for循环的范围就是[开始数字,结束数字)
左边是闭区间,右边是开区间的
range函数的基本使用方式:
#方法二:使用range函数控制循环的次数
'''
for 变量 in range():
'''
#在这个range函数里面有三个参数
#开始的数字、结束的数字、步长
#对于开始数字的话,我们不进行设置的话默认值是0,
for i in range(5):
print(i)
#我们在这里的range后面的函数没有写另外两个参数,但是没有进行报错
#为什么呢?
#因为开始的默认值为0,步长默认值为1
#那么这里的range(5)等价于range(0,5,1)的
#意思就是从0开始,到5结束,每次增加步长,就是每次循环就增加1
#对于我们上面的代码,仅仅是打印0-4,并没有进行5的打印
#为什么呢?
'''
因为对于range函数来说,我们的结束值是不包括在内的
那么打印的区间范围就是[0,5)
如果我们想输入0-5的数字,那么我们就需要将结束值改成6
那么编译器就会依次打印0-5的数字了
'''
for i in range(1,11,1):
print(i)
#那么这里的话就能输出1-10的数字了
#可以与while进行比较,可以发现for循环比while更加简单一些
可以与while进行比较,可以发现for循环比while更加简单一些
输出1-10之间的偶数:
for i in range(2,11,2):
print(i)
print("********")
累计1-10之间的数字:
sum=0#累加的和
for i in range (1,11,1):
sum+=i
print(sum)
我们在循环的时候,如果是正常运行的话是会运行这个循环后面的else代码的
a=1
while a<5:
print(a)
a+=1
else:
print("循环结束")
不管是while循环还是for循环都是这样的
除非是非正常循环,比如说满足一个条件就break了
这就是不正常循环的例子
但是如果是continue的话,那么这个循环仍然是正常循环的
else仍然能正常运行
#当循环正常结束的时候,回执行else部分
for i in range(1,6):
print(f"吃第{i}个苹果")
else:
print("吃完了")
'''
'''
#5个苹果,吃了3个苹果就饱了
for i in range(1,6):
print(f"吃第{i}个苹果")
if i==3:
break
else:
print("吃完了")
'''
'''
当循环正常结束的时候,回执行else部分
但是当我们通过break跳出循环过后是不会进行else循环的
这个break是强制解除掉的
回想之前的用户名密码登录的问题
如果我们输入了三次密码之后还是错的,那么我们直接就进入else直接锁定账户
之前的是我们输入密码正确后我们直接break了,那么就是非正常结束循环
break结束的循环是不会执行else部分
'''
'''
#5个苹果,第四个坏了,不能吃
for i in range(1,6):
if i==4:
continue
print(f"吃第{i}个苹果")
else:
print("吃完了")
#那么对于现在这个代码的话,当i=4的时候我们是不进行当前循环的进行的,直接跳出进行下一次循环
#continue跳过当次循环,进行下一次循环,仍然是正常的循环的,会执行else的操作
'''
5.循环嵌套
for i in range(1,4):
print(f"第{i}天写作业")
print("第1页")
print("第2页")
print("第3页")
print("第4页")
print("第5页")
'''
#对于后面的页数,我们是可以利用循环嵌套以及格式化的方式将这个缩写出来的
for i in range(1,4):
print(f"第{i}天写作业")
for n in range(1,6):
print(f"第{n}页")
#那么这个循环嵌套就能达到我们要的效果了
'''
对于这个代码的话
当i=1的时候,n的大小是从1-5一直在变化
当内循环遍历完之后,然后i变成2,重复之前的过程的
外部循环执行一遍,内部循环执行n遍
'''
假设外层循环是i次,内层循j次
那么每进行一次外层循环,那么就会进行j内层循环
只有每一个外层循环里面循环了j次,i才会++,进行下一次的外循环
九九乘法表:
for i in range(1,10):
for j in range(1,i+1):#让j的大小随着i的变化而变化
print(f'{j}x{i}={i*j}',end="\t")#"\t是制表符" 这里空格也是可以的,但是会导致列数对不齐了
print("\n") #每一个外层循环结束的时候我们就进行换行的操作,手动换行
#手动换行,要在新的一行进行内容输出,要在新的一行进行输出
#\t能保证每一次内循环打印的内容都在同一行
#然后进行完i次内循环之后我们就进行一个整体的换行,就是我们在外循环和内循环中间加的换行操作
#加了\t之后,我们每个打印完成之后的式子之间的距离就是一个Tab键的距离,会对齐就好一点
效果图:
每个班有5名学生,有语数外三科,外部输入每个学生每科的成绩
分别求出每个学生三科成绩的平均值(保留两位小数)
s1=eval(input("请输入成绩1"))
s2=eval(input("请输入成绩2"))
s3=eval(input("请输入成绩3"))
avg=(s1+s2+s3)/3#求平均值
print(f'平均值为{avg:.2f}')
现在我们通过代码实现了一个学生的平均值的操作
但是我们还要实现4个学生,那么我们就需要进行循环操作
for i in range(1,6):
sum=0
svg=0
print(f"第{i}个学生的成绩的录入")
for j in range(1,4):
s=eval(input(f"请输入成绩{j}:"))
sum+=s
avg=sum/3#每进行完3次内部循环我们就进行平均值的计算
print(f'平均值为{avg:.2f}')
#sum在内部循环和外部循环之间定义的原因
'''
每进行完一次外部循环,那么这个sum就进行清零
然后重新计算另一个学生的值
这个avg也是一样的
'''
6.random模块
具体作用----随机模块
生成随机的内容
这个模块内的方法:
randint()---生成随机n-m之间的随机整数
我们如果想使用某一个模块
我们需要通过import 将这个模块拿到导入到当前pyhton文件中
之前的我们在变量那一章节,我们导入的是关键字
那么import就是导入模块的关键字
import 导入模块的名称
模块中的方法使用:模块名.方法名()
import random
random.randint(n,m)
这个就是生成n到m之间的数字
random模块里面的随机生成整数的方法的具体使用:
import random
num=random.randint(1,10)
print(num)
实现猜数字游戏
#猜数字游戏,电脑随机生成1-10的数字,用户进行猜测
#有5次机会
'''
电脑生成数字----random.randint() --我们通过这个模块实现
用户猜测
1.使用input输入用户的猜测
2.我们要判断这个猜测是不是对的
1.正确(第一次就猜对了,我们就不用继续猜了,使用break结束循环)
2.不正确(我们给出提示)
1.猜大了
2.猜小了
'''
#现在实现的是单次的
print("---猜数字游戏(1-10)---")
import random
cp_num=random.randint(1,10)
print(cp_num)
for i in range(1,6):
user_num=eval(input("请输入你猜的数字:"))
if cp_num==user_num:
print("恭喜你,猜对了")
print("游戏结束")
break
elif cp_num<user_num:
print(f"你猜的数字大了,你还有{5-i}次机会")
continue
else :
print(f"你猜的数字小了,你还有{5-i}次机会")
continue
else:
print("游戏结束")