基于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 相关文章推荐
Python list操作用法总结
Nov 10 Python
如何在Python中编写并发程序
Feb 27 Python
Python使用Turtle模块绘制五星红旗代码示例
Dec 11 Python
sublime python3 输入换行不结束的方法
Apr 19 Python
基于Python列表解析(列表推导式)
Jun 23 Python
Python文件如何引入?详解引入Python文件步骤
Dec 10 Python
python 随机打乱 图片和对应的标签方法
Dec 14 Python
python3.7实现云之讯、聚合短信平台的短信发送功能
Sep 26 Python
pytorch加载自己的图像数据集实例
Jul 07 Python
浅谈python 类方法/静态方法
Sep 18 Python
python 带时区的日期格式化操作
Oct 23 Python
详解Python流程控制语句
Oct 28 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 MYSQL中插入当前时间
2008/04/06 PHP
php中__destruct与register_shutdown_function执行的先后顺序问题
2014/10/17 PHP
Zend Framework教程之Zend_Layout布局助手详解
2016/03/04 PHP
PHP常用算法和数据结构示例(必看篇)
2017/03/15 PHP
PDO::quote讲解
2019/01/29 PHP
php5对象复制、clone、浅复制与深复制实例详解
2019/08/14 PHP
ajaxControlToolkit AutoCompleteExtender的用法
2008/10/30 Javascript
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
2009/02/04 Javascript
jQuery DIV弹出效果实现代码
2009/07/03 Javascript
学习ExtJS Window常用方法
2009/10/07 Javascript
javascript 判断中文字符长度的函数代码
2012/08/27 Javascript
常用的js方法合集
2017/03/10 Javascript
详解angularjs 关于ui-router分层使用
2017/06/12 Javascript
vue.js实现刷新当前页面的方法教程
2017/07/05 Javascript
jQuery上传插件webupload使用方法
2017/08/01 jQuery
详解vue mixins和extends的巧妙用法
2017/12/20 Javascript
vue.js实现三级菜单效果
2019/10/19 Javascript
ElementUI Tree 树形控件的使用并给节点添加图标
2020/02/27 Javascript
JS面向对象编程基础篇(一) 对象和构造函数实例详解
2020/03/03 Javascript
Python设计模式之观察者模式实例
2014/04/26 Python
python爬虫实战之爬取京东商城实例教程
2017/04/24 Python
详解python eval函数的妙用
2017/11/16 Python
python3.x实现发送邮件功能
2018/05/22 Python
Django 日志配置按日期滚动的方法
2019/01/31 Python
tensorboard实现同时显示训练曲线和测试曲线
2020/01/21 Python
如何解决pycharm调试报错的问题
2020/08/06 Python
使用html5+css3来实现slider切换效果告别javascript+css
2013/01/08 HTML / CSS
KENZO官网:高田贤三在法国创立的品牌
2019/05/16 全球购物
什么是数据抽象
2016/11/26 面试题
如何写出好的Java代码
2014/04/25 面试题
创先争优演讲稿
2014/09/15 职场文书
2014年综治维稳工作总结
2014/11/17 职场文书
学校2014年度工作总结
2014/12/06 职场文书
英文投诉信格式
2015/07/03 职场文书
Redis Cluster集群动态扩容的实现
2021/07/15 Redis
速龙x4-860k处理器相当于i几
2022/04/20 数码科技