笨办法学Python 笔记
第一部分:输入输出、变量、函数
Print部分
1、 如果你来自另一个国家,并且看到ASCII编码的错误,在python的最上面一行加上一行:-- coding:utf-8 --
2、 文本用引号引起来,单引号和双引号都行,但要注意用英文格式的,如果文本中已经有单引号,那整个文本就不能用单引号引起来的,要用双引号
3、 #注释
4、 Print 后可以同时跟文本和数字,中间用英文逗号隔开,但是打印的时候不打印逗号出来,打印出来的是用空格隔开的
5、 进行数学计算时,只要公式中存在一个浮点数,计算结果就是浮点数
6、 Python中直接给变量赋值就可,赋的值可以是已经被赋值的变量
格式化字符串 s% 传入字符串,d%传入的是整数,f%传入的是浮点数字,r%不管什么都传入,用法是将一个值插入到一个有字符串格式符的字符串中。%r 打印出来的是写在脚本里的内容,%s 打印的是应该看到的内容(转义字符问题)
例子:
my_height = 74 # inches
print ("He's %d inches tall." % my_height)
my_eyes = 'Blue'
my_hair = 'Brown'
print ("He's got %s eyes and %s hair." % (my_eyes, my_hair) )
7、 两个字符串之间用 + 连起来,就可以生成一个更长的字符串
8、 字符串中可以包含字符串
binary = "binary"
do_not = "don't"
y = "Those who know %s and those who %s." % (binary, do_not)
print "I also said: '%s'." % y
9、 字符串乘以整数数字,print "." * 10 结果为10个 .
10、 Print 后面加逗号,后再有一个print ,两个打印结果中间是空格隔开
11、 Print 后面换行,再有一个print ,两个打印结果也是换行
12、 可以先定义格式化字符,后传入值
formatter = "%r %r %r %r"
print formatter % (1, 2, 3, 4)
13、 print函数,默认以换行结尾,可以设置end的值来设置以什么结尾,print(‘’,end = “”)
14、 打印的字符串中加 代表换行
months = "Jan Feb Mar Apr May Jun Jul Aug"
print "Here are the months: ", months
15、 一大段文本如果要打印,用三个双引号 引起来 Print “””宽文本 “””,可以在一组三引号之内放入任意多行的文字,三个单引号和三个双引号实现的作用是一样的,三引号还有一个用途就是注释
16、 反斜杠 转义符。双反斜杠 \可以打印出一个反斜杠
17、 ” 将双引号转义。’将单引号转义
18、 制表符 相当于4个空格
传参部分
19、 在python2中有两个函数input() 和 Raw_input() 。Raw_input()用来获取控制台的输入,将所有输入作为字符串看待,返回字符串类型;input()只能接受数字的输入。
20、 在python3中,只保留了input()函数,接收任意类型输入,将所有输入默认为字符串处理,并返回字符串类型
21、 Raw_input() 可以在括号内输入提示语,例如 age = raw_input("How old are you? ")
22、 Pydoc 命令 生成说明性文档 在windows系统,命令行界面输入 python -m pydoc raw_input 输入q退出pydoc
23、 Import 将sys模组import进来,或将sys库import进来
24、 另外一种将变量传递给脚本的方法:传参。Argv是参数变量,根据具体程序确定传递参数的个数,在命令行运行时就给好参数。将每个参数赋予一个变量名,就是解包。第一个参数是文件名,例:
from sys import argv
script, first, second, third = argv
文件操作
25、 T = Open(文件名) 打开某个文件。传入文件名,返回一个值,将这个值赋给一个变量,这就是打开文件的过程,open获得是一个文件
26、 T.read() 读取已经打开的文件的内容,不需要传任何参数。Read是文件支持的命令,返回文件中的字节数。读取的结果可以写入别的文件
27、 函数和方法的区别:
28、 处理完文件后,要执行下close()命令,将文件关闭,跟编辑器中的保存一个意思
29、 Readline() 读取文件中的一行
30、 Truncate() 清空文件,是指阶段,将当前位置的后面的内容都清除
31、 Write(stuff) 将stuff写入文件
32、 open(filename, 'w') 如果要对打开的文件进行写入操作,需要在打开时指定w参数。open 对于文件的写入操作态度是安全第一,所以你只有特别指定以后,它才会进行写入操作
33、 exists(filename) 将文件名字符串作为参数,如果文件存在返回true,如果文件不存在返回false 调用方式:from os.path import exists
函数
34、 函数可以给代码片段命名,可以接受参数,可以创建微型脚本或者小命令
35、 使用def新建函数
36、 编程人员约定使用 *args 和 *kwargs作为可变参数的两种形式。*args传递一个可变参数列表给函数实参。*kwargs则是将一个可变的关键字参数的字典传给函数实参。通过解包的方式使用。
37、 函数可以接受可变参数,一个参数,多个参数,不接受任何参数
38、 函数定义以def开始,函数名称以字符和下划线组成,函数名称后紧跟括号,括号里包含参数,多个参数以逗号隔开,参数名称无重复,紧跟着参数的是括号和冒号,紧跟着函数定义的代码使用了4个空格的缩进,函数结束位置取消了缩进
39、 运行函数、调用函数、使用函数是一个意思。调用函数使用了函数名,函数名紧跟着括号,括号内有参数,多个参数用逗号隔开,函数以括号结束
40、 函数里边的变量和脚本里边的变量之间是没有连接的
41、 我们可以给我们的函数很多的参数,然后在函数里把它们打印出来,可以在函数里用变量名,可以在函数里做运算,甚至可以将变量和运算结合起来
42、 Seek函数:移动文件读取指针到指定位置,一个必选参数,一个可选参数,第一个从参数表示需要移动偏移的字节数。第二个参数表示从哪个位置开始偏移,默认值为0,0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。
43、 Rewind 函数:将文件指针的位置倒回文件的开头。一个必选参数,输入一个已经打开的文件名,如果成功返回true,如果失败返回false
44、 函数可以返回东西,return 后面跟要返回的值
45、 整理:将前面习题中的所有的词和符号写下来,写出名字和作用。过一段时间后默写
46、 用一周的时间在网上阅读代码:
- 浏览器登录 bitbucket.org 搜索python
- 随便找一个项目,点进去
- 点击 source 标签,浏览目录和文件列表,直到看到以 .py 结尾的文件,setup.py不要看
- 阅读该代码,把功能记下来
- 看到有趣的符号或者奇怪的字符,记下来,日后研究
- 其他站点:github.com launchpad.net koders.com
47、
48、
第二部门:条件判断、循环、类和对象、代码测试、项目实现
逻辑关系和条件分支
49、 and 与;or 或;not 非;!= 不等于;==等于;>=大于等于;<=小于等于;True 真;False 假
50、 单if语句:if 语句下一行代码要4个空格的缩进(必须缩进不缩进会报错),如果满足if后紧跟的条件,就执行if的下一行代码,否则跳过该行代码。if 后紧跟的条件后是冒号,冒号后下一行
51、 if—elif—else 语句:首先判断if条件,如果满足条件执行if下一行跟的代码,后面elif和else的部分不会再判断,如果不满足if条件,才会继续往下判断
52、
53、 if 语句内部可以嵌套if语句
循环和列表
54、 列表就是一个按顺序存放东西的容器,列表中的元素用英文逗号分隔,整个列表用中括号包裹,可以将列表及里面的内容赋给一个变量,例如 count = [1,2,3,4]
55、 for循环:
56、
57、 range函数:range(start,stop[,step]) 从start开始,到stop结束,步长为step
58、 不使用for循环将一个变量赋值为range(0,5) count = list(range(0,5))
59、 append列表操作函数。将元素添加到列表中
60、 其他列表操作函数:
61、 while循环:一直循环直到条件为false 。尽量少用,检查不会死循环
62、 列表的每一个元素都有一个地址或者一个索引,索引从0开始。序数从1开始,减一就是基数,基数从0开始
分支和函数
63、 在很多类型的操作系统里,``exit(0)`` 可以中断某个程序,而其中的数字参数则用来表示程序是否是碰到错误而中断。 exit(1) 表示发生了错误,而 exit(0) 则表示程序是正常退出的。这和我们学的布尔逻辑 0==False 正好相反,不过你可以用不一样的数字表示不同的错误结果。比如你可以用 exit(100) 来表示另一种和 exit(2)` 或 exit(1) 不同的错误
64、 in和not in用于容器类型的成员判断,如if x in s,如果x是s的成员,将返回True,否则返回False.
65、 is和is not用于对象身份的判断,只有x和y是同一个对象时,x is y 返回True,否则返回False.
66、 判断用户输入的是不是数字:
67、
68、 还有一种方法可以判断汉字是不是数字:
69、
70、 还有一个函数可以判断是不是正整数:
71、
设计与调试
72、 if语句的规则:
1、 每一个if语句必须包含一个else
2、 如果这个else永远都不应该被执行到,因为它本身没有任何意义,那你必须在else语句后面使用一个叫die的函数,让他打印出错误信息并且死给你看,这和上一节的习题类似,这样你可以找到很多的错误
3、 if语句的嵌套不要超过2层,最好尽量保持一个if,elif,else组合就跟一个段落的句子组合一样,在这种组合的最前面和最后面留一个空行以作区分
4、 你的布尔测试应该很简单,如果他们很复杂的话,你需要将他们的运算事先放到一个变量里,并且为变量取一个好名字
73、 循环的规则
- 只有在循环永不停止时使用while循环,这意味着你可能永远都用不到。这条只有python中成立,其他的语言另当别论。
- 其他类型的循环都使用for循环,尤其是在循环的对象数量固定或者有限的情况下。
74、 调试(debug)的小技巧
- 不要使用debugger,debugger所作的相当于对病人的全身扫描。你并不会得到某方面的有用信息,而且你会发现它输出的信息态度,而且大部分没有用,或者只会让你更困惑
- 最好的调试程序的方法是使用print在各个你想要检查的关键环节将关键变量打印出来,从而检查那里是否有错
- 让程序一部分一部分的运行起来。不要等到一个很长的脚本写完后才去运行它,写一点,运行一点,再修改一点
75、 每一个程序员在开始一个新的大项目时,都会被非理性的恐怖影响到,为了避免这种恐惧,他们会拖延时间,到最后一事无成。我有时也会这样,每个人都会有这样的经历,避免这种情况的最好的方法是把自己要做的事情列出来,一次完成一样,开始做,先做一个小点的版本,扩充它让它变大,把自己要完成的事情一一列出来,然后逐个完成就可以了。