0

0

如何让面积计算器支持重复计算?

聖光之護

聖光之護

发布时间:2026-02-24 17:18:17

|

502人浏览过

|

来源于php中文网

原创

如何让面积计算器支持重复计算?

本文讲解如何通过外层无限循环(while True)实现面积计算器的持续运行,并在用户选择“退出”时终止程序,同时优化输入校验与结构可读性。

本文讲解如何通过外层无限循环(`while true`)实现面积计算器的持续运行,并在用户选择“退出”时终止程序,同时优化输入校验与结构可读性。

要让面积计算器支持“计算完一个图形后自动回到主菜单、继续计算另一个图形”,关键在于将整个交互逻辑包裹在一个外层循环中,并为“退出”选项(即输入 5)设置明确的退出机制——使用 break 跳出该循环。

原代码仅用一次 if-elif-else 处理单次选择,缺乏重复执行能力;而新增的外层 while True: 循环则提供了持续运行的基础框架。每次循环完整执行一次:显示菜单 → 获取并校验形状编号 → 根据选择计算对应面积 → 返回开头,形成自然的“回到起点”效果。

以下是重构后的完整可运行代码(已修正拼写、增强健壮性):

kgogoprime
kgogoprime

KGOGOMall 是一套采用 Php + MySql 开发的基于 WEB 应用的 B/S 架构的B2C网上商店系统。具有完善的商品管理、订单管理、销售统计、新闻管理、结算系统、税率系统、模板系统、搜索引擎优化,数据备份恢复,会员积分折扣功能,不同的会员有不同的折扣,支持多语言,模板和代码分离等,轻松创建属于自己的个性化用户界面。主要面向企业和大中型网商提供最佳保障,最大化满足客户目前及今后的独立

下载
while True:
    print("================")
    print("Area Calculator")
    print("================")

    print("1) Triangle\n2) Rectangle\n3) Square\n4) Circle\n5) Quit")

    # 主菜单输入与校验(允许 1–5)
    try:
        shape = int(input("Please type the number of the shape you would like to know the area of here: "))
        while shape < 1 or shape > 5:
            print("❌ Invalid input. Please enter a number from 1 to 5.")
            shape = int(input("Enter choice: "))
    except ValueError:
        print("❌ Invalid input. Numbers only.")
        continue  # 跳过本次循环,重新开始

    # 分支计算逻辑
    if shape == 1:  # Triangle
        try:
            base = float(input("Base: "))
            height = float(input("Height: "))
            area = base * height / 2
            print(f"✅ Triangle area = {area:.2f}")
        except ValueError:
            print("❌ Invalid numeric input for triangle dimensions.")

    elif shape == 2:  # Rectangle
        try:
            length = float(input("Length: "))
            width = float(input("Width: "))
            area = length * width
            print(f"✅ Rectangle area = {area:.2f}")
        except ValueError:
            print("❌ Invalid numeric input for rectangle dimensions.")

    elif shape == 3:  # Square
        try:
            side = float(input("Side: "))
            area = side ** 2
            print(f"✅ Square area = {area:.2f}")
        except ValueError:
            print("❌ Invalid numeric input for square side.")

    elif shape == 4:  # Circle
        try:
            radius = float(input("Radius: "))
            area = 3.14159 * radius ** 2
            print(f"✅ Circle area = {area:.2f}")
        except ValueError:
            print("❌ Invalid numeric input for circle radius.")

    elif shape == 5:  # Quit
        print("? Goodbye! Thanks for using Area Calculator.")
        break  # 退出外层 while 循环,程序结束

    print()  # 空行分隔,提升可读性

关键设计说明:

  • 外层 while True: 是实现“循环回起点”的核心,它不依赖条件变量,仅靠 break 显式退出;
  • 输入校验使用 try-except 防止非数字输入导致崩溃,并配合 continue 忽略错误输入、立即重试;
  • 将 pie 替换为更精确的 3.14159,并统一使用 float() 支持小数输入,提升实用性;
  • 每个分支末尾添加空行 print(),使多次计算的输出清晰分隔;
  • 输出结果保留两位小数({area:.2f}),格式专业易读。

⚠️ 注意事项:

  • 避免在循环内重复初始化无关变量(如 base=0, area=0),Python 中变量作用域天然适配,无需预设初值;
  • 不建议嵌套多层 while 处理菜单逻辑(如原问题中“内层校验 + 外层主逻辑”),应优先用 try-except + continue/break 统一处理异常流;
  • 若后续需扩展功能(如单位转换、历史记录),建议将各图形计算抽离为独立函数,提升可维护性。

至此,用户完成一次面积计算后,程序将自动回到欢迎界面,真正做到“按需反复使用”,符合典型交互式工具的设计预期。

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

热门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相关的文章、下载、课程内容,供大家免费下载体验。

192

2023.09.27

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

13

2026.02.03

css中float用法
css中float用法

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

592

2024.04.28

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

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

105

2025.10.23

if什么意思
if什么意思

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

829

2023.08.22

while的用法
while的用法

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

103

2023.09.25

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

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

120

2025.10.15

java break和continue
java break和continue

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

260

2025.10.24

Golang 生态工具与框架:扩展开发能力
Golang 生态工具与框架:扩展开发能力

《Golang 生态工具与框架》系统梳理 Go 语言在实际工程中的主流工具链与框架选型思路,涵盖 Web 框架、RPC 通信、依赖管理、测试工具、代码生成与项目结构设计等内容。通过真实项目场景解析不同工具的适用边界与组合方式,帮助开发者构建高效、可维护的 Go 工程体系,并提升团队协作与交付效率。

1

2026.02.24

热门下载

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

精品课程

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

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