为非程序员准备的简洁Python语言教材

  Python 中文意思是巨蟒大蟒蛇

  快速 Python 语言入门教学课程课件教材自学概念

  计算机编程主要概念

  基本编程

  定义

  循环 (loop)

  Python 数据概念

  列表 (list)

  元组 (tuple)

  字典 (dict)

  集合 ()

  模块 (module)

  类 ()

  对象性质

  Python 员编程习惯

  参考资料

  计算机编程主要概念¶

  计算机语言编程主要内容就这些:数字文字循环公式变量

  数字: 1, 2, 3, 5.6, 120, 32.4, 3.1415926, -3, -0.123

  文字: 你好我好你太牛了很黄很暴力这类文字般用双引号(")或者单引号(')括起来术语叫就是串起来

  循环: 循环(loop)就是重复件事计算机是个很笨机器基本上只会做加大于小于等于和循环这种简单工作编程就是把复杂问题拆成简单单元让它重复

  幸亏有下面讲到公式所以很多较复杂问题已经有了解决思路方法我们只是重复套用别人解决公式就可以了不用拆得太细 Python 语言最大优势就是这个语言中包含了大量解决常见问题公式你想干基本上都有人帮你干了你只是需要把他们组织捆绑起来就可以了比如下载文件公式分析网页内容公式压缩文件公式处理电子邮件公式等等

  公式: 就像数学公式 (a+b)2= a2 + 2ab + b2 这种时候带入具体数值比如:(3+4)2 = 32 + 2*3*4 + 42 = 9+24+16 = 49 前面 (a+b)2 就是我们公式名(当然编程时我们会用些比较容易明白词组做为公式名比如“和平方”这种英语或者拼音都可以)他需要两个参数ab;后面 a2 + 2ab + b2 是具体如何算出来步骤这就是我们公式内容

  在计算机里公式术语叫“”或者“思路方法”我们定义就是定义条公式时候拿来参数a,b什么下公式就行了 为了结构清晰我们往往会定义很多把复杂问题分成很多小问题每个小问题放到然后在解决复杂问题使用这些小问题解决大问题更重要是我们可以大量使用别人写好来解决自己问题

  作用是让结构清晰而且可以在区别地方重复套用

  变量: 就是上面ab这种可以代表任何值可以放进不定值单词变量变量它代表量可能会改变我们用变量来存储我们中用到各种数字文字公式所谓参数就是定义公式时候用到变量就叫参数换个马甲而已

  换成术语我们有:

数字 (number) => 数字
串 () => 文字
循环 (loop) => 循环
/思路方法 (function/method) => 公式
变量 (variable) => 变量



  到这里基本上编程就没什么可学得了剩下就是掌握各种编程语言特定和循环书写格式再掌握了别人已经写好使用方法组合起来就得了

  基本编程¶

  最基本python:

pr ("世界你好!")

  存到文件 hello.py 里然后命令行下输入 python hello.py 就可以看到结果了

  这里就用到了在屏幕上输出行:世界你好!

  Python 里使用方法是:名(参数1, 参数2)

  这里 pr;在屏幕上打印内容"世界你好!"是参数套 pr 这个公式用

  学会如何用再学会定义格式就差不多了

  Python 里注释符号是"#"就是说在 # 符号后行文字都当做解释不做为命令

pr ("打酱油!") # pr ("关我屁事")

  只打印出 “打酱油”剩下是在 # 后面所以把他们当做注释语言自动忽略了

  定义

def a_b_pingfang(a, b):
    c = a**2 + 2*a*b + b**2
     c


  我们定义个(a+b)2def 是英语 缩写意思是定义定义公式

  第 1 行就是说我们要定义名叫 a_b_pingfang 用它时候需要两个参 数 a 和 b尾巴上有个冒号冒号意思是说:“下面段话就是公式定义了要注意了”

  计算机编程里* 代表乘法/代表除法** 代表乘方 b**2 就是 b 2次方

  注意: Python 是用 缩进空格 来表示段落冒号(:)来表示段落开始

  第 2 行先缩进4个空格介绍说明下面缩进4格都是同段落用来具体计算上面定义公式把 a 2+2*a*b+b 2 计算结果放到c里

  c类似于ab都是表示个变量它可以用来存放数字文字甚至这里它存放是用ab计算后得到结果不是在名里所以术语叫做“变量”用在名里就叫参数了

  “变量”就是用个单词来代表个可以变化单词里可以有字母数字和下加线(_)数字不能打头

  第 3 行把存在c里结果传回给使用者

   命令意思就是立即结束执行后面值传给可以传回多个值

  现在可以使用这个公式了我们把套公式叫 :

ping2 = a_b_pingfang(2, 3)

  ping2 里存放了 a_b_pingfang(2, 3)得到结果也就是上面 c 这句把 c 内容传给了外面ping2

  把结果打印出来:

pr(ping2)

  全部就是:

def a_b_pingfang(a, b):
    c = a**2 + 2*a*b + b**2
     c
ping2 = a_b_pingfang(2, 3)
pr(ping2)


  存到 test2.py 跑 python test2.py 就可以看到输出 25

  循环 (loop)¶

  当然还有循环如何让重复做事?我们有 while(当...), for(对于...) 命令来进行循环控制

a = 0
while a < 100:
   a = a + 1
   pr a


  这个循环说当 a < 100 时候把 a 增加 1再把它打印出来然后重复当 a 等于100了条件不符合了就结束了

  我们有 <, >, , <=, >=, != 来判断大于小于等于小于等于大于等于不等于

  还有 and(并且), or(或者), not(不是) 来进行逻辑运算所谓逻辑运算就是测试多个区别判断的间关系:

  (a 1) and (b != 2) 来测试这两个判断是否同时成立:a 等于 1 并且 b 不等于 2 (a 1) or (b != 2) 来测试这两个判断里是否有至少个成立:a 等于 1 或者 b 不等于 2 not a 1 来测试这个判断是否是错就是对就是错颠倒黑白:不是 a 等于 1那就是 a 不等于 1 了好像有点脱裤子放屁其实在别更复杂判断组合里更有用些

  我们还有 (中断) 来打断循环和 continue(继续) 来立刻回到循环开始也可以用 (如果) 命令来进行判断:

a = 0
while True:
    a = a + 1
     a >= 100:
        
    pr a


  这里 True(正确) 表示永远正确相对是 False() 表示永远段是说直执行 while 条件总是正确就是说“当符合总是正确条件时候不断重复”当然是永远正确永远重复了下面在 处判断如果a大于等于100如果是那么执行 段落这里我们打断了循环如果条件不符就跳过 下面小段落该干嘛干嘛具体到这里就是打印 a 然后继续执行循环

  for 循环是利用下面介绍列表数据结构对列表进行循环

  Python 数据概念¶

  下面具体说到python特异功能它有几个特殊存储数据格式

  列表: list

  元组: tuple

  字典: dict (dictionary)

  集合:

  列表 (list)¶

  列表:把很多变量存进个列表里叫列意思他像列车节车厢每厢放个变量格式为 b, c, 1, 3, 5, '葡萄', '葡萄皮儿'可以看到方括号里可以放具体数字文字也可以放变量用逗号分隔

  这些内容是在固定位置上可以通过他们位置来提取:

alist = [1, 3, 5, '很傻', '葡萄', '葡萄皮儿', a, var1]
pr (alist[0]) # 打印 1
pr (alist[3]) # 打印 "很傻"


  在python里次序是从0开始数开始是0然后是12345所以上面列表 alist个内容可以用alist[0]来提取第 2个用alist[1]来提取就像年龄生下来是零岁年以后才是不是中国传统那样生下来就那是虚岁蟒蛇语言它只认准确东西不玩儿虚

  pr (alist[4]) # 打印 '葡萄'

  这里我们可以介绍用 for 循环来访问这个列表里所有内容:

for me in alist:
    pr (me)


  上面这打印所有alist里内容

  这个循环是对于列表 alist 从 0 位置开始访问它个位置把这个位置上 放到 me 里然后针对区别 me 值重复执行下面段落内容

  in 表示 me 在 alist 里也可以用来判断:

   "葡萄" in alist:
     pr "葡萄在alist里!"


  列表内容是可以改变我们可以把第4个位置设为"很天真":

alist[3] = alist[3] + ' 很天真'
pr (alist[3]) # 打印 '很傻 很天真'


  下面说道元组内容就不能改变了

  元组 (tuple)¶

  元组:元组就是列表但是他内容是不能改变用圆括号来表示内容只能开始就设定但是元组和列表的间是可以用互相转变转成列表就可以改变内容转回元组就不能改了

  元组是用圆括号来表示所以叫元组嘛

atuple = (2, 3, "老子")
alist = list(atuple) # 变成 [2, 3, "老子"]
alist[0] = 0
tuple2 = tuple(alist) # 变回 (0, 3, "老子")


  在 python 里串也是种特殊元组也就是内容不可变列表

txt = 'abcdefg'
pr(txt[1]) # 打印 b


  字典 (dict)¶

  字典:字典就像字典个字个解释个字个解释用大括号表示:

adict = {1: "我是解释",
  2: "我是解释2", 
  "我是3": 3, 
  "我是4": 4
  }


  前面字叫钥匙(key)或者索引后面解释叫"值"索引不能重复必须是唯

  我们可以看到前面和后面解释可以是数字文字还可以是或者元组但是前面不能是列表列表内容是可变可变东西都不能做索引

  我们用索引来提取设定或者增加值而不是用位置:

adict[1] # "我是解释"
adict["我是3"] # 3
adict[1] = 2 # 设定新
adict["新索引"] = "没头脑和不高兴" # 增加个新索引和值


  集合 (

  集合: 集合就是数学上用集合堆东西放到类似列表区别地方是内容不重复而且也没有次序

a = ([1, 2, 3, 2, 4, 6]) # 去掉重复内容所以是 1,2,3,4,6

  可以看出建立个集合方式是使用参数可以是列表或者元祖反正是串儿都可以

  集合用处是利用他内容不可重复特性来去掉重复内容至于其他合集交集也是这个特性延伸

  集合也是可以变成列表利用 list

alist = list(a) # 内容 [1,2,3,4,6]

  模块 (module)¶

  Python 里包涵了很多别人写好、思路方法让我们直接利用譬如写网络数 学计算分析电邮文件加密我们要做就是套公式!

  这些分门别类放到叫“模块”东西里个模块里包括很多功能相类而具体实现上个模块就是个python文件

  如果模块还需要细分更多层那么每层就是个文件目录里面有很多做为模块python文件

  要使用模块我们用“进口”这个命令: import

import time
now = time.clock
pr (now)


  这里我们先进口 time 模块然后使用 time 模块里 clock 得到当前时间打印出来

  用个英文句点表示模块time里clock: 模块名.

  在 python 里我们会用到很多别人写模块能自己少写点儿源码尽量少写懒不是?

  类 (

  其实编程来说类并不是必须但是很多python提供模块里面都是包在类里面所以我们需要介绍下类

  面向对象编程是现在比较流行编程方式是个人都得用“面像对象”思路来编程来显得自己跟得上形式其实面对对象并不是必须光棍并不可耻

  类就是种类意思

  基本上面对对象就是把同类变量打包放到个包袱里这个包袱就叫“类”挺土气是吧?其实面对对象也并不就定时髦也可以俗不可耐就看你包袱打如何样了

  这个“类”般上是以具体东西为模板譬如物种:人类猫类;物品:家俱类电器类他里面打包基本上是针对这个类进行操作譬如人说话人吃饭鼻子人猫逮耗子家居磨损

  使用类时候我们先具体化他把种类变成个体人类变成某人猫类变成某猫家俱变成某件家俱这个具体化就是所谓“对象(object)”然后我们就可以使用这个具体人家居针对具体物进行操作了所谓操作对象

  定义类¶

 RenLei:
    def __init__(self, mingzi):  # self 是个固定参数名代表这个对象自己
        self.mingzi = mingzi     # 把名字存到对象自己 mingzi 变量上
    def shui2(self):             # 谁
         self.mingzi


  上面例子开始就要求给这个对象个名字

  在类定义里个参数都是规定死必须是selfself代表这个对象自己在对象内部这个对像本身变量都是通过这个self来存取

  在类里不用提供 self 这个参数自动提供 self让我们使用它其他变量我们只要提供其他参数即可

  __init__ 这个个特殊他代表从类具体化到对象时候需要套用公式

  通过类建立对象时候会自动 __init__所以它叫做建立对象时候有什么开始要求都可以通过它来指定比如要求“脚不大好头发没有麻子”

  当然如果没有要求也可以不定义这个那么就不会自动它了

  具体化类建立对象¶

# 建立对象提供对应__init__ self 这个参数会自动提供不用我们提供
xiaozhang1 = RenLei("小张")  
mingzi = xiaozhang1.shui2  # 使用“对象名.格式来类里
pr mingzi <-- "小张"


  对象性质¶

  Python 里列表元组字典它们本身都是面对对象所以带有很多可以对自己进行操作譬如:

a = "脚不大好 头发没有 麻子".split

  split是串这个类他可以把串在给定位置分割当我们不给他参数时候会在所有空白位置分割然后返回个列表里面是被割裂

  结果a 内容是 ["脚不大好", "头发没有", "麻子"]这是个有3个元素列表

  对于列表字典的类操作请熟读介绍说明手册对他们介绍说明python编程主要就靠列表和字典了

  Python 员编程习惯¶

  重中的重: 大量使用 list 这个列表方式来存储、操作数据字长蛇阵是蟒蛇绝招多用没错

  写个 Python 我们步骤是:

  进口所有会用到到模块 import

  定义我们自己类和对于每个里要用到般放在前面定义这样我们读时候如果从上到下就知道在前面是如何定义有什么功能需要什么参数返回什么值

  在文件最下面上面定义和类开始工作

  命令行选项是通过 sys.argv 这个列表得到

  尽量使用python提供内建和模块里所以我们对Python模块介绍说明手册要很熟悉

  Python 运行是从文件上面往下走看到条命令执行条命令直到最后当我们定义和类时候他们只是定义而没有执行所以Python 看到他们先存起来直到看到定义外具体命令才真正执行如果这个命令上面那么就把存起来执行

  完整例子: 把个两列文件input.txt分割成两个文件col1.txt, col2.txt个文件 input.txt 内容:

a1 啊阿
ai1 挨埃哀
ao2 熬鳌翱獒


  内容:

def split_file(filename): # 把文件分成两列
    col1 =  # 存储第
    col2 = 
    fd = open(filename) # open 用来打开文件返回个文件对象
    text = fd.read # fd.read 读入文件fd 内容
    lines = text.splitlines # 把读入内容分行
    for line in lines: # 循环每
        part = line.split(None, 1) # 分割
        col1.append(part[0]) # 把分割部分放到col1后面
        col2.append(part[1])
     col1, col2 # 返回 col1, col2
def write_list(filename, alist): # 把文字列表内容写入文件
    fd = open(filename, 'w') # 打开输出文件col1.txt'w'指定使用写入模式
    for line in alist:
         fd.write(line + '\n')
def : # 主进入点习惯性叫他 
    filename = 'input.txt'            # 把输入文件名 input.txt 放进个变量
    col1, col2 = split_file(filename) # 分割结果存入 col1, col2
    write_list('col1.txt', col1)      # 写入
    write_list('col2.txt', col2)
 # 唯外命令开始执行上面  


  这里输入文件名是写死 input.txt 我们可以使用模块 optparse 来通过命令行读取用户提供文件会更灵活些那些就是你研究过 optparse 以后事了

  参考资料

  更多功能请参考python官方教学和手册

  先熟悉:

  内建

  内建数据类 型 (数字列表字典文件对象)

  sys 模块

  re 模块

  os 模块

  optparse 模块

  熟悉这些基本上编程没问题了

  深入 Python是本经典参考书虽然没有涵盖所有python模块内容但是对初学者基本够用而且它是个自由文件说俗了就是合法免费又有中文翻译版难得

  也可以参考 Python 绝对简明手册这个中文介绍说明

  如果需要网络编程还要熟悉网络相关模块如果想 要图形界面建议使用pygtk或者pyqt图形界面这时候也需要熟悉面对对象编程概念

  对于英文不好建议买本有Python模块介绍中文书作为参考书在编程时候边编边翻书

  Python 中文意思是巨蟒大蟒蛇但是这个语言具体出处是个叫Monty Python英国电视剧

查看快速 Python 语言入门教学课程课件教材自学概念:http://code.google.com/p/hashao/wiki/ChinesePythonTutor

Tags: 

延伸阅读

最新评论

发表评论