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)

感谢收看!此系列会持续更新,欢迎大家订阅本专栏(免费),有任何问题都可以发私信一起探讨。

10-29 08:21