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等变量未定义
问题分析
- 语法错误:函数定义末尾缺冒号、f-string未闭合引号、循环中用赋值符号
=代替比较符号==、缩进不符合Python规范 - 逻辑错误:循环逻辑无法实现重复获取有效输入,仅判断一次就返回,达不到原代码的效果
- 函数设计不合理:函数参数声明了
length, width, height,但内部又重新获取输入,参数形同虚设;调用函数时传入未定义变量的计算值,完全不符合函数调用规则 - 缺少异常处理:用户输入非整数时会直接报错崩溃
优化后的代码
我们可以将输入验证和体积计算拆分为不同函数,提升代码复用性和可读性:
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
相关产品推荐
相关产品推荐

