在Python 3里面,中文是可以作为变量名的,而运算符又可以重载,基于这两个特性,我们可以实现阿拉伯数字与中文数字的四则运算。

首先我们定义一个类 Num :

class Num(object):

def __init__(self, n):

self.n = n

def __repr__(self):

return self.n

def __str__(self):

return str(self.n)

然后把这个类初始化为各个中文数字:

一 = Num(1)

五 = Num(5)

八 = Num(8)

运行效果如下图所示:

代码里面,通过实现 __repr__ ,能实现在Jupyter或者Python命令行交互环境里面输入变量名回车就显示变量的值。

通过实现 __str__ ,能实现在Python 里面 print (变量) 的时候打印出具体的值。

但现在还不够,当我们进行四则运算的时候,会报错:

为了能够正常实现 一 + 1 ,我们需要实现 __add__ 方法:

class Num(object):

def __init__(self, n):

self.n = n

def __repr__(self):

return str(self.n)

def __str__(self):

return str(self.n)

def __add__(self, x):

return self.n + x

运行效果如下图所示:

但是,如果我们把加号两侧的数字兑换一下,代码又报错了,如下图所示:

这是由于,当我们执行 a + b 的时候,Python会调用 a 对象里面的 __add__ 方法,所以当我们执行 一 + 1 的时候,调用的是 一 里面的 __add__ 方法,这是我们自己写的,所以能够正常运行。

但是当我们执行 1 + 一 的时候,调用的是 1 里面的 __add__ 方法。在Python里面,数字对象里面的 __add__ 方法只能实现数字加数字。

但是我们不能修改Python 内置数字的 __add__ 方法,所以我们需要使用 __radd__ 方法。它的作用是,在 1 + 一 执行的时候,如果 1 里面的 __add__ 运行失败了,那么就会调用 一 里面的 __radd__ :

class Num(object):

def __init__(self, n):

self.n = n

def __repr__(self):

return str(self.n)

def __str__(self):

return str(self.n)

def __add__(self, x):

return self.n + x

def __radd__(self, x):

return self.n + x

运行效果如下图所示:

同样的原理,你可以自己实现减法 __sub__ / __rsub__ 、乘法 __mul__ / __rmul__ 和除法 __truediv__ / __rtruediv__ 。

python输出中文加数字_Python实现阿拉伯数字加上中文数字相关推荐

  1. 制打印如下所示的n行数字金字塔_一日一技:在Python中实现阿拉伯数字加上中文数字...

    在Python 3里面,中文是可以作为变量名的,而运算符又可以重载,基于这两个特性,我们可以实现阿拉伯数字与中文数字的四则运算. 首先我们定义一个类 Num: class Num(object): d ...

  2. python判断输入的是否为数字_python怎么判断是否为数字 将罗马数字转为阿拉伯数字,用python解...

    将阿拉伯数字转为罗马数字,用python解 class Solution(object): def intToRoman(self, num): """ :type nu ...

  3. python输出语句print用法_python输出语句print的用法是什么?_后端开发

    python输出语句"print()"是式样化输出函数,用于打印输出."print()"函数会自动换行:printf()函数的语法为:"printf( ...

  4. python输出结果空格分割_python 输出列表元素实例(以空格/逗号为分隔符)

    给定list,如何以空格/逗号等符号以分隔符输出呢? 一般的,简单的for循环可以打印出list的内容: l=[1,2,3,4] for i in l: print(i) 输出结果一行一个元素: 1 ...

  5. python中文文本分析_python使用snownlp进行中文文本处理以及分词和情感分析 - pytorch中文网...

    SnowNLP: 一个简单的中文文本处理库 SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的 ...

  6. python输出文字加数字_python变量、输入、输出、数字、字符串

    总结 01.print()输出 02.数据类型:Numbers(数字类型:int(整数型).float(浮点数).complex(复数:实数+虚数 5+2j).布尔值(true.false)) 03. ...

  7. python里面如何将数字转换成中文的形式_python中将阿拉伯数字转换成中文的实现代码...

    #!/usr/bin/python #-*- encoding: utf-8 -*- import types class NotIntegerError(Exception): pass class ...

  8. python输出一行10个_python 如何将一系列数字十个一行输出【】

    如何方便地给Python环境注册新类库 要利用Python进行计算,就需要一一安装所需的模而这些模块又依赖于其软件包或库,因而安装和使用起来相对麻烦.幸好有人专门在做这一类事情,将科学计算所需要的模块 ...

  9. python输出汉字怎么对齐_Python的print输出中文对齐问题

    问题描述: 在使用Python的内建函数print作英文输出时,应用格式化输出可以对齐得很好: s1 = 'I am a long sentence.' s2 = 'I\'m short.' prin ...

最新文章

  1. Wannafly挑战赛9
  2. python 重复输出字符串
  3. idea中maven执行install报错_IntelliJ IDEA Maven编译install时报错,无效的发行版:1.8
  4. .net实现URL重写
  5. js 定时器用法详解——setTimeout()、setInterval()、clearTimeout()、clearInterval()
  6. 隐藏a标签seo_SEO网站优化,新手SEO常犯的五个错误!
  7. SQL Server内联表值函数
  8. 概念理解之装箱与拆箱
  9. 笔记本电脑装机详细步骤图文教程
  10. 计算机电源 3842,UC3842开关电源保护的几个技巧及电路图
  11. 全民K歌神器,这款麦克风唱享高音质体验
  12. 河南省谷歌高清卫星地图下载
  13. 小活动大收获,大叔做烧烤摊,两周收款10万,竟如此简单!
  14. ICP-MS测试/电感耦合等离子体质谱仪(型号Perkin Elmer Nexion 300)
  15. 一文看懂神经网络工作原理
  16. GD32F103ZET6奋斗者开发板W5500通信——01 基础移植
  17. 玩转iPhone实用技巧
  18. The app icon set named AppIcon did not have any applicable content.
  19. 江苏自考计算机应用基础停考了吗,江苏自考停考35个自考专业!附详细专业目录...
  20. NOP法破解简易登录系统

热门文章

  1. Android自定义view之围棋动画,真牛皮
  2. stm32f105移植到gd32f305笔记
  3. php中的preg_replace函数,PHP正则替换preg_replace函数如何使用
  4. 华为CE交换机堆叠配置
  5. 此公众号并没有这些scope的权限 错误码10005
  6. python openssl 证书加解密过程感觉是这样
  7. 各品牌电脑U盘启动的快捷键总结
  8. 用Pythn言何实现你的股票量交模型
  9. 【FPGA教程案例99】数据处理2——基于DA分布式算法的FIR滤波器FPGA实现
  10. 求解最小机器重量(回溯法/分支限界)