0

0

如何在简易计算器中实现用户持续输入直到选择退出

心靈之曲

心靈之曲

发布时间:2026-01-31 13:54:11

|

590人浏览过

|

来源于php中文网

原创

如何在简易计算器中实现用户持续输入直到选择退出

本文讲解如何用 while 循环构建一个可重复运行的命令行计算器,支持加减乘除四则运算及安全退出,修正原代码中循环位置错误、逻辑断裂和用户体验缺陷等问题。

在开发简易命令行计算器时,一个常见需求是:让用户反复选择运算类型、输入数字、查看结果,直到主动选择“退出”为止。原代码试图用 while (i > select) 控制流程,但该条件恒为假(因 i 初始为 0,select 至少为 1),导致循环体从未执行;更严重的是,整个操作逻辑被包裹在一次性执行结构中,无法实现“持续交互”。

正确的做法是将主流程置于一个无限循环 while True: 内,并在每次迭代开头提示用户选择操作,再根据选项分支处理——这才是符合人机交互直觉的设计。

以下是优化后的完整可运行代码:

def add(x, y):
    return x + y

def sub(x, y):
    return x - y

def mul(x, y):
    return x * y

def div(x, y):
    if y == 0:
        return "Error: Division by zero!"
    return x / y  # float() 非必需,Python 3 中 / 默认返回浮点数

print('''Please select operation:
        1. Add  
        2. Subtract  
        3. Multiply  
        4. Divide
        5. Exit''')

while True:
    try:
        select = int(input("Select operation from 1, 2, 3, 4, or 5: "))

        if select == 5:
            print("Goodbye!")
            break  # 推荐用 break 替代 exit(),更可控、更易测试

        if select not in [1, 2, 3, 4]:
            print("Invalid choice. Please enter 1–5.")
            continue  # 跳过后续输入,重新开始循环

        x = float(input("Enter first number: "))  # 支持小数输入
        y = float(input("Enter second number: "))

        if select == 1:
            result = add(x, y)
            print(f"Result: {x} + {y} = {result}")
        elif select == 2:
            result = sub(x, y)
            print(f"Result: {x} - {y} = {result}")
        elif select == 3:
            result = mul(x, y)
            print(f"Result: {x} × {y} = {result}")
        elif select == 4:
            result = div(x, y)
            print(f"Result: {x} ÷ {y} = {result}")

    except ValueError:
        print("Error: Please enter valid numbers.")
        continue
    except KeyboardInterrupt:
        print("\n\nOperation cancelled. Goodbye!")
        break

关键改进说明:

论论App
论论App

AI文献搜索、学术讨论平台,涵盖了各类学术期刊、学位、会议论文,助力科研。

下载
  • 使用 while True: 构建主交互循环,确保程序持续等待用户指令;
  • 将 input() 和运算逻辑全部置于循环体内,每次迭代都是一次完整操作流程;
  • 增加 try-except 捕获 ValueError(非法数字输入)和 KeyboardInterrupt(Ctrl+C),提升健壮性;
  • 对除零异常做显式判断(div() 函数内),避免程序崩溃;
  • 使用 float() 替代 int() 输入,支持小数运算,更贴近真实计算器体验;
  • 用 break 退出循环而非 exit(),便于后续扩展(如添加日志、统计等功能);
  • 添加清晰的提示语与格式化输出(f-string),增强可读性。

? 小贴士: 若希望每次操作后自动重新显示菜单,可将 print(...) 语句移至 while 循环开头;若需记录历史计算,可引入列表变量缓存 (op, x, y, result) 元组。

至此,你已掌握构建可交互、容错强、用户体验良好的简易计算器的核心模式——循环驱动 + 分支处理 + 异常防护,这也是绝大多数命令行工具的标准实现范式。

热门AI工具

更多
DeepSeek
DeepSeek

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

豆包大模型
豆包大模型

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

通义千问
通义千问

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

腾讯元宝
腾讯元宝

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

文心一言
文心一言

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

讯飞写作
讯飞写作

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

即梦AI
即梦AI

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

ChatGPT
ChatGPT

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

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

186

2023.09.27

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

483

2023.08.02

css中float用法
css中float用法

css中float属性允许元素脱离文档流并沿其父元素边缘排列,用于创建并排列、对齐文本图像、浮动菜单边栏和重叠元素。想了解更多float的相关内容,可以阅读本专题下面的文章。

580

2024.04.28

C++中int、float和double的区别
C++中int、float和double的区别

本专题整合了c++中int和double的区别,阅读专题下面的文章了解更多详细内容。

102

2025.10.23

while的用法
while的用法

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

97

2023.09.25

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

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

119

2025.10.15

java break和continue
java break和continue

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

258

2025.10.24

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

483

2023.08.02

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

33

2026.01.31

热门下载

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

精品课程

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

共4课时 | 22.4万人学习

Django 教程
Django 教程

共28课时 | 3.7万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.3万人学习

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

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