Python之while循环,random模块,遍历循环

         目录

while循环

无限循环(死循环)

while循环中的else语句

综合练习:


while循环

除了for循环,python还有while循环。

定义:当while条件满足时,重复执行当前while条件下的语句块,直至while条件不满足,跳出当前循环并执行下一个语句块。如图:

 语法:

while(关键字) 条件:
    do anything ....

 例子:

n  =  0
while (n<10):
    print(n)
    n = n+1

 运行结果为:

0
1
2
3
4
5
6
7
8
9

练习:

要求使用while循环,使用户输入一个4位数的整数作为要判断的年份,然后对输入的整数进行判断,输出是不是闰年。

解析:while条件成立时(用户输入的不是4位数),就提示用户输入4位数,并且让用户继续输入,直到满足while条件(输入的是4位数),在进行判断该4位数能否被4整除,如果可以被4整除,则返回闰年,如果不能被4整除,则返回不是闰年。

years = int(input("请输入一个年份(4位数):"))
while 1000>years or years>9999:
    print("#########注意:请输入一个4位数#########")
    years = int(input("请重新输入一个年份(4位数):"))
if 1000<years<9999:
    if years%400 == 0 or years%4 == 0:
        print(f"{years}为闰年")
    else:
        print(f"{years}不是闰年")

运行结果为:

请输入一个年份(4位数):123
#########注意:请输入一个4位数#########
请重新输入一个年份(4位数):12345
#########注意:请输入一个4位数#########
请重新输入一个年份(4位数):1996
1996为闰年

无限循环(死循环)

从while循环的语法结构可以看出,当while条件成立时,就一直执行while语句块,直到条件不成立。有时候,我们会使用到条件一直成立的情况,最常见的就是True(或者1)来做条件,这样循环就会一直进行。

例子:无限输出自然数

n = 0
while True:
    print(n)
    n+=1

运行结果为:

0
1
2
3
4
...
999999999
...

while循环中的else语句

示例:

n = 0
while n < 10:
    n += 1
    print(n)
else:
    print("循环结束")

运行结果为: 

1
2
3
4
5
6
7
8
9
10

示例:

n = 0
while n < 10:
    if n == 5:
        print("循环非正常结束")
        break
    n += 1
    print(n)
else:
    print("循环结束")


#循环非正常结束,不运行else

运行结果为:

1
2
3
4
5
循环非正常结束

综合练习:

1.每次随机出10道100以内的加法题,每做对一道题目得10分,做错一道不得分,最后输出游戏的最终得分。

解析:

import random
n = 0
second = 0
while n < 10:
    a = random.randint(0, 100)
    b = random.randint(0, 100)
    input_values = int(input(f"{a}+{b}="))
    if a + b == input_values:
        second = second+10
        print("回答正确,加10分")
    else:
        if a + b != input_values:
            print("回答错误,不得分")
    n += 1
print(f"最终得分:{second}")

运算结果为:

14+19=33
回答正确,加10分
64+90=154
回答正确,加10分
59+62=121
回答正确,加10分
50+12=62
回答正确,加10分
63+10=73
回答正确,加10分
61+64=125
回答正确,加10分
11+77=88
回答正确,加10分
6+86=92
回答正确,加10分
7+49=56
回答正确,加10分
68+6=74
回答正确,加10分
最终得分:100

2.输入两个整数,计算这两个整数的最大公约数及最小公倍数。

解析:

print('自动求两个整数的最大公约数及最小公倍数:')
a = int(input("请输入第一个整数:"))
b = int(input("请输入第二个整数:"))
if a < b:
    a, b = b, a
c = b
while a%c != 0:
    c = a%c
print(f"最大公约数为:{c}")
print(f"最大公倍数为:{a*b//c}")

运行结果为:

自动求两个整数的最大公约数及最小公倍数:
请输入第一个整数:9
请输入第二个整数:6
最大公约数为:3
最大公倍数为:18

3.使用循环遍历的方法计算“鸡兔同笼”问题,已知头共有30个,脚共有90只,问笼中鸡和兔各有多少只?

解析:

for ji in range(30):
    tu = 30 - ji
    if 2 * ji + 4 * tu == 90:
        print(f"鸡:{ji}只,兔:{tu}只")
        break

运行结果为:

鸡:15只,兔:15只

4.对于任意自然数,如果是奇数就将它乘以3再加1,如果是偶数,就将它除以2,这样经过若干次除以2后,最终这个数一定会变成1。本练习需要解决的是,对于给定的任意数,需要多少次除以2后才能使结果第一次变成1 ?

解析:

math = int(input("请输入一个自然数:"))
i = 1
while i < math:
    if math % 2 == 0: #判断偶数
        math = math/2
    elif math % 2 == 1: #判断奇数,并进行运算
        math = math*3 + 1
    elif math / 2 == 1:
        print(math)
        break
    i = i + 1 # 计数
print(f"经过{i}次除2后才能第一次变成1")

运算结果为:

请输入一个自然数:10
经过5次除2后才能第一次变成1

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陽i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值