Python的加法和乘法——《python学习手册》笔记1

## 标题Python的加法和乘法——《python学习手册》笔记1**

标题一、算术基本运算符号简略回顾

现代逻辑的产生源出于莱布尼兹、布尔等学者对于古典算术中加法和乘法的新设想。莱布尼兹从算术加想到了逻辑加,而布尔更进一步,在算术加乘运算的基础上发展出布尔代数,加乘运算在布尔代数之中实现了新的超越,由此,现代逻辑得以诞生。
算术符号的发展其实有点意思,比逻辑符号要早很多。简单查阅得到以下简况。
法国数学家许凯在1484年写成《算术三篇》,使用了一些运算符号,如用D表示加法,用M表示减法.这两个符号最早出现在德国数学家维德曼写的《商业速算法》中,他用“+”表示超过,用“—”表示不足.到1514年,荷兰的赫克首次用“+”表示加法,用“—”表示减法.1544年,德国数学家施蒂费尔在《整数算术》中正式用“+”和“—”表示加减,这两个符号逐渐被公认为真正的算术符号,广泛采用.
以符号“×”代表乘是英国数学家奥特雷德首创的.他于1631年出版的《数学之钥》中引入这种记法.据说是由加法符号+变动而来,因为乘法运算是从相同数的连加运算发展而来的.后来,莱布尼兹认为“×”容易与“X”相混淆,建议用“·”表示乘号,这样,“·”也得到了承认.
除法符号“÷”是英国的瓦里斯最初使用的,后来在英国得到了推广.除的本意是分,符号“÷”的中间的横线把上、下两部分分开,形象地表示了“分”.至此,四则运算符号齐备了,当时还远未达到被各国普遍采用的程度。本篇仅关注算术加乘在python中的运用,减法和除法暂且搁置。

标题二、python语言中的加乘运算

接触计算机语言,在python的运算符中,加法和乘法似乎以另外一种方式,把算术的加法和乘法又做了推进。这种推进似乎和算术加乘在逻辑上的推进不尽相同,我先尽可能搜罗出在《python学习手册》一书中有关加乘运算的种种类型,在这些类型中,很明显又有很多超越常规算术加乘的地方,但又明显地具有经典算术加乘的痕迹。
Python有常规算术加乘运算(p109)

标题(一)常规加乘运算

标题1、整数加乘

加法:123+222
乘法:2*100

标题2、整数与浮点加乘p155

表达数字长度有函数len(),
集合运算是后来加的p137,在python2.4版时引进p173。布尔运算也是后来加的p138.

标题3、分数加乘p170

这个第一部分的加乘保持了普通算术中的加乘功能,无需代码来做运算了,简单到此。

标题(二)用于字符串、列表、字典、集合这些类型,加法等于拼接,乘法等于重复

这称为符号的多态,多态在第6章还有论述,此处也省略p151。

标题1、字符串拼接与重复p198,p206-7

字符串+字符串=拼接

>>> S = 'strings'
>>> T = 'letters'
>>> S = T
>>> P = 'letters'
>>> S + P
'lettersletters'

字符串*字符串=重复

>>> S * 4
'lettersletterslettersletters'
>>> (S+P)*2
'lettersletterslettersletters'

标题2、字符串加的特殊形式p212-213

>>> S ='42'
>>> I = 1
>>> int(S) + I
43
>>> S + int(i)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'i' is not defined
>>> S + (str(I)
...
... S
  File "<stdin>", line 3
    S
    ^
SyntaxError: invalid syntax
>>> S + str(I)
'421'

标题3、字符串加乘的另一种特殊形式,进制转换p214,和修改字符串p215,p218,

标题1)字符串代码转换

函数ord是将一字符的的表达式转换成万国码Unicode的二进制数字的函数,chr函数则是反向操作,可以将这个数字还原为原先的数字。

>>> ord('s')
115
>>> chr(115)

所以,我们可以预先将当前字符转化为整型并使用以下数字加运算,加法在这里好像又推广了。

>>> S = '5'
>>> S = chr(ord(S) + 1)
>>> S
'6'
>>> S = chr(ord(S) + 1)
>>> S
'7'

标题2)修改字符串中的加法+,即所谓拼接运用

在文本中修改信息,也就是改变一个字符串,可以使用拼接意义的加法+。

>>> S = 'God'
>>> S =  S + ' bless me!'
>>> S
'God bless me!'

标题3)拼接和切片的联合运用以修改字符串

>>>
>>> S = 'LOGIC SPEEE!'
>>> S = S[:3] + 'AC' + S[4:]
>>> S
'LOGACC SPEEE!'

标题4、列表加和列表乘p248

标题1)列表+

>>> L = [1, 2, 3,4]
>>> T = [5, 6, 7, 8]
>>> L + T
[1, 2, 3, 4, 5, 6, 7, 8]

标题2)列表乘*

>>> T *3
[5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8]

标题3)字符串和列表加乘的区别p248

标题(1)列表加乘操作的结果还是列表,保持了运算的封闭性

标题(2)列表操作不能混用,只能是同类型的加,这也应该是封闭性的一种表现。

标题4)特殊的混用,但结果还是字符串或者列表

使用内置函数str()和list()可以将列表字符串互为转换,但依然保持以上特征。引号好像要另找办法去掉。

>>> str(S) + '567'
'LOGACC SPEEE!567'
>>> T + list('6789')
[5, 6, 7, 8, '6', '7', '8', '9']

标题(三)拼接的加+号与函数append()的区别,append是最常用的列表加用法。集合中的add()

标题1、加法在列表中常常用函数方法,这个函数就是append().

>>> L = ['eat', 'more', 'again']
>>> L.append('please')
>>> L
['eat', 'more', 'again', 'please']

但只能一个一个的加,不能批量地加,而且不是增加列表,而是为在前的列表增加元素。

标题2、集合中的加法,好像不用+,也不是append(),而是用add()。P269

集合像没有键的字典,假定有一个空集合{},则可以通过add这个加法,给其增加集合中的元素。有点类似列表中使用的append()。

>>> S.add('state1')
>>> S.add('state2')
>>> S
{'state2', 'state1'}
>>>

标题三、python中类似加乘的方法和函数

标题(一)字典中的增加键值法p260

除了以上为空集合增加元素的add法之外,也可以用给键赋值的方法来增加元素,也可以算作是一种另类加法.

>>> S = {'eat':2, 'more':3}
>>> S['ham'] = 1
>>> S
{'eat': 2, 'more': 3, 'ham': 1}
>>>

标题(二)字典中的update方法有点类似拼接,也就是算术中的+,真的很有点类似也。p261

>>> T = {'zhou':4, 'jiang':5}
>>> S.update(T)
>>> S
{'eat': 2, 'more': 3, 'ham': 1, 'zhou': 4, 'jiang': 5}
>>>

标题(三)字典中的增加惊叹号!,用运算符号+,p271页。

>>> S
{'eat': 2, 'more': 3, 'ham': 1, 'zhou': 4, 'jiang': 5}
>>> S = {c:c+'!' for c in [:5]
  File "<stdin>", line 1
    S = {c:c+'!' for c in [:5]
                           ^
SyntaxError: invalid syntax
>>> S = {c:c+'!' for c in[:5]}
  File "<stdin>", line 1
    S = {c:c+'!' for c in[:5]}
                          ^
SyntaxError: invalid syntax
>>> S = {c.lower():c+'!' for c in ['zhou', 'jiang', 'eat', 'ham', 'more']}
>>> S
{'zhou': 'zhou!', 'jiang': 'jiang!', 'eat': 'eat!', 'ham': 'ham!', 'more': 'more!'}
>>>

这个笔记就到此为止了,第二部分习题7:通用操作+运算和append运算,p317页的几个说明值得思考。

猜你喜欢

转载自blog.csdn.net/weixin_41670255/article/details/112198925