基于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使用win32com在百度空间插入html元素示例
Feb 20 Python
用Python编写简单的微博爬虫
Mar 04 Python
Python3.x对JSON的一些操作示例
Sep 01 Python
Python面向对象类编写细节分析【类,方法,继承,超类,接口等】
Jan 05 Python
Python实现FTP文件传输的实例
Jul 07 Python
python移位运算的实现
Jul 15 Python
pycharm双击无响应(打不开问题解决办法)
Jan 10 Python
git查看、创建、删除、本地、远程分支方法详解
Feb 18 Python
python模拟实现分发扑克牌
Apr 22 Python
django admin管理工具自定义时间区间筛选器DateRangeFilter介绍
May 19 Python
Python 打印自己设计的字体的实例讲解
Jan 04 Python
只用Python就可以制作的简单词云
Jun 07 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
下载文件的点击数回填
2006/10/09 PHP
php使用base64加密解密图片示例分享
2014/01/20 PHP
php使用imagecopymerge()函数创建半透明水印
2018/01/25 PHP
Javascript select下拉框操作常用方法
2009/11/09 Javascript
解析js中获得父窗口链接getParent方法以及各种打开窗口的方法
2013/06/19 Javascript
JavaScript关闭当前页面(窗口)不带任何提示
2014/03/26 Javascript
自制的文件上传JS控件可支持IE、chrome、firefox etc
2014/04/18 Javascript
js防止DIV布局滚动时闪动的解决方法
2014/10/30 Javascript
js 求时间差的实现代码
2016/04/26 Javascript
jQuery的ajax和遍历数组json实例代码
2016/08/01 Javascript
jQuery is not defined 错误原因与解决方法小结
2017/03/19 Javascript
AngularJS页面传参的5种方式
2017/04/01 Javascript
React Component存在的几种形式详解
2018/11/06 Javascript
详解Vue-cli3 项目在安卓低版本系统和IE上白屏问题解决
2019/04/14 Javascript
jQuery zTree插件快速实现目录树
2019/08/16 jQuery
vuex的使用步骤
2021/01/06 Vue.js
python 多线程应用介绍
2012/12/19 Python
解决Pycharm下面出现No R interpreter defined的问题
2018/10/29 Python
python在TXT文件中按照某一字符串取出该字符串所在的行方法
2018/12/10 Python
在Django model中设置多个字段联合唯一约束的实例
2019/07/17 Python
解决Tensorflow 内存泄露问题
2020/02/05 Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
2020/02/10 Python
python json.dumps中文乱码问题解决
2020/04/01 Python
CSS3实现鼠标悬停显示扩展内容
2016/08/24 HTML / CSS
美国紧身牛仔裤品牌:NYDJ
2017/05/24 全球购物
BLACKMORES澳洲官网:澳大利亚排名第一的保健品牌
2018/09/27 全球购物
安德玛比利时官网:Under Armour比利时
2019/08/28 全球购物
init进程的作用
2015/08/20 面试题
药学专业毕业生求职信
2013/10/20 职场文书
小学班主任事迹材料
2014/12/17 职场文书
军训决心书范文
2015/09/22 职场文书
2016年国庆节宣传标语
2015/11/25 职场文书
奶茶店的创业计划书该怎么写?
2019/07/15 职场文书
2019年励志签名:致拼搏路上的自己
2019/10/11 职场文书
dubbo集成zipkin获取Traceid的实现
2021/07/26 Java/Android
Nginx流量拷贝ngx_http_mirror_module模块使用方法详解
2022/04/07 Servers