趣味数字小游戏合集(含循环/分支/迭代器)

大家好!本周我集中学习了Python基础语法、分支循环、循环控制语句以及迭代器等核心知识点,与其死记硬背语法规则,不如用几个趣味小游戏把这些知识点串起来实战——既练手又好玩,新手也能轻松看懂。今天就把这5个涵盖本周所有核心考点的小游戏分享出来,每一行代码都加了「人话注释」,跟着敲一遍,Python基础直接吃透!

一、游戏1:闰年判断器(基础语法+分支逻辑)

核心知识点

行与缩进、标识符命名、注释、多条件分支(and/or)、输入输出

代码实现

def leap_year_checker():
    """
    闰年判断器:核心逻辑是「能被4整除但不能被100整除,或能被400整除」
    这是文档注释,和单行注释#的区别是:能被Python解释器识别,方便查看函数说明
    """
    # 1. 获取用户输入,并用int()转成数字(input默认是字符串哦)
    # 加个提示语,让用户知道要输入啥,体验感拉满
    year = input("请输入你想判断的年份(比如2024):")
    
    # 2. 异常处理:防止用户输入非数字(比如输个"abc")导致程序崩溃
    try:
        year = int(year)  # 尝试转成整数
        # 3. 核心分支逻辑:闰年判断公式,缩进一定要对齐(4个空格/1个Tab)
        # 用括号把逻辑分组,看起来更清晰,新手也不容易晕
        if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
            # 格式化输出:把变量嵌入字符串,比拼接更优雅
            print(f"🎉 {year}年是闰年!可以多过一天~")
        else:
            print(f"😜 {year}年是平年,一年365天哦")
    except ValueError:
        # 输入不是数字时,友好提示,而不是直接报错
        print("❌ 输入格式不对!请输入纯数字(比如2024)")

# 调用函数,运行游戏
leap_year_checker()
 

关键解析

  • 缩进:Python靠缩进来区分代码块,if/else下面的代码必须缩进,否则会报错;

  • 标识符leap_year_checker是合法标识符(小写+下划线),不能用123check(以数字开头)或if(保留字);

  • 多条件逻辑and是「并且」,or是「或者」,括号能帮我们理清优先级,避免逻辑混乱。

二、游戏2:猜数字小游戏(while循环+break+异常处理)

核心知识点

while循环、break语句、random模块、try-except异常处理、条件判断

代码实现

# 导入随机数模块,这是Python自带的「工具包」,不用自己写随机数逻辑
import random

def guess_number_game():
    """ 
    猜数字小游戏:系统随机生成1-100的数字,最多猜10次,猜对为止
    """
    # 1. 生成1-100的随机数,作为「答案」
    secret_number = random.randint(1, 100)
    
    # 2. 初始化计数器:记录猜的次数,从0开始
    guess_count = 0
    
    # 3. 欢迎语,提升游戏体验
    print("🎮 猜数字游戏开始!系统已生成1-100的随机数,你有10次机会~")
    
    # 4. while循环:条件是「次数<10」,满足就继续玩
    while guess_count < 10:
        # 每次循环,次数+1
        guess_count += 1
        
        # 提示剩余次数,让用户有预期
        print(f"\n第{guess_count}次猜测,你还剩{10-guess_count}次机会")
        
        # 5. 获取用户猜测的数字,防止输入非数字
        try:
            user_guess = int(input("请输入你猜的数字:"))
            
            # 6. 条件判断:对比猜测值和答案
            if user_guess == secret_number:
                # 猜对了,用break直接终止循环(不用等10次)
                print(f"🏆 恭喜!你猜对了!答案就是{secret_number}")
                break
            elif user_guess > secret_number:
                print("📈 猜大了!再往小了猜猜~")
            else:
                print("📉 猜小了!再往大了猜猜~")
                
        except ValueError:
            print("❌ 输入错误!请输入1-100的整数")
    
    # 7. 循环结束后,判断是不是因为次数用完才结束
    if guess_count >= 10 and user_guess != secret_number:
        print(f"\n😵 次数用完啦!答案是{secret_number},下次加油~")

# 运行游戏
guess_number_game()
 

关键解析

  • while循环:适合「不确定循环次数」的场景(比如不知道用户几次能猜对),只要条件满足就一直跑;

  • break语句:猜对后直接「跳出循环」,不用执行剩下的次数,提升效率;

  • 异常处理:就算用户输错格式,程序也不会崩溃,新手友好度拉满。

三、游戏3:数字累加过滤器(for循环+continue)

核心知识点

for循环(range遍历)、continue语句、累加变量

代码实现

def number_filter_sum():
    """ 数字累加过滤器:计算0-20中「不是7的倍数」的数字总和
    遇到7的倍数就跳过(用continue),不参与累加
    """
    # 1. 初始化累加器:存总和,从0开始
    total = 0
    
    # 2. 欢迎语说明规则
    print("🧮 数字累加过滤器:计算0-20中「不是7的倍数」的数字总和~")
    
    # 3. for循环:遍历0-20的数字(range(21)是0到20,左闭右开哦)
    for num in range(21):
        # 4. 判断是不是7的倍数:余数为0就是
        if num % 7 == 0:
            print(f"🚫 跳过{num}(7的倍数)")
            # continue:跳过当前循环,直接进入下一次(total不加这个数)
            continue
        
        # 5. 不是7的倍数,就加到总和里
        total += num
        print(f"✅ {num}加入累加,当前总和:{total}")
    
    # 6. 输出最终结果
    print(f"\n🎯 0-20中不是7的倍数的数字总和:{total}")

# 运行游戏
number_filter_sum()
 

关键解析

  • for循环:适合「确定循环次数」的场景(比如遍历0-20),range(21)会生成0到20的序列;

  • continue语句:和break不同,continue只是「跳过当前这一次」,循环还会继续,不会终止。

四、游戏4:九九乘法表(循环嵌套)

核心知识点

循环嵌套(for+for)、格式化输出、循环边界控制

代码实现

def multiplication_table():
    """ 打印九九乘法表:经典的循环嵌套案例,新手必练 """
    print("📚 九九乘法表来啦!")
    # 1. 外层循环:控制「行」,从1到9
    for row in range(1, 10):
        # 2. 内层循环:控制「列」,列数≤行数(避免重复)
        for col in range(1, row+1):
            # 3. 格式化输出:让表格对齐,用\t(制表符)分隔
            # f-string里用{:2d}让数字占2个位置,对齐更整齐
            print(f"{col}×{row}={col*row:2d}\t", end="")
        # 4. 每一行结束后换行,不然会挤在一行
        print()

# 运行程序
multiplication_table()
 

关键解析

  • 循环嵌套:外层循环管「行」,内层循环管「列」,先跑外层1次,内层跑完所有次,再跑外层下一次;

  • 边界控制:内层循环range(1, row+1)保证列数≤行数,避免打印出「2×1=2」这种重复内容,符合九九乘法表的习惯。

五、游戏5:迭代器遍历数字序列(迭代器基础)

核心知识点

迭代器概念、iter()/next()方法、可迭代对象遍历

代码实现(带生动注释)

def iterator_demo():
    """迭代器入门:用迭代器遍历数字序列,理解「按需取值」的特点
    迭代器和for循环的区别:迭代器是「取一个用一个」,不占内存"""
    # 1. 先创建一个可迭代对象:1-10的数字列表
    number_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    print(f"📝 原始数字列表:{number_list}")

    # 2. 把列表转成迭代器(用iter()函数)
    number_iterator = iter(number_list)
    print("🔄 已将列表转为迭代器,开始逐个取值~")

    # 3. 用while循环+next()取值,直到取完(抛出StopIteration异常)
    try:
        while True:
            # next():从迭代器里「取下一个值」
            current_num = next(number_iterator)
            print(f"✅ 取出数字:{current_num}")
    except StopIteration:
        # 迭代器取完了,提示结束
        print("\n🏁 迭代器里的数字已经取完啦!")

    # 4. 拓展:迭代器只能取一次,取完就空了
    print("\n🔍 验证:迭代器取完后再取会直接结束")
    # 重新转迭代器才能再取
    new_iterator = iter(number_list)
    # 用for循环遍历迭代器(更简洁,Python底层就是这么干的)
    for num in new_iterator:
        print(f"🔖 重新遍历:{num}", end=" ")

# 运行程序
iterator_demo()
 

关键解析

  • 迭代器本质:「按需取值」,不像列表一样一次性把所有数据存内存,适合处理大数据;

  • iter()/next():iter()把可迭代对象(列表、range等)转成迭代器,next()逐个取值,取完就抛StopIteration;

  • for循环底层:其实就是自动调用iter()和next(),并捕获StopIteration异常,不用我们手动写try-except。

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐