Python实战案例:逢7过🎮
文章目录
一、案例背景
“逢 7 过” 是一款简单易上手、适合多人参与的酒桌小游戏,主要通过报数规则增加互动和趣味性,尤其适合朋友聚会、聚餐时活跃气氛。
游戏规则
- 参与人数:2人以上,无固定上限,轮流进行。
- 报数范围:通常从1开始,按顺序依次报数(也可自定义起始数,如从任意数字开始递增)。
- “过”的条件(满足以下任意一条即喊“过”):
- 7的倍数:如7、14、21、28……
- 包含数字7:如7、17、27、70、71……
- 违规惩罚:若玩家报数时遇到符合条件的数字却未喊“过”,或错误喊“过”(即不符合条件却喊“过”),则接受惩罚(如喝酒、表演节目等)。
接下来,咱就通过Python代码,运用已学习知识,模拟实现它。
二、代码实现
# 小游戏:逢7过
# 游戏主循环控制开关(1:运行 0:关闭)
game_start = 1
# 打印游戏欢迎信息和规则说明
print('''
欢迎来到逢7过小游戏\n
游戏规则:
1. 输入开始和结束的正整数
2. 打印出这个范围内的数字
3. 逢7过:如果数字中有7或者是7的倍数,则打印"过"
4. 继续游戏:询问是否继续,输入Y或N
5. 输入Y继续游戏,输入N退出游戏
''')
# 主游戏循环 - 控制整个游戏流程的执行与退出
while game_start:
# ------- 输入处理模块 -------
# 验证并获取有效的游戏范围(开始和结束正整数)
while True:
# 处理开始数字输入 - 确保输入为合法正整数
start = input('请输入开始正整数: ')
if not start.strip().isdigit():
print('输入内容有误')
continue
# 处理结束数字输入 - 使用嵌套循环确保输入合法性
while True:
end = input('请输入结束正整数: ')
if end.strip().isdigit():
break
print('输入内容有误')
# 转换为整数并验证范围
start_num = int(start)
end_num = int(end)
# 检查范围有效性:结束数>开始数>0
if end_num > start_num > 0:
print(f"游戏开始:{start_num}-{end_num}")
break
else:
print('错误:请检查输入的内容后重试')
print('提示:结束数字应大于开始数字且大于0')
# ------- 游戏逻辑模块 -------
# 生成游戏范围的数字列表并处理"逢7过"逻辑
list_1 = list(range(start_num, end_num + 1))
# 遍历范围内的每个数字
for i in list_1:
# 判断是否满足"逢7过"条件:含7或为7的倍数
if '7' in str(i) or i % 7 == 0:
# 使用波浪线居中对齐输出"过",增强视觉效果
print(f"{'过':~^10}")
else:
# 普通数字直接输出
print(i)
# ------- 续玩控制模块 -------
# 处理游戏结束后的用户选择(继续/退出)
while True:
continue_game = input('是否继续?(Y/N)').strip().lower()
if continue_game == 'y':
print('游戏继续')
break
elif continue_game == 'n':
# 设置循环控制标志为0,终止主游戏循环
game_start = 0
print('游戏退出')
break
else:
print('指令无法识别,请重新输入')
三、执行过程
以上代码通过我们所学Python基础知识模拟实现了"逢7过"小游戏,执行流程可以分为以下几个主要阶段:
3.1 初始化阶段
game_start = 1
print('''
欢迎来到逢7过小游戏...
''')
- 设置游戏控制标志
game_start
为1(表示运行状态, 等价于game_start = True
) - 打印游戏欢迎信息和规则说明
3.2 主游戏循环
while game_start:
# 输入处理模块
# 游戏逻辑模块
# 续玩控制模块
- 使用
while game_start
控制整个游戏流程 - 只要
game_start
为1,游戏就会持续循环
3.3 输入处理模块
while True:
# 获取并验证开始数字
start = input('请输入开始正整数: ')
if not start.strip().isdigit():
print('输入内容有误')
continue
# 获取并验证结束数字
while True:
end = input('请输入结束正整数: ')
if end.strip().isdigit():
break
print('输入内容有误')
# 验证范围有效性
start_num = int(start)
end_num = int(end)
if end_num > start_num > 0:
print(f"游戏开始:{start_num}-{end_num}")
break
else:
print('错误:请检查输入的内容后重试')
- 输入验证:
- 开始数字必须为正整数
- 结束数字必须为正整数
- 结束数字必须大于开始数字
- 嵌套循环:使用两层循环确保输入合法性
- 错误处理:对不合法输入给出明确提示
3.4 游戏逻辑模块
list_1 = list(range(start_num, end_num + 1))
for i in list_1:
if '7' in str(i) or i % 7 == 0:
print(f"{'过':~^10}")
else:
print(i)
- 生成数字列表:使用
range
函数生成从start_num
到end_num
的整数列表 - 核心逻辑:遍历每个数字,判断是否满足"逢7过"条件:
- 数字包含字符’7’(如17、70)
- 数字是7的倍数(如7、14)
- 格式化输出:满足条件时输出
~~~~~~~~过~~~~~~~~
,增强视觉效果
3.5 续玩控制模块
while True:
continue_game = input('是否继续?(Y/N)').strip().lower()
if continue_game == 'y':
print('游戏继续')
break
elif continue_game == 'n':
game_start = 0
print('游戏退出')
break
else:
print('指令无法识别,请重新输入')
- 用户选择处理:
- 输入
Y/y
:继续游戏(回到主循环开头) - 输入
N/n
:设置game_start=0
,退出主循环 - 其他输入:提示错误并重新询问
- 输入
- 状态控制:通过修改
game_start
的值决定游戏是否继续
整体流程图
开始
│
├── 初始化游戏状态
│
└── 进入主循环
│
├── 输入处理模块
│ │
│ ├── 获取并验证开始数字
│ ├── 获取并验证结束数字
│ └── 验证范围有效性
│
├── 游戏逻辑模块
│ │
│ ├── 生成数字列表
│ └── 遍历判断并输出结果
│
└── 续玩控制模块
│
├── 获取用户选择
├── 判断是否继续
│ │
│ ├── 是 → 回到主循环开头
│ └── 否 → 设置game_start=0
│
└── 退出主循环 → 结束游戏
四、案例总结
以上代码作为一个较为基础的实战案例,涵盖了 Python 中一些基础知识的运用。例如:
- 变量与数据类型:
- 使用
game_start
变量控制程序流程(布尔逻辑的数字实现) - 字符串、整数的转换与使用(如
start_num = int(start)
)
- 条件判断:
- 多层嵌套的
if-else
结构(输入验证、逢7判断) - 逻辑运算符
or
的实际应用('7' in str(i) or i % 7 == 0
)
- 循环控制:
while
循环的持续条件控制(游戏主循环、输入验证循环)break
和continue
语句的使用(终止/跳过当前循环)
- 格式化输出:
- f-string的应用(
f"{'过':~^10}"
) - 字符串对齐与填充的实践
- 用户输入校验:
- 多层循环确保输入合法性(嵌套验证结构)
- 对不合法输入给出明确提示
最后,还有一点需要说明:
在实际编程中,我们永远不要寄希望于用户按照规则输入正确内容,而是要设置合理的输入验证逻辑,确保我们提取到的数据的合法性,从而保证程序能够稳定运行。