python基础知识分享02-循环案例(循环+else语法)

  • 扩展: 循环+else语法
  • 循环案例
    • 报数字游戏
    • 猜数字游戏
    • 打印1 ~ 100之间质数

1.循环案例-报数字游戏
"""
扩展知识点: 循环 + else
    格式介绍:
        for ........:
            ...
        else:
            ...
    执行特点:
        如果循环是正常退出的, 则一定会执行else中的内容.
        如果循环是非正常退出的, 则不会执行else中的内容.
    名词解释:
        只要不是break结束循环的, 都叫正常退出.
        如果是break跳出循环的, 称之为: 非正常退出.
    大白话总结:
        只要循环不是break结束的, 就会执行else中的内容, 否则不执行.
"""
# 案例1: 演示for + else语法
for i in range(1, 6):
    if i == 3:
        # continue
        break
    print(i)
else:
    print('看看我执行了嘛!')

print('-' * 31)


# 案例2: 报数字游戏, 提示用户录入玩游戏的总人数, 然后大家开始报数, 统计除了7的倍数 以及 尾数是7的 剩下数字的总个数.
# 例如: 8个人玩游戏, 统计结果为: 7
# 例如: 50个人玩游戏, 统计结果为: 39

# 1. 提示用户录入玩游戏的总人数, 并接收.
num = eval(input('请录入玩游戏的总人数: '))

# 2. 定义统计变量, 用来记录合法数字(非7的倍数, 尾数非7)的总个数
count = 0

# 3. 循环获取到 1 ~ 总人数 的每一个人, 大家进行报数.
for i in range(1, num + 1):
    # print(i)
    # 4. 判断当前数字是否是7的倍数, 或者尾数为7, 如果不是, 计数器就+1
    # 方式1: 结合 continue 实现.
    # if i % 7 == 0 or i % 10 == 7:
    #     continue
    # else:
    #     # 走到这里, 说明i是合法数字, 计数器+1即可.
    #     count += 1

    # 方式2: 直接统计.
    if i % 7 != 0 and i % 10 != 7:
        count += 1
else:
    # 5. 循环结束后, 打印结果即可.
    print(f'参与游戏的总人数为 {num}, 合法数字为: {count}')
2.循环案例-猜数字游戏
"""
需求:
    1. 生成1个1 ~ 100之间的随机数, 让用户来猜.
    2. 如果用户猜大了, 或者猜小了, 要给出提示.
    3. 直至用户猜对, 结束循环.
"""

# 1. 生成1 ~ 100之间的随机数.
import random
guess_num = random.randint(1, 100)        # 包左包右
# print(f'要猜的数字是: {guess_num}')

# 2. 因为不知道用户多少次能猜对, 所以用: 死循环.
while True:
    # 3. 让用户来猜, 并接收用户输入的数字.
    input_num = eval(input('请输入您要猜的数字: '))

    # 4. 进行判断, 猜大, 猜小, 或猜对(循环结束)
    if input_num > guess_num:
        print('哎呀, 您猜大了!')
    elif input_num < guess_num:
        print('哎呀, 您猜小了!')
    else:
        print('恭喜您, 猜对了!')
        break       # 千万别忘记结束循环.
3.循环案例–打印质数
"""
需求:
    打印1 ~ 100之间的质数, 按照3个一行的形式进行输出.

    质数解释:
        1. 质数也叫素数, 即: 只能被1 和 自身整数的数字.
        2. 最小的质数是 2

分析思路:
    1. 任何的一个整数都能够被 1  和 自身整除, 所以这个我们是不需要判断的.
    2. 假设判断10是否是质数, 理论上, 要用 10 和 2 ~ 9之间的数字, 逐个做判断, 看是否能整除.
    3. 但是, 当数字超过10的一半, 也就是5的时候, 无论如何, 是不可能做到整除的.
    4. 即: 判断10是否是质数, 只要拿 10 和 2 ~ 5 做判断即可.
结论:
    判断1个数字是否是质数, 只要判断该数字 和 2 ~ 该数字 // 2 之间, 任意的一组都不能整除, 它就是质数, 否则不是质数.
    例如:
        10 和 2 ~ 5之间, 但凡有一组能整除, 它(10)就不是质数.
        13 和 2 ~ 6之间, 但凡有一组能整除, 它(13)就不是质数.
"""
# 思路1: 逻辑推理.
# 1. 定义计数器, 表示质数的个数.
count = 0
# 2. 外循环, 获取到1 ~ 100之间的每一个数字.    即: 要判断是否是质数的数字.
for i in range(2, 101):     # 假设i的值:    10         11         12
    # 3. 内循环, 获取到 2 ~ 该数字一半 区间内所有的数字.
    for j in range(2, i // 2 + 1): # j的值: 2,3,4,5    2,3,4,5    2,3,4,5,6
        # 4. 进行取余操作, 即: 判断是否能整除, 但凡有任意一组能整除, 它就不是质数, 跳出循环即可.
        if i % j == 0:
            # 走到这里, 肯定更不是质数, 结束即可.
            # 注意: 是跳出内循环, 不是跳出外循环, 即: 10 和 2能整除, 说明10已经不是质数了, 没必要再判断10和3是否能整除, 我们直接判断下一个数字(11)即可.
            break
    else:
        # 5. else语句中, 直接打印即可, 能走到这里, 一定是质数.
        count += 1      # 是质数, 计数器就 + 1

        # 方式1: if.else语句
        # 6. 判断是否是3的倍数, 是就换行输出, 不是, 就直接打印即可.
        # if count % 3 == 0:
        #     print(i, end = '\n')
        # else:
        #     print(i, end = '\t')

        # 方式2: 三元表达式.
        print(i, end = '\n' if count % 3 == 0 else '\t')
print('-' * 31)

# 思路2: 数学推理, 即: 1 ~ 100之间, 但凡是不能被2, 3, 5, 7任意一个整数整除的, 它就是质数.
count = 0
for i in range(2, 101):
    # 判断是否是质数, 即: 不能被2, 3, 5, 7任意一个整数整除, 或者本身就是2, 3, 5, 7, 它就是质数.
    if i % 2 != 0 and i % 3 != 0 and i % 5 != 0 and i % 7 != 0 or i in [2, 3, 5, 7]:
        count += 1
        print(i, end='\n' if count % 3 == 0 else '\t')
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值