Python学习笔记之[第二章]循环
CSDN话题挑战赛第2期
参赛话题:学习笔记
一、while循环
1.基本格式:
2.计算1-100的累加和:
结果:5050
i=1
result=0
while i<=100:
result+=i
i=i+1
print(result)
3.输出10以内所有奇数:
i=1
while i<=10:
if i%2!=0:
print("%d是奇数"%i)
i=i+1
4.输出1-100的偶数累加和与奇数累乘积:
结果:2550和654729075
# 输出1-100的偶数累加和
i=1
sum=0
while i<=100:
if i%2==0:
sum+=i
i=i+1
print(sum)
# 输出1-100的奇数累乘积
i=1
sum=1
while i<=20:
if i%2!=0:
sum*=i
i=i+1
print(sum)
二、break语句和continue语句,break用于跳出/结束当前循环,continue用于跳出当前循环的本次循环
案例1.吃苹果,吃到第三个吃出半条虫,无心再吃:
i=1
while i<=5:
print(F'我吃了{i}个苹果')
if i==3:
break
i=i+1
结果:
案例2.吃苹果,吃到第三个吃出半条虫,丢掉第三个继续吃:
i=0
while i<5:
i = i + 1
print(F'我吃了{i}个苹果')
if i==3:
print('这个苹果有虫子')
continue
结果:
三、死循环
1.基本格式:
2.练习代码:
t=0
p1=p2=0
while True and t==0:
player = int(input('请输入一个拳形(0 石头,1 剪刀,2 布):'))
import random # 导入随机模块
computer = random.randint(0, 2) # 随机生成[0,2]之间的一个数
print(F'电脑出的是:{computer}')
result = player - computer
if result == -1 or result == 2:
print('玩家获胜')
p1=p1+1
elif result == 0:
print('平局')
else:
print('电脑获胜')
p2=p2+1
print(F'当前比分:[玩家{p1}:电脑{p2}]')
if p1>=3 or p2>=3:
if p1>=3:
print('玩家获得最终胜利')
else:
print('电脑获得最终胜利')
break
# t = int(input('请问是否继续游戏,是输入0,否输入1:'))
四、循环的嵌套
1.题目:锻炼身体,跑步4圈+10分钟深蹲为1组,需要做3组训练
2.练习代码:
i=1
while i<=3:
print(f"第{i}组训练开始")
j=1
while j<=4:
print(f"我跑了{j}圈")
j=j+1
print('10分钟深蹲结束')
i+=1
五、循环练习作业
1.相亲猜测年龄问题:
代码:
n=int(input('请输入女士的年龄:'))
i=0
while i<3:
t = int(input('请猜测一下我的年龄:'))
if t==n:
print('恭喜你,猜对了!')
break
else:
print('猜错了,你还有%d次机会'%(2-i))
if t>n:
print("小提示:猜大了")
else:
print("小提示:猜小了")
2.农场养兔子问题:
代码:
n=int(input('请输入N的值:'))
sum=3
i=0
while i<n:
sum=sum*2
i+=1
print(sum)
六、打印矩形,直角三角形,乘法口诀表
1.打印一个5行5列的矩阵:
i=0
j=0
while i<5:
j=0
while j<5:
print("*",end=" ")
j+=1
print()
i+=1
2.打印一个9行9列的直角三角形:
i=0
j=0
while i<9:
j=0
while j<=i:
print("*",end=" ")
j+=1
print()
i+=1
3.打印乘法口诀:
i=1
j=1
while i<=9:
j=1
while j<=i:
print(F"{i}*{j}={i*j}",end=" ")
j+=1
print()
i+=1
七、for循环和range函数
1.for循环:
# 用于循环遍历将字符串中的字符全输出
str1='Hello Python'
for i in str1:
print(i)
2.range函数:
# range是一个类,一般配合for循环使用,没办法直接输出
for i in range(1,10,2): #range(起始值,结束值,步长),包含起始位置,不包含结束位置
print(i)
# 可使用list(range)来打印range中的所有元素
print(list(range(0,5))) # [0, 1, 2, 3, 4] 步长省略时,默认为1
# 如果起始位置是0则起始位置可以省略,但是省略起始位置时,步长也必须省略
print(list(range(10))) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 从大到小的情况:步长为负数
print(list(range(10,5,-1))) # [10, 9, 8, 7, 6]
八、案例:用for循环实现用户登录
1。题目:
分析:3次机会写成代码就是最多循环三次,当其中有一次成功时使用break语句提前退出
2.答案:
for i in range(0,3):
username=input('请输入用户名:')
password = input('请输入密码:')
if username!='admin':
print(f'用户名错误!你还有{2-i}次机会重新输入')
elif password !='admin888':
print(f'密码错误!你还有{2-i}次机会重新输入',)
else:
print('恭喜你!登录成功')
break
九、for循环的嵌套
1.案例1:使用for循环输出9*9乘法表
for i in range(1,10):
for j in range(1,i+1):
print(f'{i}*{j}={i*j}',end=' ')
print()
# 输出9*9乘法表
2.案例2:过7游戏
# 需求:
# 数数,1-100中凡是7和7的倍数,以及数字中带7的数,输出哈,否则输出数字
for i in range(1,101):
if (i-1) % 10 == 0: # 每10行换行一次
print()
a=i%10 # 个位
b=i//10 # 十位
# print(f'{i}的十位是{b}个位是{a}')
if a==7 or b==7 or i%7==0:
print('哈',end=' ')
continue
else:
print(i,end=' ')
3.案例3:输入一个字母查询是否在字符串中:
a='withyou'
char1=input('请输入一个字母:')
t=0
for i in a:
if i==char1:
print('找到了')
t=1
break
if t==0:
print('未找到此字母')
# 或者这样:
# len1=0
# len1+=1
# if len1==len(a):
# print('未找到此字母')
4.for循环与while循环转换:
i=0
while i<=100:
if i==60:
print('下载非法文件,已将你举报!下载中止')
break
print(f'下载进度:{i}%')
i+=1
else:
print("下载完成")
for i in range(0,101):
print(f'下载进度{i}%')
if i == 60:
print('下载非法文件,已将你举报!下载中止')
break
else:
print("下载完成")
十、报数游戏
1.题目:
解题思路:当报到个位数是7或者7的倍数时,使用continue跳过当前学生报数。
2.解题代码:
count=int(input('请输入有多少人参与本次报数游戏:'))
sum1=0
for i in range(1,count+1):
a=i%10 # 个位
if a==7 or i%7==0:
continue
else:
print('报数:%d'%i)
sum1+=1
print('共有%d个人参与报数'%sum1)
感谢收看!此系列会持续更新,欢迎大家订阅本专栏(免费),有任何问题都可以发私信一起探讨。