说明,以下是我翻译的Python官方免费英文材料的第二部分,这是个很好的入门读物。如果需要英文版,请到(Mark学编程QQ群下载,或留言与我联系索取)希望反馈意见,供修改中文翻译稿时参考。
运算符与表达式
你写的大多数语句(逻辑行)都包含表达式。比如, 2 + 3 就是一个简单的表达式。 表达式可以分解成运算符和操作数(英语是operator and operands, 拼法很对应,而约定俗称的翻译很一般,如果是运算符运算数,或者操作符操作数就好了,译者注)。运算符是有功能的,能够做些什么,并且能够用符号表示,比如 + 号;或者用特殊的关键字表示。运算符需要一些数据并对其操作,被操作的叫做操作数,上面的例子中 2 和 3 就是操作数。
运算符
我们简要介绍运算符及其用法
请注意,你可以对下面给出的例子中的表达式求值。使用互动编译器,比如,你用Python互动编辑器(或你自己顺手的编辑器)测试这个表达式 2 + 3。
2 + 3
5
3 * 5
15
下面是快速的各种运算符的概观:
加法 +
两个对象相加
3 + 5 得 8, ‘a’ + ‘b’ 得 ‘ab’
减法 -
-5.2 得 -5.2, 50 – 24 得 26 (减号前如果没有,你就默认是零)
乘法 *
2 * 5 得 6, ‘la’ * 3 得 ‘lalala’ (注意和加法区别)
平方 **
3**4 得 81 (333*3)
除法 /
13 / 3 得 4.333333333(看自己编辑器是多少位)
除法并且取整 //
13 // 3 得4,除法后去除小数部分。
-13 // 3 得 -5,(?为什么,你琢磨琢磨)
9 // 1.81 得 4.0
取余(modulo)
返回除后的余数
13 % 3 得1, -25.5 % 2.25 得1.5;
<< (left shift) (以下这些位计算,你看不懂,可以跳过,暂时没有什么卵用)我暂时不翻译,保留原样。
Shiftsthe bits of the number to the left by the number of bits specified. (Each number is represented in memory by bits or binary digits i.e. 0 and 1)
2 << 2 gives 8; 2 is represented by 10 in bits.
Left shifting by 2 bits gives 1000 which represents the decimal 8;
(right shift)
Shifts the bits of the number to the right by the number of bits specified.
11 >> 1 gives 5;
11 is represented in bits by 1011 which when right shifted by 1 bit gives 101 which is the decimal 5;
& (bit-wise AND) 等等这些玩意统统略去,免得打击学编码积极性,也没有什么卵用。
(小于)得出要么True 要么 False;注意首字母大写。
可以这么写 3 < 5 < 7 得出 True;
< (大于)
5 > 3 得出 True, 如果两个操作数都是数字,它们先转化成共同的类型,否则总是False,(请试验,另外><等都是英文状态下的符号,试试中文的,测试结果如何?–译者)
= <= 顾名思义
== (等于)
测试两个对象是否相等。
x = 2; y = 3; x == y 得 True
x = ‘str’; y = ‘stR’; x == y 得 False
x = ‘str’; y = ‘str’; x == y 得 True
!= (不等于)
不再举例(译者)
not(boolean NOT)
简单理解是取相反的boolean值,比如:
x = True; not x 得 False
and (boolean AND)
稍微解释一下,这是逻辑and,两个都是True的情况下得出True;其中一个为False,只能得出False。
or (boolean OR)
如果是两个,任意一个True 得出是True,只有两个都是False才得出False。(这个boolean的翻译,译者简化了解释,没有照原文翻译,你信不过译者,你就去看英文原文,译者不怪你)
简略数学运算符和赋值符
普遍的是,变量在数学运算后将结果赋值回这个变量,所以有了此类表达式的简便写法:
a = 2
a = a + 2
简略表示为
a += 2
同理
a *= 3
a -= 5
求值顺序
如果你有个这样的表达式 2 + 3 * 4;先做加法还是乘法?我们高中(原文如此,可以想象英语国家是何等惨?到了高中才学加减乘除顺序,我们可是小学就学的,当然是原作者发晕了)数学告诉我们先做乘法。这就意味着乘法运算符比加法运算符有着更高的优先权。
下面的图表展示了Python的优先性,(这里就不一一列举了,请参考英文原文,我大体说一下—译者注)
如果你吃不准谁优先,请用括号;
选择几个,从低到高的优先权
Lambda – 最低,还没有学,下面的也是,没有学的先参考着
If – else -条件表达式
In, not in, <, >等比较运算符
算数运算符
/ *等;
**:幂
X[ index]
(expression…), [expressions….]等等。
再次提醒,上面是节选,中间有不少。请参阅英语原版,或平时留意即可。
再次提醒括号的重要性,多用括号,当然也不要滥用。
结合性
运算符一般是从左到右的结合的,这意味着具有同等优先的运算符从左到右求值,比如: 2 + 3 + 4,先计算2 + 3 等于5,再计算 5 + 4 。
表达式
举例:
Length = 5
Breadth = 2
Area = length * breadth
print (‘Area is’, area)
print (‘Perimeter is’, 2 * (length + breadth))
输出:
Area is 10
Perimeteris14
说明:为激励大家亲自敲代码并测试运行,今后一般不再给出原文中的结果。
代码运行原理
三角形的长度和宽度存储在长度宽度的名字(绑定)的变量里,我们在表达式的(帮助下)使用变量名计算三角形的面积和直径,我们用变量area存储表达式(length * breadth)的(求值)结果, 然后用print函数打印。第二个例子,我们直接在print函数中使用表达式(2*(length+breadth))的值。
另外注意Python的良好打印习惯,我们没有具体指出‘Area is’ 和变量 area的空格,但Python自己这么做了,牛呀(比C语言牛多了—译者注),总之,Python让程序员的生活变简单了。
我们已经看了运算符,操作数和表达式,这些是所有程序的基本建筑材料,下一步,我们学习使用语句来让这些在程序中发挥作用。
网友评论