读书计划- 数据分析实战45讲 | 03丨Python基础语法:开始你的Python之旅 20181225

一,Python 语言特点

Python 语言最大的优点是简洁,它虽然是 C 语言写的,但是摒弃了 C 语言的指针,这就让代码非常简洁明了。

当然除了 Python 自身的特点,Python 还有强大的开发者工具。在数据科学领域,Python 有许多非常著名的工具库:比如科学计算工具 NumPy 和 Pandas 库,深度学习工具 Keras 和 TensorFlow,以及机器学习工具 Scikit-learn,使用率都非常高。

二, Python 基础语法

环境配置好后,我们就来快速学习几个 Python 必会的基础语法。我假设你是 Python 零基础,但已经有一些其他编程语言的基础。下面我们一一来看。

输入与输出

1

name = raw_input("What's your name?")

2

sum = 100+100

3

print ('hello,%s' %name)

4

print ('sum = %d' %sum)

复制代码

raw_input 是 Python2.7 的输入函数,在 python3.x 里可以直接使用 input,赋值给变量 name,print 是输出函数,%name 代表变量的数值,因为是字符串类型,所以在前面用的 %s 作为代替。

这是运行结果:

1

What's your name?cy

2

hello,cy

3

sum = 200

复制代码

判断语句:if … else …

1

if score>= 90:

2

      print 'Excellent'

3

else:

4

      if score < 60:

5

          print 'Fail'

6

      else:

7

          print 'Good Job'

复制代码

if … else … 是经典的判断语句,需要注意的是在 if expression 后面有个冒号,同样在 else 后面也存在冒号。

另外需要注意的是,Python 不像其他语言一样使用{}或者 begin…end 来分隔代码块,而是采用代码缩进和冒号的方式来区分代码之间的层次关系。所以代码缩进在 Python 中是一种语法,如果代码缩进不统一,比如有的是 tab 有的是空格,会怎样呢?会产生错误或者异常。相同层次的代码一定要采用相同层次的缩进。

循环语句:for … in

1

sum = 0

2

for number in range(11):

3

    sum = sum + number

4

print sum

复制代码

运行结果:

1

55

复制代码

for 循环是一种迭代循环机制,迭代即重复相同的逻辑操作。如果规定循环的次数,我们可以使用 range 函数,它在 for 循环中比较常用。range(11) 代表从 0 到 10,不包括 11,也相当于 range(0,11),range 里面还可以增加步长,比如 range(1,11,2) 代表的是 [1,3,5,7,9]。

循环语句: while

1

sum = 0

2

number = 1

3

while number < 11:

4

      sum = sum + number

5

      number = number + 1

6

print sum

复制代码

运行结果:

1

55

复制代码

1 到 10 的求和也可以用 while 循环来写,这里 while 控制了循环的次数。while 循环是条件循环,在 while 循环中对于变量的计算方式更加灵活。因此 while 循环适合循环次数不确定的循环,而 for 循环的条件相对确定,适合固定次数的循环。

数据类型:列表、元组、字典、集合

列表:[]

1

lists = ['a','b','c']

2

lists.append('d')

3

print lists

4

print len(lists)

5

lists.insert(0,'mm')

6

lists.pop()

7

print lists

复制代码

运行结果:

1

['a', 'b', 'c', 'd']

2

4

3

['mm', 'a', 'b', 'c']

复制代码

列表是 Python 中常用的数据结构,相当于数组,具有增删改查的功能,我们可以使用 len() 函数获得 lists 中元素的个数;使用 append() 在尾部添加元素,使用 insert() 在列表中插入元素,使用 pop() 删除尾部的元素。

元组 (tuple)

1

tuples = ('tupleA','tupleB')

2

print tuples[0]

复制代码

运行结果:

1

tupleA

复制代码

元组 tuple 和 list 非常类似,但是 tuple 一旦初始化就不能修改。因为不能修改所以没有 append(), insert() 这样的方法,可以像访问数组一样进行访问,比如 tuples[0],但不能赋值。

字典 {dictionary}

1

# -*- coding: utf-8 -*

2

# 定义一个 dictionary

3

score = {'guanyu':95,'zhangfei':96}

4

# 添加一个元素

5

score['zhaoyun'] = 98

6

print score

7

# 删除一个元素

8

score.pop('zhangfei')

9

# 查看 key 是否存在

10

print 'guanyu' in score

11

# 查看一个 key 对应的值

12

print score.get('guanyu')

13

print score.get('yase',99)

复制代码

运行结果:

1

{'guanyu': 95, 'zhaoyun': 98, 'zhangfei': 96}

2

True

3

95

4

99

复制代码

字典其实就是{key, value},多次对同一个 key 放入 value,后面的值会把前面的值冲掉,同样字典也有增删改查。增加字典的元素相当于赋值,比如 score[‘zhaoyun’] = 98,删除一个元素使用 pop,查询使用 get,如果查询的值不存在,我们也可以给一个默认值,比如 score.get(‘yase’,99)。

集合:set

1

s = set(['a', 'b', 'c'])

2

s.add('d')

3

s.remove('b')

4

print s

5

print 'c' in s

复制代码

运行结果:

1

set(['a', 'c', 'd'])

2

True

复制代码

集合 set 和字典 dictory 类似,不过它只是 key 的集合,不存储 value。同样可以增删查,增加使用 add,删除使用 remove,查询看某个元素是否在这个集合里,使用 in。

注释:#

注释在 python 中使用 #,如果注释中有中文,一般会在代码前添加 # -- coding: utf-8 -。

如果是多行注释,使用三个单引号,或者三个双引号,比如:

1

# -*- coding: utf-8 -*

2

'''

3

这是多行注释,用三个单引号

4

这是多行注释,用三个单引号

5

这是多行注释,用三个单引号

6

'''

复制代码

引用模块 / 包:import

1

# 导入一个模块

2

import model_name

3

# 导入多个模块

4

import module_name1,module_name2

5

# 导入包中指定模块

6

from package_name import moudule_name

7

# 导入包中所有模块

8

from package_name import *

复制代码

Python 语言中 import 的使用很简单,直接使用 import module_name 语句导入即可。这里 import 的本质是什么呢?import 的本质是路径搜索。import 引用可以是模块 module,或者包 package。

针对 module,实际上是引用一个.py 文件。而针对 package,可以采用 from … import …的方式,这里实际上是从一个目录中引用模块,这时目录结构中必须带有一个 __init__.py 文件。

函数:def

1

def addone(score):

2

  return score + 1

3

print addone(99)

复制代码

运行结果:

1

100

复制代码

函数代码块以 def 关键词开头,后接函数标识符名称和圆括号,在圆括号里是传进来的参数,然后通过 return 进行函数结果得反馈。

A+B Problem

上面的讲的这些基础语法,我们可以用 sumlime text 编辑器运行 Python 代码。另外,告诉你一个相当高效的方法,你可以充分利用一个刷题进阶的网址: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1 ,这是浙江大学 ACM 的 OnlineJudge。

什么是 OnlineJudge 呢?它实际上是一个在线答题系统,做题后你可以在后台提交代码,然后 OnlineJudge 会告诉你运行的结果,如果结果正确就反馈:Accepted,如果错误就反馈:Wrong Answer。

不要小看这样的题目,也会存在编译错误、内存溢出、运行超时等等情况。所以题目对编码的质量要求还是挺高的。下面我就给你讲讲这道 A+B 的题目,你可以自己做练习,然后在后台提交答案。

题目:A+B

输入格式:有一系列的整数对 A 和 B,以空格分开。

输出格式:对于每个整数对 A 和 B,需要给出 A 和 B 的和。

输入输出样例:

1

INPUT

2

1 5

3

OUTPUT

4

6

复制代码

针对这道题,我给出了下面的答案:

1

while True:

2

      try:

3

              line = raw_input()

4

              a = line.split()

5

              print int(a[0]) + int(a[1])

6

      except:

7

              break

复制代码

当然每个人可以有不同的解法,官方也有 Python 的答案,这里给你介绍这个 OnlineJudge 是因为:

1. 可以在线得到反馈,提交代码后,系统会告诉你对错。而且你能看到每道题的正确率,和大家提交后反馈的状态;

2. 有社区论坛可以进行交流学习;

3. 对算法和数据结构的提升大有好处,当然对数据挖掘算法的灵活运用和整个编程基础的提升都会有很大的帮助。

三,总结

在日常工作中,我们解决的问题都不属于高难度的问题,大部分人做的都是开发工作而非科研项目。所以我们要提升的主要是熟练度,而通往熟练度的唯一路径就是练习、练习、再练习!

我在文章中多次强调练习的作用,这样可以增加你对数据分析相关内容的熟练度。所以我给你出了两道练习题,你可以思考下如何来做,欢迎把答案放到评论下面,我也会和你一起在评论区进行讨论。

1. 如果我想在 Python 中引用 scikit-learn 库该如何引用?

2. 求 1+3+5+7+…+99 的求和,用 Python 该如何写?

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355

推荐阅读更多精彩内容