You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python代码重构:用函数定义与调用优化While&If循环

重构计算房间体积的Python代码(使用函数)

我正在自学Python,想要重构一段计算房间体积的代码,要求使用函数的定义与调用。

原代码

while True:
    length = int(input("Enter the length of your room: "))
    if length > 0:
        break

while True:
    width = int(input("Enter the width of your room: "))
    if width > 0:
        break

while True:  # 原代码此处缺少冒号,属于语法错误
    height = int(input("Enter the height of your room: "))
    if height > 0:
            break
print("The volume of your room is", length * width * height)

我尝试的代码(待优化)

def volume(length, width, height)  # 缺少冒号,语法错误
    length= int(input("Enter the length of your room: "))
       while (length = 0):  # 用了赋值符号=而非比较符号==,缩进错误,循环逻辑错误
         print(f"The length of your room is invalid)  # f-string未闭合引号
         return

    width = int(input("Enter the width of your room: "))
       while (width = 0):  # 同上问题:赋值改比较、缩进错误
         print(f"The width of your room is invalid)  # 引号未闭合
         return
    height = int(input("Enter the height of your room: "))
       while (height = 0):  # 同上问题
         print(f"The height of your room is invalid)  # 引号未闭合
         return
    print("The volume of your room is", length * width * height)
    return

volume(length*width * height)  # 调用时参数错误,且length等变量未定义

问题分析

  1. 语法错误:函数定义末尾缺冒号、f-string未闭合引号、循环中用赋值符号=代替比较符号==、缩进不符合Python规范
  2. 逻辑错误:循环逻辑无法实现重复获取有效输入,仅判断一次就返回,达不到原代码的效果
  3. 函数设计不合理:函数参数声明了length, width, height,但内部又重新获取输入,参数形同虚设;调用函数时传入未定义变量的计算值,完全不符合函数调用规则
  4. 缺少异常处理:用户输入非整数时会直接报错崩溃

优化后的代码

我们可以将输入验证和体积计算拆分为不同函数,提升代码复用性和可读性:

def get_positive_input(prompt):
    """获取有效的正整数输入,处理非整数和非正数情况"""
    while True:
        try:
            num = int(input(prompt))
            if num > 0:
                return num
            print("输入无效,请输入一个正数。")
        except ValueError:
            print("输入无效,请输入整数类型的值。")

def calculate_room_volume():
    """获取房间长宽高并计算体积"""
    length = get_positive_input("请输入房间长度:")
    width = get_positive_input("请输入房间宽度:")
    height = get_positive_input("请输入房间高度:")
    volume = length * width * height
    print(f"房间的体积为:{volume}")

# 执行计算
calculate_room_volume()

优化说明

  • 模块化拆分:把输入验证单独封装成函数,后续其他场景需要正整数输入时可直接复用
  • 异常处理:捕获用户输入非整数的情况,避免程序崩溃,同时给出友好提示
  • 逻辑清晰:体积计算函数专注于业务逻辑,输入验证函数专注于输入处理,职责明确
  • 语法规范:完全符合Python的缩进、符号使用规则,避免原代码中的语法错误
  • 友好交互:针对无效输入给出明确提示,提升用户体验

内容的提问来源于stack exchange,提问作者Azalea

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 16:41:09