【Python入门实战】一周吃透基础语法!
趣味数字小游戏合集(含循环/分支/迭代器)
大家好!本周我集中学习了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。
更多推荐



所有评论(0)