用着Python学量化刺猬教你量化投资财经·投资·理财

刺猬教你量化投资(二) :运算、控制与结构

2017-09-23  本文已影响242人  刺猬偷腥

Python的三类运算

Python的基本运算包括三种类型,分别是算数运算、比较运算、赋值运算和逻辑运算。

  1. 算数运算

算数运算包括加、减、乘、除、取余、取整除、求幂等,分别用+、-、* 、/、%、//、**表示。比如说:

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。

  1. 比较运算

比较运算包括等于、不等于、大于、小于、大于等于、小于等于,分别用==、!=、>、<、>=和<=表示。

比较运算的结果属于布尔类型,即返回的结果为真或为假。例如:

In [4]:a=1
b=2
c=a>b
d=a<b
print c,d

False True
  1. 赋值运算

简单的赋值运算使用=即可,但对于a=a+1这种赋值方式,还有更简便的写法,那就是使用加法赋值运算符+=,格式如下:

In [15]:a=1
a=a+1
print a
b=1
b+=1
print b

2
2

同理,除了加法赋值运算符,还有除法、乘法、除法、取余等赋值运算符,格式均一样。比如-=、=、/=、%=、*=、//=。

  1. 逻辑运算

逻辑运算包括“与”、“或”、“非”,分别用and、or、not表示。

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 判断语句:
     执行代码
elif 判断语句:  
    执行代码
else: #其他情况
    执行代码
endif
#判断语句后记得加:
#条件最好能互斥且穷举
#程序运行的时候会按顺序判断,一旦满足就执行,然后后面就不看了
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.

上一篇 下一篇

猜你喜欢

热点阅读