小型项目1:命令行计算器实现。

简介: 小型项目1:命令行计算器实现。

小型项目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()

 

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
机器学习/深度学习 人工智能 自然语言处理
当语言遇见智慧火花:GPT家族历代模型大起底,带你见证从平凡到卓越的AI进化奇迹!
【10月更文挑战第6天】随着自然语言处理技术的进步,GPT系列模型(Generative Pre-trained Transformers)成为该领域的明星。从GPT-1的开创性工作,到GPT-2在规模与性能上的突破,再到拥有1750亿参数的GPT-3及其无需微调即可执行多种NLP任务的能力,以及社区驱动的GPT-NeoX,这些模型不断进化。虽然它们展现出强大的语言理解和生成能力,但也存在如生成错误信息或偏见等问题。本文将对比分析各代GPT模型的特点,并通过示例代码展示其部分功能。
694 2
|
编解码 前端开发 JavaScript
React系列---React技术栈一览
React系列---React技术栈一览
2465 0
|
消息中间件 Kubernetes 监控
【K8S系列】如何高效查看 k8s日志
【K8S系列】如何高效查看 k8s日志
4888 0
|
1月前
|
Web App开发 人工智能 网络协议
Claude 6月封号潮:145万账号祭天,三个充值号没了,给你一份真实自救包
这两天打开朋友圈和几个AI群,满屏都是同一种哀嚎。有人充了200刀的Max,睡一觉起来号没了。有人团队几十个号整组织被封,想申诉只能填一个Google表单。 我看着这些消息,没太惊讶。因为我自己三个Claude充值号,早就没了。 不是这波封的,是很早以前。A社的封号一直就狠,只不过这波又狠了一截,把更多人卷了进来。 说起来挺矛盾,就在我写这篇的时候,A社刚在6月30日发了Sonnet 5,介
|
10月前
|
移动开发 JavaScript API
如何保证 UniApp 插件接口与 UniApp 规范兼容?
如何保证 UniApp 插件接口与 UniApp 规范兼容?
646 137
|
人工智能 编解码 芯片
告别低效沟通|让技术提问不再头疼-这套高效AI提问模板来帮你
不会向ai提问,不知道怎么提问的 可以看看
21459 1
告别低效沟通|让技术提问不再头疼-这套高效AI提问模板来帮你
|
7月前
|
人工智能 JavaScript 前端开发
抛弃 Zapier?当 AI 接管业务流程,为什么 n8n 成了企业的“新基建”?
n8n为何成为企业级AI自动化首选:以工作流为载体,兼具代码灵活性与数据私密性,支持复杂逻辑编排,助力AI安全融入核心业务。
512 2
|
数据采集 数据挖掘 数据处理
如何使用 Pandas 库进行数据清洗和预处理?
数据清洗和预处理是数据分析中至关重要的步骤,Pandas库提供了丰富的函数和方法来完成这些任务
1065 64
|
8月前
|
存储 JSON 监控
解锁拼多多API,实时监控店铺评价,及时处理客户反馈!
在电商竞争激烈的环境下,及时响应顾客评价至关重要。本文介绍如何利用拼多多开放平台API,构建自动化评价监控系统,实现差评预警、情感分析与实时通知,提升客服响应效率与客户满意度,助力店铺运营数据化、智能化升级。(238字)
|
弹性计算 运维 Cloud Native
阿里云罗晶分享 | X86+ARM,容器服务 ACK 多架构应用部署最佳实践
2023年8月31日,系列课程第五节《X86+ARM,容器服务ACK多架构应用部署最佳实践》正式上线,由阿里云云原生应用平台产品专家罗晶主讲,内容涵盖:容器服务ACK简介;ACK支持倚天ARM实例;ACK多架构应用部署最佳实践。