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

方法一

结合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;
}

运行结果如下:

方法二

方法一中使用了很多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计算器程序内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python计算auc的方法

    1.安装scikit-learn 1.1 Scikit-learn 依赖 Python (>= 2.6 or >= 3.3), NumPy (>= 1.6.1), SciPy (>= 0.9). 分别查看上述三个依赖的版本: python -V 结果: Python 2.7.3 python -c 'import scipy; print scipy.version.version' scipy版本结果: 0.9.0 python -c "import numpy; pr

  • 基于Python计算圆周率pi代码实例

    一 计算公式: 二 实现代码 (1) import math from tqdm import tqdm import time total,s,n,t=0.0,1,1.0,1.0 while(math.fabs(t)>=1e-6): total+=t n+=2 s=-s t=s/n k=total*4 print("π值是{:.10f} 运行时间为{:.4f}秒".format(k,time.clock())) for i in tqdm(range(101)): print(

  • Python计算开方、立方、圆周率,精确到小数点后任意位的方法

    Python计算的位数 在电脑上做了一个实验,看看python能计算到多少位,一下是结果. x = math.sqrt((3)) print ("%.53f"%(x)) print ("%.63f"%(x)) print ("%.83f"%(x)) 1.73205080756887719317660412343684583902359008789062500 1.732050807568877193176604123436845839023590

  • Python实现计算圆周率π的值到任意位的方法示例

    本文实例讲述了Python实现计算圆周率π的值到任意位的方法.分享给大家供大家参考,具体如下: 一.需求分析 输入想要计算到小数点后的位数,计算圆周率π的值. 二.算法:马青公式 π/4=4arctan1/5-arctan1/239 这个公式由英国天文学教授约翰·马青于1706年发现.他利用这个公式计算到了100位的圆周率.马青公式每计算一项可以得到1.4位的十进制精度.因为它的计算过程中被乘数和被除数都不大于长整数,所以可以很容易地在计算机上编程实现. 三.python语言编写出求圆周率到任意

  • Python读取Excel一列并计算所有对象出现次数的方法

    第一种方法 import pandas as pd from collections import Counter data = '参赛信息.xlsx' data = pd.read_excel('参赛信息.xlsx') # 导入参赛信息 x_pandas_list = data[u'专业1'] # 专业情况 list = list(x_pandas_list) c = Counter(list) print(c) 输出形式 Counter({'自动化学院': 164, '高分子科学与工程学院'

  • python计算圆周率pi的方法

    本文实例讲述了python计算圆周率pi的方法.分享给大家供大家参考.具体如下: from sys import stdout scale = 10000 maxarr = 2800 arrinit = 2000 carry = 0 arr = [arrinit] * (maxarr + 1) for i in xrange(maxarr, 1, -14): total = 0 for j in xrange(i, 0, -1): total = (total * j) + (scale * a

  • python使用三角迭代计算圆周率PI的方法

    本文实例讲述了python使用三角迭代计算圆周率PI的方法.分享给大家供大家参考.具体如下: 方法1: 复制代码 代码如下: # Calculating PI using trigonometric iterations # FB36 - 20130825 import math x = 1.0 y = 1.0 z = 1.0 w = 1.0 v = 1.0 u = 1.0 for i in range(30):       x = math.sin(x) + x     y = math.co

  • 如何通过python计算圆周率PI

    代码如下 def PI(n): pi=0 for k in range(n): pi += 1/pow(16,k)*(4/(8*k+1)-2/(8*k+4)-1/(8*k+5)-1/(8*k+6)) return pi import time scale = 20 print("执行开始".center(scale+4,'-')) for i in range(scale+1): a='*' * i b='.' * (scale-i) c=(i/scale)*100 pi = PI(1

  • 用python实现一个简单计算器(完整DEMO)

    一.功能目标 用户输入一个类似  1-2*((60-30+(-40/5)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))  这样的表达式,假设表达式里面除了包含空格.'+'.'-'.'*'.'/'和括号再无其他特殊符号,然后自己动手写代码解析其中的表达式,实现加减乘除,最后得出的结果与真实的计算机所算的结果必须一致. 二.解题思路 1.为了分开运算符和数字,因此把输入的字符串格式转换为 列表的格式进行处理,这样子就可以按位进行 处理了 2.

  • python GUI计算器的实现

    01 实现 我们几乎每个人都用过计算器,大家对于计算器应该都是比较熟悉的,计算器整体也是比较简单的,主要包括:显示器.键盘.运算的逻辑处理等,计算器的图形界面我们使用 tkinter 库实现,下面看一下具体实现过程. 首先,我们画一个主窗口,代码实现如下: # 创建主窗口 tk = tkinter.Tk() # 设置窗口大小和位置 tk.geometry('300x210+500+200') # 不允许改变窗口大小 tk.resizable(False, False) # 设置窗口标题 tk.t

随机推荐