小型项目1:命令行计算器实现。
实现一个基本的命令行计算器是一个很好的编程练习,可以帮助你熟悉命令行输入/输出、条件判断以及基本的算术运算。下面是一个使用Python语言实现的简单命令行计算器的示例。这个计算器将支持加、减、乘、除四种基本运算。
def add(x, y): |
"""加法""" |
return x + y |
|
def subtract(x, y): |
"""减法""" |
return x - y |
|
def multiply(x, y): |
"""乘法""" |
return x * y |
|
def divide(x, y): |
"""除法,注意处理除数为0的情况""" |
if y == 0: |
return "除数不能为0" |
return x / y |
|
def main(): |
print("欢迎使用命令行计算器!") |
while True: |
print("\n请选择运算:") |
print("1. 加法") |
print("2. 减法") |
print("3. 乘法") |
print("4. 除法") |
print("5. 退出") |
|
# 获取用户输入 |
choice = input("请输入你的选择(1/2/3/4/5): ") |
|
# 退出程序 |
if choice == '5': |
print("感谢使用!") |
break |
|
# 获取两个操作数 |
num1 = float(input("请输入第一个数字: ")) |
num2 = float(input("请输入第二个数字: ")) |
|
if choice == '1': |
print(num1, "+", num2, "=", add(num1, num2)) |
|
elif choice == '2': |
print(num1, "-", num2, "=", subtract(num1, num2)) |
|
elif choice == '3': |
print(num1, "*", num2, "=", multiply(num1, num2)) |
|
elif choice == '4': |
result = divide(num1, num2) |
if isinstance(result, str): |
print("错误:", result) |
else: |
print(num1, "/", num2, "=", result) |
|
else: |
print("非法输入") |
|
if __name__ == "__main__": |
main() |
这个程序首先定义了四个基本的算术运算函数(加、减、乘、除),然后在main函数中通过循环让用户选择想要进行的运算,并输入两个操作数。根据用户的选择,程序会调用相应的函数进行运算,并打印出结果。如果用户选择退出,则程序会结束运行。
注意,除法函数divide中增加了对除数为0的情况的处理,以避免运行时错误。此外,所有的输入都被转换为浮点数,以支持小数运算。用户输入的选择和数字都通过input函数获取,并通过条件判断来处理用户的输入。
命令行计算器实现与增强
在软件开发中,实现一个命令行计算器不仅是一个基础的编程练习,也是理解输入/输出处理、条件判断、函数定义与调用、以及异常处理等重要概念的好方法。以下,我们将通过Python语言详细实现并增强一个支持加、减、乘、除四种基本运算的命令行计算器,同时增加对用户输入的有效性验证、支持小数运算、以及更友好的用户交互界面。
1. 定义基本运算函数
首先,我们需要定义四个基本的算术运算函数:加法、减法、乘法和除法。其中,除法函数需要特别处理除数为0的情况,避免运行时错误。
def add(x, y): |
"""加法运算""" |
return x + y |
|
def subtract(x, y): |
"""减法运算""" |
return x - y |
|
def multiply(x, y): |
"""乘法运算""" |
return x * y |
|
def divide(x, y): |
"""除法运算,处理除数为0的情况""" |
if y == 0: |
return "除数不能为0" |
return x / y |
2. 主程序流程设计
主程序将包含一个main函数,该函数将不断循环,提示用户输入运算类型和两个操作数,然后调用相应的函数进行计算,并输出结果。为了简化用户输入,我们将使用数字(如1、2、3、4)来代表不同的运算类型。
def main(): |
print("欢迎使用命令行计算器!") |
while True: |
try: |
# 显示操作选项 |
print("\n请选择运算:") |
print("1. 加法") |
print("2. 减法") |
print("3. 乘法") |
print("4. 除法") |
print("5. 退出") |
|
# 获取用户输入的运算类型 |
choice = input("请输入您的选择(1-4进行运算,5退出):") |
|
# 退出条件 |
if choice == '5': |
print("感谢使用!") |
break |
|
# 验证输入是否合法 |
if choice not in ['1', '2', '3', '4', '5']: |
print("非法输入,请重新输入!") |
continue |
|
# 获取用户输入的两个操作数 |
num1 = float(input("请输入第一个数:")) |
num2 = float(input("请输入第二个数:")) |
|
# 根据用户选择调用相应的函数 |
if choice == '1': |
print(f"{num1} + {num2} = {add(num1, num2)}") |
elif choice == '2': |
print(f"{num1} - {num2} = {subtract(num1, num2)}") |
elif choice == '3': |
print(f"{num1} * {num2} = {multiply(num1, num2)}") |
elif choice == '4': |
result = divide(num1, num2) |
if isinstance(result, str): |
print("错误:", result) |
else: |
print(f"{num1} / {num2} = {result}") |
|
except ValueError: |
# 处理非数字输入 |
print("请输入有效的数字!") |
|
if __name__ == "__main__": |
main() |
3. 增强用户输入验证
在上述代码中,我们已经对用户输入的运算类型进行了基本的验证,并处理了非数字输入的情况。然而,为了进一步增强程序的健壮性,我们可以考虑添加更多的验证逻辑,比如检查用户输入的操作数是否真正为数字。这通过try-except块中的ValueError异常处理来实现。
4. 引入日志记录
在实际应用中,为了跟踪程序的运行状态和调试问题,我们通常会引入日志记录功能。Python的logging模块提供了强大的日志记录功能,可以帮助我们记录用户操作、程序错误等信息。
import logging |
|
# 配置日志 |
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') |
|
# 在适当的位置添加日志记录 |
def main(): |
logging.info("计算器程序启动") |
# ...(其他代码) |
if choice == '5': |
logging.info("用户选择退出") |
print("感谢使用!") |
break |
# ...(其他代码) |
|
if __name__ == "__main__": |
main() |