基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算


Posted in Python onAugust 05, 2020

方法一

结合lambda表达式、函数调用运算符、标准库函数对象、C++11标准新增的标准库function类型,编写一个简单的计算器,可实现简单的加、减、乘、除、取余二元运算。代码如下:

#include "pch.h"
#include <iostream>
#include <functional>
#include <map>
#include <string>
using namespace std;
 
int add(int i, int j)
{
	return i + j;
}
 
// 使用函数调用运算符
struct divide
{
	int operator()(int i, int j)
	{
		return i / j;
	}
};
 
auto mod = [](int i, int j) {return i % j; };
 
map<string, function<int(int, int)>> binops = 
{
 {"+", add},         // 使用函数指针
 {"-", minus<int>()},       // 使用标准库函数对象
 {"*", [](int i, int j) {return i * j; }}, // 使用未命名的lambda表达式
 {"/", divide()},        // 使用函数调用运算符
 {"%", mod}         // 命名了的lambda表达式
};
 
int main()
{
	int num1, num2;
	string s;
 
	while (cin >> num1)
	{
		cin >> s >> num2;
		cout << num1 << s << num2 << "=" << binops[s](num1, num2) << endl;
	}
 
	return 0;
}

运行结果如下:

基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算

方法二

方法一中使用了很多C++11标准新增的功能,比如关联容容器map使用的列表初始化、标准库function类型、lambda表达式都是C++11标准新增的特性。下面方法二只简单使用了函数指针来实现。

#include "pch.h"
#include <iostream>
#include <functional>
#include <map>
#include <string>
using namespace std;
 
typedef int Func(int, int);
 
int add(int i, int j)
{
	return i + j;
}
 
int subtract(int i, int j)
{
	return i - j;
}
 
int multiply(int i, int j)
{
	return i * j;
}
 
int divide(int i, int j)
{
	return i / j;
}
 
int mod(int i, int j)
{
	return i % j;
}
 
map<string, Func*> binops;
 
int main()
{
	binops.insert(make_pair("+", add));
	binops.insert(make_pair("-", subtract));
	binops.insert(make_pair("*", multiply));
	binops.insert(make_pair("/", divide));
	binops.insert(make_pair("%", mod));
	
	int num1, num2;
	string s;
	while (cin >> num1)
	{
		cin >> s >> num2;
		cout << num1 << s << num2 << "=" << binops[s](num1, num2) << endl;
	}
 
	return 0;
}

运行结果:

基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算

到此这篇关于基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算的文章就介绍到这了,更多相关Python计算器程序内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python3+PyQt5实现使用剪贴板做复制与粘帖示例
Jan 24 Python
Python使用arrow库优雅地处理时间数据详解
Oct 10 Python
python3实现多线程聊天室
Dec 12 Python
pandas dataframe添加表格框线输出的方法
Feb 08 Python
Python3 批量扫描端口的例子
Jul 25 Python
python子线程退出及线程退出控制的代码
Oct 16 Python
python取均匀不重复的随机数方式
Nov 27 Python
tensorflow-gpu安装的常见问题及解决方案
Jan 20 Python
基于python生成英文版词云图代码实例
May 16 Python
浅谈django 重载str 方法
May 19 Python
基于python制作简易版学生信息管理系统
Apr 20 Python
将Python代码打包成.exe可执行文件的完整步骤
May 12 Python
python中逻辑与或(and、or)和按位与或异或(&amp;、|、^)区别
Aug 05 #Python
Node.js 和 Python之间该选择哪个?
Aug 05 #Python
基于python图书馆管理系统设计实例详解
Aug 05 #Python
基于Python的一个自动录入表格的小程序
Aug 05 #Python
Python中logging日志记录到文件及自动分割的操作代码
Aug 05 #Python
Python如何读写字节数据
Aug 05 #Python
python中Django文件上传方法详解
Aug 05 #Python
You might like
php小型企业库存管理系统的设计与实现代码
2011/05/16 PHP
如何使用Gitblog和Markdown建自己的博客
2015/07/31 PHP
Yii2实现自定义独立验证器的方法
2017/05/05 PHP
PHP通过文件保存和更新信息的方法分析
2019/09/12 PHP
通过Unicode转义序列来加密,按你说的可以算是混淆吧
2007/05/06 Javascript
onmouseover和onmouseout的一些问题思考
2013/08/14 Javascript
JS实现带有抽屉效果的产品类网站多级导航菜单代码
2015/09/15 Javascript
JS查找字符串中出现次数最多的字符
2016/09/05 Javascript
angularjs+bootstrap菜单的使用示例代码
2017/03/07 Javascript
JS变量及其作用域
2017/03/29 Javascript
vue2.0构建单页应用最佳实战
2017/04/01 Javascript
angular bootstrap timepicker TypeError提示怎么办
2017/06/13 Javascript
Bootstrap栅格系统的使用详解
2017/10/30 Javascript
jquery中done和then的区别(详解)
2017/12/19 jQuery
微信小程序App生命周期详解
2018/01/31 Javascript
Vue-router的使用和出现空白页,路由对象属性详解
2018/09/03 Javascript
vue项目中运用webpack动态配置打包多种环境域名的方法
2019/06/24 Javascript
vue实现表格过滤功能
2019/09/27 Javascript
python实现无证书加密解密实例
2014/10/27 Python
Python+Turtle动态绘制一棵树实例分享
2018/01/16 Python
Python实现购物评论文本情感分析操作【基于中文文本挖掘库snownlp】
2018/08/07 Python
基于Python打造账号共享浏览器功能
2019/05/30 Python
Python计算一个点到所有点的欧式距离实现方法
2019/07/04 Python
使用python将多个excel文件合并到同一个文件的方法
2019/07/09 Python
Python读取分割压缩TXT文本文件实例
2020/02/14 Python
python+opencv实现移动侦测(帧差法)
2020/03/20 Python
解决keras backend 越跑越慢问题
2020/06/18 Python
BIBLOO捷克:购买女装、男装、童装、鞋和配件
2017/01/27 全球购物
方正Java笔试题
2014/07/03 面试题
销售实习自我鉴定
2013/12/07 职场文书
职业道德模范事迹材料
2014/08/24 职场文书
公民授权委托书
2014/10/15 职场文书
2014年保洁工作总结
2014/11/24 职场文书
《丑小鸭》教学反思
2016/02/19 职场文书
Feign调用传输文件异常的解决
2021/06/24 Java/Android
python机器学习Github已达8.9Kstars模型解释器LIME
2021/11/23 Python