让我们将您学到的知识转化为一个实际应用。构建一个简单的命令行工具是了解变量、控制流、函数和错误处理如何协同工作的绝佳方式。我们将制作一个基于用户输入执行加、减、乘、除运算的基础计算器。本项目将直接使用到:input(): 从用户那里获取数字和所需的操作。变量: 存储用户的输入和计算结果。类型转换: 将输入字符串转换为适合计算的数字 (float)。运算符: 算术运算符 (+, -, *, /) 来执行计算。条件语句 (if/elif/else): 根据用户的选择确定执行哪种操作。循环 (while): 允许用户执行多次计算而无需重新启动脚本。函数: 将代码组织成逻辑块(例如,获取输入、执行计算)。错误处理 (try/except): 处理潜在问题,如非数字输入或除以零,防止程序崩溃。定义计算器的行为我们的命令行计算器应该:显示一条欢迎信息。进入一个循环,直到用户决定退出。在循环内部:提示用户输入第一个数字。提示用户输入第二个数字。提示用户选择一个操作符(+、-、*、/)。校验输入。确保输入的确实是数字,并且操作有效。妥善处理错误。如果输入有效,执行计算。处理特定计算错误,例如除以零。显示结果。询问用户是否要执行另一次计算。如果不想,退出循环。退出时显示一条再见信息。使用函数组织代码为了保持代码的组织性和可读性,我们可以将其分解为函数:get_number(prompt): 一个函数,接收一个提示消息,向用户请求输入,并持续请求直到输入一个有效数字 (float)。如果输入不是数字,它会处理 ValueError。get_operation(): 一个函数,提示用户输入一个操作符(+、-、*、/),并持续请求直到输入一个有效的操作符。calculate(num1, num2, operation): 一个函数,接收两个数字和操作符字符串,执行计算并返回结果。它处理 ZeroDivisionError。main(): 主函数,负责协调应用程序的流程,调用其他函数并管理主循环。实现要点让我们看看说明一些重要部分的片段。获取有效数字输入确保用户输入有效的数字是必要的。while 循环与 try-except 结合是一种处理潜在错误的有效方法。def get_number(prompt): """提示用户输入数字并处理无效输入。""" while True: try: user_input = input(prompt) number = float(user_input) # 尝试转换为浮点数 return number except ValueError: print("输入无效。请输入一个数字。") # 在主循环中的使用示例: # first_number = get_number("请输入第一个数字:") # second_number = get_number("请输入第二个数字:")这个 get_number 函数封装了重复请求输入直到输入有效浮点数的逻辑。它捕获了当 float() 转换失败时抛出的 ValueError。执行带错误处理的计算计算逻辑使用 if/elif/else 来选择操作。非常重要的一点是,除法需要检查 ZeroDivisionError。def calculate(num1, num2, operation): """根据操作执行计算。""" if operation == '+': return num1 + num2 elif operation == '-': return num1 - num2 elif operation == '*': return num1 * num2 elif operation == '/': if num2 == 0: print("错误:不能除以零。") return None # 表示失败 else: return num1 / num2 else: # 这种情况理想情况下应该由 get_operation() 避免 print("错误:无效的操作。") return None # 在主循环中的使用示例: # result = calculate(first_number, second_number, chosen_operation) # if result is not None: # print(f"结果是:{result}")在这里,我们明确检查操作是否为除法 (/),以及在尝试除法之前被除数 (num2) 是否为零。如果是,我们打印错误并返回 None。调用代码在打印结果之前应该检查 result 是否为 None。主应用程序循环脚本的主要部分将使用一个 while True 循环,该循环会一直持续,直到用户明确要求退出。def main(): print("启动简单命令行计算器!") while True: # --- 使用 get_number() 和 get_operation() 等函数获取输入 --- num1 = get_number("请输入第一个数字:") num2 = get_number("请输入第二个数字:") op = get_operation() # 假设 get_operation 处理验证 # --- 执行计算 --- result = calculate(num1, num2, op) # --- 显示结果 --- if result is not None: print(f"结果:{num1} {op} {num2} = {result}") # --- 询问是否继续 --- again = input("执行另一次计算吗? (yes/no): ").lower() if again != 'yes': break # 退出 while 循环 print("感谢您使用计算器。再见!") # --- 调用主函数启动应用程序 --- # if __name__ == "__main__": # 良好实践,稍后解释 # main() # 目前,对于简单脚本直接调用 main() 即可: # main()这个结构将所有部分连接起来。它调用输入和计算函数,打印输出,并根据用户选择继续或退出控制流程。运行计算器将完整的代码保存为 Python 文件(例如,calculator.py)。打开您的终端或命令提示符,导航到保存文件的目录,然后使用以下命令运行它:python calculator.py您应该会看到欢迎信息和输入数字及操作的提示。交互示例一个会话可能如下所示:欢迎使用简单命令行计算器! 请输入第一个数字:10 请输入第二个数字:5 请输入操作符(+、-、*、/):+ 结果:10.0 + 5.0 = 15.0 执行另一次计算吗? (yes/no): yes 请输入第一个数字:20 请输入第二个数字:0 请输入操作符(+、-、*、/):/ 错误:不能除以零。 执行另一次计算吗? (yes/no): yes 请输入第一个数字:apple 输入无效。请输入一个数字。 请输入第一个数字:7 请输入第二个数字:3 请输入操作符(+、-、*、/):* 结果:7.0 * 3.0 = 21.0 执行另一次计算吗? (yes/no): no 感谢您使用计算器。再见!这个简单的计算器项目演示了您学到的不同 Python 特性如何结合起来创建一个功能程序。它有效地使用函数进行组织,循环用于重复,条件语句用于决策,以及错误处理以提升程序的稳定性。您可以通过添加更多操作(例如求幂)、改进界面,甚至添加计算历史记录等功能来扩充这个项目。