基于Python編寫一個(gè)計(jì)算器程序,實(shí)現(xiàn)簡(jiǎn)單的加減乘除和取余二元運(yùn)算
方法一:
結(jié)合lambda表達(dá)式、函數(shù)調(diào)用運(yùn)算符、標(biāo)準(zhǔn)庫(kù)函數(shù)對(duì)象、C++11標(biāo)準(zhǔn)新增的標(biāo)準(zhǔn)庫(kù)function類型,編寫一個(gè)簡(jiǎn)單的計(jì)算器,可實(shí)現(xiàn)簡(jiǎn)單的加、減、乘、除、取余二元運(yùn)算。代碼如下:
#include "pch.h"
#include <iostream>
#include <functional>
#include <map>
#include <string>
using namespace std;
int add(int i, int j)
{
return i + j;
}
// 使用函數(shù)調(diào)用運(yùn)算符
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}, // 使用函數(shù)指針
{"-", minus<int>()}, // 使用標(biāo)準(zhǔn)庫(kù)函數(shù)對(duì)象
{"*", [](int i, int j) {return i * j; }}, // 使用未命名的lambda表達(dá)式
{"/", divide()}, // 使用函數(shù)調(diào)用運(yùn)算符
{"%", mod} // 命名了的lambda表達(dá)式
};
int main()
{
int num1, num2;
string s;
while (cin >> num1)
{
cin >> s >> num2;
cout << num1 << s << num2 << "=" << binops[s](num1, num2) << endl;
}
return 0;
}
運(yùn)行結(jié)果如下:

方法二:
方法一中使用了很多C++11標(biāo)準(zhǔn)新增的功能,比如關(guān)聯(lián)容容器map使用的列表初始化、標(biāo)準(zhǔn)庫(kù)function類型、lambda表達(dá)式都是C++11標(biāo)準(zhǔn)新增的特性。下面方法二只簡(jiǎn)單使用了函數(shù)指針來(lái)實(shí)現(xiàn)。
#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;
}
運(yùn)行結(jié)果:

到此這篇關(guān)于基于Python編寫一個(gè)計(jì)算器程序,實(shí)現(xiàn)簡(jiǎn)單的加減乘除和取余二元運(yùn)算的文章就介紹到這了,更多相關(guān)Python計(jì)算器程序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 基于Python計(jì)算圓周率pi代碼實(shí)例
- Python計(jì)算開方、立方、圓周率,精確到小數(shù)點(diǎn)后任意位的方法
- Python實(shí)現(xiàn)計(jì)算圓周率π的值到任意位的方法示例
- python計(jì)算圓周率pi的方法
- python使用三角迭代計(jì)算圓周率PI的方法
- 用python實(shí)現(xiàn)一個(gè)簡(jiǎn)單計(jì)算器(完整DEMO)
- python GUI計(jì)算器的實(shí)現(xiàn)
- python計(jì)算auc的方法
- Python讀取Excel一列并計(jì)算所有對(duì)象出現(xiàn)次數(shù)的方法
- 如何通過python計(jì)算圓周率PI
相關(guān)文章
解決Python下imread,imwrite不支持中文的問題
今天小編就為大家分享一篇解決Python下imread,imwrite不支持中文的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2018-12-12
詳解django+django-celery+celery的整合實(shí)戰(zhàn)
這篇文章主要介紹了詳解django+django-celery+celery的整合實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
使用pyplot.matshow()函數(shù)添加繪圖標(biāo)題
這篇文章主要介紹了使用pyplot.matshow()函數(shù)添加繪圖標(biāo)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2020-06-06
Python實(shí)現(xiàn)簡(jiǎn)單查找最長(zhǎng)子串功能示例
這篇文章主要介紹了Python實(shí)現(xiàn)簡(jiǎn)單查找最長(zhǎng)子串功能,涉及字符串遍歷、統(tǒng)計(jì)等相關(guān)操作技巧,需要的朋友可以參考下2019-02-02
Python filter()及reduce()函數(shù)使用方法解析
這篇文章主要介紹了Python filter()及reduce()函數(shù)使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
一文詳解Python中PO模式的設(shè)計(jì)與實(shí)現(xiàn)
在使用 Python 進(jìn)行編碼的時(shí)候,會(huì)使用自身自帶的編碼設(shè)計(jì)格式,比如說最常見的單例模式等。本文將為大家介紹PageObject自動(dòng)化設(shè)計(jì)模式(PO模式)的設(shè)計(jì)與實(shí)現(xiàn),感興趣的可以了解一下2022-06-06
Python打包模塊wheel的使用方法與將python包發(fā)布到PyPI的方法詳解
這篇文章主要介紹了Python打包模塊wheel的使用方法與將python包發(fā)布到PyPI的方法詳解,需要的朋友可以參考下2020-02-02

