04 - while循环与循环关键字

Day 04

一、while循环

  • 语法
    while 条件语句:
    循环体(需要重复执行的代码)
    其他代码
  • 执行过程:不断判断条件语句是否为True,如果是就执行循环体,如果不是循环直接结束。
  • 控制次数的方式:保证条件一开始是True,经历过指定次数以后条件会由True变成False。
  • 死循环 - 条件语句一直都是True。
  • 例:打印0、1、2、3、4、5、…、100
num = 0
while num <= 100:
    print(num)
    num += 1

2. for 循环和 while 循环的选择

  • 如果循环次数确定使用for循环;如果循环次数不确定,使用while循环。
  • 循环次数不确定 - 程序员在写代码的时候无法确定(确认)这个循环会重复多少次(次数有使用程序的用户决定的)
  • 例:打印0、1、2、3、4、5、…、100
  • 提示用户输入密码,直到输入正确为止:
    156324
    请输入密码(6位):726162
    请输入密码(6位):615252
    请输入密码(6位):192822

    请输入密码(6位):156324
pw = '156234'
value = None
while value != pw:
    value = input('请输入密码(6位):')
"""
while True:
    需要重执行代码
    if 循环结束条件:
        break
"""

二、循环关键字

continue和break都是循环体关键字(只能出现在循环体中)

1.continue - 结束一次循环(结束当次循环)

  • 在执行循环体的时候如果遇到continue,那么这一次循环结束,直接进入下一次循环
  • 例:打印0-5的奇数:
for x in range(5):
    if x % 2 == 0:
        continue
    print(x)


"""
range(5)  - 0,1,2,3,4
x = 0: if 0 % 2 == 0  -> if 0 == 0  -> if True: continue(一次循环结束, 马上进入下一次循环)  
x = 1: if 1 % 2 == 0  -> if 1 == 0  -> if False; print(x) -> 打印 1
x = 2: if 2 % 2 == 0  -> if 0 == 0  -> if True: continue(一次循环结束, 马上进入下一次循环) 
x = 3: if 3 % 2 == 0  -> if 1 == 0  -> if False; print(x) -> 打印 3
x = 4: if 4 % 2 == 0  -> if 0 == 0  -> if True: continue(一次循环结束, 马上进入下一次循环) 
整个循环结束
"""

2. break - 结束整个循环

  • 在执行循环体的时候如果遇到break,整个循环直接结束(循环体后面的代码不执行,也不再进入下一次循环)
  • 例:

for x in range(10):
    if x > 3:
        break
    print(x)

"""
0
1
2
3
"""

3. while 使用套路

  • 例 : 用户输入正确密码:
"""
while True:
    每次循环需要做的事情(需要重复执行的代码)
    if 循环结束条件:
        break
"""
"""
123456

请输入密码:231
请输入密码:22311
...
请输入密码:123456
"""
pw = '123456'
while True:
    value = input('请输入密码:')
    if value == pw:
        break

  • 练习:猜数字游戏
from random import randint
num = randint(0,100)
print(num)
count = 1
while True:
    a = int(input('请输入猜的数:'))
    if a > num:
        count += 1
        print('猜大了,小一点')
    elif a < num:
        print('猜小了,大一点')
        count += 1
    elif a == num:
        print('恭喜,猜对了')
        break
if count > 7:
    print('你一共猜了',count,'次,真是个小天才呢', sep = '')
if count < 7:
    print('你只用了',count,'次,','就猜对了,真是个小天才呢',sep = '')

4.循环 else

  • else的存在不影响原循环的执行

  • 如果else对应的循环是自然死亡else后面的代码段会执行(就循环结束后执行);

  • 如果else对应的循环是因为遇到break而结束的,else后面的代码在循环结束后不会执行。

  • 完整的for循环:
    for 变量 in 序列:
    循环体
    else:
    代码段

  • 完整的while循环:
    while 条件语句:
    循环体
    else:
    代码段

  • 例:


for x in range(5):
    print(x, '====')
    if x > 3:
        break
    print(x, '++++')
else:
    print('else!')

------------------------------------华丽的分割线-----------------------------------

课后练习题:

# 1.根据输入的成绩的范围打印`及格` 或者`不及格`。
score = int(input('请输入成绩:'))
if score >= 60:
    print('不及格')
else:
    print('不及格')
# 2.根据输入的年纪范围打印`成年`或者`未成年`,如果年龄不在正常范围内(0~150)打印`这不是人!`。
age = int(input('请输入年龄:'))
if 18 <= age <= 150:
    print('成年')
elif 0 <= age <= 18:
    print('未成年')
else:
    print('这不是人')

# 3.输入两个整数a和b,若a-b的结果为奇数,则输出该结果,否则输出提示信息`a-b的结果不是奇数`

a = int(input('请输入一个整数:'))
b = int(input('请输入一个整数:'))
if (a-b) % 2 != 0:
    print(a-b)
else:
    print('a-b的结果不是奇数')

# 4.使用for循环输出 0~100内所有3的倍数。
for i in range(3, 100):
    if i % 3 ==0:
        print(i)

# 5.使用for循环输出100~200内个位数或者十位数能被3整除的数。
for i in range(100, 200):
    if (i % 10 != 0 and i % 10 % 3 == 0)  or (i // 10 % 10 != 0 and i // 10 % 10 % 3 == 0):
        print(i)

# 6使用for循环统计100~200中十位数是5的数的个数.
count = 0
for i in range(100, 200):
    if i // 10 % 10 == 5:
        count += 1
print(count)

# 7.使用for循环打印50~150中所有能被3整除但是不能被5整除的数
for i in range(51,151,3):
    if i % 5 !=0:
        print(i)
# 8.使用for循环计算50~150中所有能被3整除但是不能被5整除的数的和
count = 0
for i in range(51,151,3):
    if i % 5 !=0:
      count += i
print(i)
# 9.统计100以内个位数是2并且能够被3整除的数的个数。

# 进阶
# 1.输入任意一个正整数,求他是几位数?
num = int(input('输入一个正整数:'))
count = 1
while num // 10:
    num //= 10
    count += 1
print(count)

# 2.打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字⽴方和等于该数本身。例如:153是 ⼀个⽔仙花数,因为  `1³ + 5³ + 3³ ` 等于 153。
for i in range(100,1000):
    if (i//100)**2+(i%100//10)**2+(i%10)**2 == i:
        print(i)

# 3.判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)
num = int(input('输入一个正整数:'))
count = 0
for i in range(2,num):
    if num % i == 0:
        count += 1
if count == 0:
    print(num,'是素数')
else:
    print(num, '不是素数')



# 4.输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
for i in range(1, 10):
    for j in range(1, i + 1):
        print(f'{i}*{j}={i * j}', end='\t')
    print()

# 5.这是经典的"百马百担"问题,
# 有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)
for i in range(0,35):
    for j in range(0,51):
        if 6 * i + 4 * j + (100 - i - j) == 200:
            print('大马',(i),'中马',(j),'小马',(100-i-j))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值