美文网首页用着Python学量化刺猬教你量化投资财经·投资·理财
刺猬教你量化投资(二) :运算、控制与结构

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

作者: 刺猬偷腥 | 来源:发表于2017-09-23 14:39 被阅读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表示。

  • 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.

相关文章

网友评论

  • 言未醒:编程跟投资有毛线关系,这也让发表?为啥我的都不让,审核的人真棒槌,没法说。处于小学没读完吧。早知道我写小学算数题了,估计会被膜拜的。
    刺猬偷腥:量化投资通常以Python语言为基础的,所以是入门的内容。
  • 78d7d379f1d3:膜拜大神!未来的股神就是你了!
    刺猬偷腥:@左卫门_b1c9 :beers:

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

本文链接:https://www.haomeiwen.com/subject/kxqqextx.html