Python的三类运算
Python的基本运算包括三种类型,分别是算数运算、比较运算、赋值运算和逻辑运算。
- 算数运算
算数运算包括加、减、乘、除、取余、取整除、求幂等,分别用+、-、* 、/、%、//、**表示。比如说:
In [1]:
a=1
b=2
c=[a+b,a-b,a*b,a/b,a%b,a//b,a**b]
print c
[3, -1, 2, 0, 1, 0, 1]
值得注意的第一个地方是,a/b运算的结果竟然是0而不是0.5,这是因为在Python2.x中,两个整数的除法运算结果亦为整数,而且不进行四舍五入。如果想得到正确答案0.5,我们需要将a或b其中一个整数变为浮点数:
In [2]:
a=1
b=2
c=float(a)/b
print c
0.5
除此之外,还有一个方法解决除法运算的问题,那就是从Python3中引入除法的模块。方法如下:
In [3]:a=1
b=2
from __future__ import division
c=a/b
print c
0.5
值得注意的第二个地方是,取余时,当正好被整除而没有余数时,Python返回的结果是0。
- 比较运算
比较运算包括等于、不等于、大于、小于、大于等于、小于等于,分别用==、!=、>、<、>=和<=表示。
比较运算的结果属于布尔类型,即返回的结果为真或为假。例如:
In [4]:a=1
b=2
c=a>b
d=a<b
print c,d
False True
- 赋值运算
简单的赋值运算使用=即可,但对于a=a+1这种赋值方式,还有更简便的写法,那就是使用加法赋值运算符+=,格式如下:
In [15]:a=1
a=a+1
print a
b=1
b+=1
print b
2
2
同理,除了加法赋值运算符,还有除法、乘法、除法、取余等赋值运算符,格式均一样。比如-=、=、/=、%=、*=、//=。
- 逻辑运算
逻辑运算包括“与”、“或”、“非”,分别用and、or、not表示。
and运算符:表达式为a and b,a和b都为True,返回结果True,但a或b中只要有一个逻辑为False,则and的结果即为False。
not运算符:表达式为not a,“非a”的意思是,如果真的不是a,那就返回True,如果真的是a,那么结果就是False。
or运算符:表达式为a or b,只要a或b有一个是True,那么结果就会返回True。
在Python中,0、空字符串、none三者均为False,其余对象均为True。
再进一步,True相当于1,False相当于0。
Python的运算优先级
优先级的含义是,Python在处理程序命令的时候,会按照优先级的顺序进行。比如小学数学的口诀“先乘除后加减”,就说明了做运算时应遵循的规则。下表整理了常用命令的优先级顺序:
优先级 | 运算 | 示例说明 |
---|---|---|
1 | 函数、寻址、下标 | append()、id()、a[1] |
2 | 求幂 | ** |
3 | 翻转运算 | ~x=-(x+1), ~2+1=-2 |
4 | 正负号 | 3*-2=-6 |
5 | 乘、除、取余 | *、/、% |
6 | 加、减 | +、- |
7 | 比较运算 | <、>、== |
8 | 逻辑运算 | and、or、not |
运算与表达式
表达式可分为四种类型,分别是:
表达式类型 | 示例说明 |
---|---|
值表达式 | 1 |
计算表达式 | 1+2 |
字符串表达式 | "hello!" |
变量表达式 | a=1+2 |
在其他编程语言中,自定义函数一般用“def 函数名”的形式展开。在Python中,若需定义只含表达式的函数,可采取“函数名=lambda a,b:公式”的方法实现。比如说:
In [5]:sum=lambda a,b:a+b
sum(1,2)
Out[5]:3
控制流概念
我们在过马路的时候,需要根据交通灯的指示红灯停绿灯行。同理,电脑运行程序的时候,也会根据我们设置好的交通灯指令按顺序执行。通过使用控制流语句,便可将程序划分为三种控制流结构,分别是顺序结构、分支结构以及循环结构。
顺序结构是指程序自上而下逐行运行。
分支结构加入了条件的判断,根据判断的结果,程序执行不一样的指令。
一般使用if语句来实现,表达式为:
if 判断语句:
执行代码
elif 判断语句:
执行代码
else: #其他情况
执行代码
endif
#判断语句后记得加:
#条件最好能互斥且穷举
#程序运行的时候会按顺序判断,一旦满足就执行,然后后面就不看了
- 循环结构中,程序会不断重复地执行指令,直到遇上终止的条件。常见的语句是while和for。对于while语句,只要判断的条件为真,程序将不断重复执行,直到判断条件变为假(0,"", none),循环终止。而对于for语句,可令程序对范围内的条件逐一执行,格式为
for i in [1,2,3,4,5,6,7,8] <br/> if 判断语句
。比如说:
In [1]:a=0
for i in range(0,11):
a=a+i
print a
55
#range(start, stop, step),默认start为0,step为1,stop没有默认值,必须自己填写
#range(0,11)同样包前不包后,等同于[0,1,2,3,4,5,6,7,8,9,10]
对于循环结构的语句,有时会进入死循环,这时就需要用到break语句来打断死循环。
此外,对于需要终止某一次循环的时候,还可以用continue语句,比如说:
In [2]:a=0
for i in range(0,6):
a=a+1
if a==3:
continue #当a等于3时,就被忽略了一次,然后回到开头继续循环
print a
1
2
4 #结果中不包含3,直接从4开始继续
5
6
至此,我们已有能力自己编写一个猜数字的小游戏。
In [3]:import random
number=random.randint(1,51)
guess=0
while True:
num_input=raw_input("please input an integer between 1 to 50:")
guess+=1
if number==int(num_input):
print "you are awesome, the correct number is %d and you just need %d time guesses then succeed" %(number,guess)
break
elif number<int(num_input):
print "try smaller"
elif number>int(num_input):
print "try bigger"
else:
print "please input a correct integer."
please input an integer between 1 to 50:40
try bigger
please input an integer between 1 to 50:50
you are awesome, the correct number is 50 and you just need 2 time guesses then succeed
结语
在认识各种数据类型、掌握基本运算的原理、了解Python的控制与逻辑结构后,我们接下来将弄清楚如何使用Python中的各种函数,敬请期待。
刺猬偷腥
2017年9月23日
to be continued.