0

0

Python终端游戏中的输入验证与循环控制:正确实现带错误处理的选项选择逻辑

碧海醫心

碧海醫心

发布时间:2026-03-05 13:15:33

|

467人浏览过

|

来源于php中文网

原创

Python终端游戏中的输入验证与循环控制:正确实现带错误处理的选项选择逻辑

本文详解如何在python终端游戏中用while循环安全处理用户输入,避免因类型错误或无效选项导致程序中断,并确保分支逻辑正常执行。

本文详解如何在python端游戏中用while循环安全处理用户输入,避免因类型错误或无效选项导致程序中断,并确保分支逻辑正常执行。

在开发基于文本的Python终端游戏时,一个常见且关键的需求是:持续提示用户选择,直到输入合法有效为止;同时,对每个合法选项(如 1 或 2)执行对应逻辑(如播放剧情、跳转分支)。但初学者常陷入两个典型误区:一是将业务逻辑(if 分支)放在循环外部,导致只校验不响应;二是混淆数据类型(如用字符串 "1" 比较整型输入),致使条件永远不成立。

下面这段代码正是问题所在:

while True:
    try:
        question1 = int(input("1. oui 2. non \n"))
    except ValueError:
        slow_type("essai un nombre ou de répondre la question.")
        continue
    else:
        break  # ← 错误关键:break后直接退出循环,后续if完全不执行!

if question1 == "1":  # ← 类型错误:question1是int,"1"是str
    slow_type("Alors, voici mon histoire...")

✅ 正确做法是:将所有响应逻辑嵌入循环体内,并使用整型比较。以下是优化后的健壮实现:

Designs.ai
Designs.ai

AI设计工具

下载
while True:
    try:
        choice = int(input("1. oui 2. non \n"))
    except ValueError:
        slow_type("essai un nombre ou de répondre la question.")
        continue  # 输入非数字 → 提示重试

    if choice == 1:
        slow_type("Alors, voici mon histoire...")
        break  # 成功响应后退出循环
    elif choice == 2:
        slow_type("D'accord.")
        break
    else:
        slow_type("Choix invalide. Veuillez entrer 1 ou 2.")
        # 不break,继续下一轮循环

? 进阶建议:封装为可复用函数
为提升代码可维护性与复用性,推荐将该逻辑抽象为通用选择函数(如原问题中改进的 choose_wisely):

def choose_option(options):
    """
    安全获取用户选项(1-based索引)
    :param options: 字符串列表,如 ["oui", "non"]
    :return: 用户选择的整数(从1开始)
    """
    for idx, opt in enumerate(options, 1):
        print(f"{idx}. {opt}")

    while True:
        try:
            user_input = int(input("Ton choix? "))
            if 1 <= user_input <= len(options):
                return user_input
            else:
                slow_type(f"Nombre invalide. Choisis entre 1 et {len(options)}.")
        except ValueError:
            slow_type("S'il vous plaît, entre un nombre.")

# 使用示例
answer = choose_option(["oui", "non"])
if answer == 1:
    slow_type("Alors, voici mon histoire...")
else:
    slow_type("D'accord.")

⚠️ 注意事项总结:

立即学习Python免费学习笔记(深入)”;

  • 永远在循环内处理有效输入的响应逻辑,避免 break 过早终止;
  • int(input()) 的结果是 int 类型,比较时务必用 1 而非 "1";
  • else 子句在 try/except 中仅在无异常时执行,不适用于“输入合法但值无效”的场景(如输入 3);此时应显式判断范围;
  • 将重复逻辑封装为函数,既增强可读性,也便于统一管理提示语与错误策略。

掌握这一模式,你就能构建出稳定、友好、专业级的终端交互流程——这是文字冒险类游戏、命令行工具甚至教学系统的坚实基础。

相关文章

在线游戏
在线游戏

海量精品小游戏合集,无需安装即点即玩,休闲益智、动作闯关应有尽有,秒开即玩,轻松解压,快乐停不下来

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
数据类型有哪几种
数据类型有哪几种

数据类型有整型、浮点型、字符型、字符串型、布尔型、数组、结构体和枚举等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

333

2023.10.31

php数据类型
php数据类型

本专题整合了php数据类型相关内容,阅读专题下面的文章了解更多详细内容。

223

2025.10.31

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

138

2026.02.12

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

839

2023.08.22

while的用法
while的用法

while的用法是“while 条件: 代码块”,条件是一个表达式,当条件为真时,执行代码块,然后再次判断条件是否为真,如果为真则继续执行代码块,直到条件为假为止。本专题为大家提供while相关的文章、下载、课程内容,供大家免费下载体验。

104

2023.09.25

java中break的作用
java中break的作用

本专题整合了java中break的用法教程,阅读专题下面的文章了解更多详细内容。

120

2025.10.15

java break和continue
java break和continue

本专题整合了java break和continue的区别相关内容,阅读专题下面的文章了解更多详细内容。

261

2025.10.24

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

698

2023.08.03

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

33

2026.03.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.5万人学习

Django 教程
Django 教程

共28课时 | 4.8万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号