1. 将浮点数四舍五入:round(1.7333)
2. 格式化字符:%s %d %r
%r和%s有什么不同? %r用来做debug比较好,因为它会显示变量的原始数据(raw data),而 其它的符号则是用来向用户显示输出的。记住:%r用作debug,%s用作显示。
使用了%r后转义序列都不灵了。因为%r打印出的是你写到代码里的原始字符串,其中会包含原始的转义字符。
3. 转义序列:
\t 横向跳到下一制表符位置
\r 回车,将当前位置移到本行开头
\n 换行(还有一种将字符串扩展到多行的方法是使用三引号""",可以在一组三引号之间放入任意多行的文字)
特殊的转义序列:双反斜杠\\ 这两个字符组合会打印出一个反斜杠来。
对单引号和双引号转义:
“I am 6'2\" tall.” # 用 \" 将字符串中的双引号转义 6‘2“
'I am 6\'2" tall.' # 用 \' 将字符串中的单引号转义 6’2”
4. 字符串要加引号;变量不加引号
5. 在print语句后面加个逗号,这样print就不会输出新行符而结束这一行跑到下一行去了。
print "How old are you?",
age = raw_input()
加逗号后,运行结果为在一行:How old are you? 27
不加逗号,运行结果为在两行:How old are you?
27
6. raw_input()和input()
raw_input() 用来获取控制台的输入,将所有输入作为字符串看待,返回字符串类型。
注意:input() 和 raw_input() 这两个函数均能接收字符串 ,但 raw_input() 直接读取控制台的输入(任何类型的输入它都可以接收)。而对于 input() ,它希望能够读取一个合法的 python 表达式,即你输入字符串的时候必须使用引号将它括起来,否则它会引发一个 SyntaxError 。input()在对待纯数字输入时具有自己的特性,它返回所输入的数字的类型(int, float)(比如:input(1 + 3)会返回int型的4)。
input()会把你输入的东西当做python代码进行处理,这么做会有安全问题。除非对 input() 有特别需要,否则一般情况下我们都是推荐使用 raw_input() 来与用户交互。
注意:python3 里 input() 默认接收到的是 str 类型。
x = int(raw_input()) 会把用户输入的字符串用int()转换成整数
raw_input()括号里可以放入提示信息 y = raw_input("Name?")
7. python程序员风格:每行不多于80个字符
8. pydoc
pydoc是python自带的模块,主要用于从python模块中自动生成文档,这些文档可以基于文本呈现,也可以生成web页面,还可以在服务器上以浏览器方式呈现。
Windows下:
D:\>python -m pydoc <modulename> # 比如说: python -m pydoc raw_input
-m参数:Python以脚本的方法运行模块
Linux/Unix下:
$ pydoc <modulename> # 比如说: pydoc raw_input
输入q退出pydoc
9. 我们把导入(import)进来的功能叫做模组(modules)。
from sys import argv
这句话的意思是从sys代码库里取出argv这个模组。
argv是“参数变量”,包含了你传递给python的参数。
from sys import argv
script, first, second, third = argv
print "The script is called:", script
print "Your first variable is:", first
print "Your second variable is:", second
print "Your third variable is:", third
第二个语句是将argv解包,将所有的参数依次赋予左边的变量名:script, first, second, third。
需用命令行执行,注意必须传递三个参数:
argv和raw_input()有什么不同?
不同点在于用户输入的时机。如果参数是在用户执行命令时就要输入,那就是argv;如果是在命令行参数是字符串。argv和raw_input()不能合起来用。
from os.path import exists
exists命令将文件名字符串作为参数,如果文件存在返回True,不存在返回False。
print "Does the output file exist? %r" % exists(to_file)
10. 读取文件
txt = open("文件名")
print txt.read()
从open获得的东西是一个叫做“file object”的东西,可以想象成一个磁带机或者DVD机。你可以随意访问它的任意位置,并且去读取这些内容,不过这个object本身并不是它的内容。这个“file object”本身也支持一些命令。它接受命令的方式是使用句点".",紧跟着你的命令,然后是类似open和raw_input一样的参数。
open对于文件的写入操作很谨慎,只有特别指定后才会进行写入操作。
如:target.open(filename, 'w')
'w'只是一个特殊字符串,用来表示文件的访问模式,除此还有‘r’表示读取,‘a’表示追加。
如果只写open(filename)那就使用'r'模式打开,这是open()函数的默认工作方式。
还有哪些修饰符可以用来控制文件访问?
最重要的是+修饰符,写法就是"w+','r+','a+',这样的话文件将以同时读写的方式打开,而对于文件位置的使用也有些不同。
11. 在命令行下输入python代码:
在命令行输入python然后敲回车,然后你就在python环境中了。退出输入quit()。
12. 文件相关的命令(方法/函数)
close-关闭文件。跟你编辑器的文件->保存..一个意思。
read-读取文件内容。可以把结果赋给一个变量。
readline-读取文本文件中的一行。通过扫描文件的每一个字节,直到找到一个\n为止,然后停止读取,并返回此前文件内容。
truncate-清空文件,请小心使用该命令。
write(stuff)-将stuff写入文件。需要接收一个字符串作为参数,从而将该字符串写入文件。
f.seek(0)-f在这里是一个变量名,指的是一个文件。Python里的文件可以想象成老式磁带机或者DVD播放机,它有一个用来读取数据的“磁头”,可以通过这个“磁头”来操作文件。每次运行f.seek(0),就回到了文件的开始,而运行f.readline()则会读取文件的一行,然后“磁头”移动到\n后面。seek()函数的处理对象是字节而非行,seek(0)只手转到文件的0byte,也就是第一个byte的位置。
13. windows下打印文件内容到屏幕上的命令是type。
14. len()函数:以数字形式返回你传递的字符串的长度。
15. def print_two(*args):
arg1, arg2 = args
print "arg1: %r, arg2: %r" % (arg1, arg2)
*argv中*的功能是告诉python让它把函数的所有参数都接受进来,然后放到名字叫args的列表去。和argv差不多,只不过前者是用在函数上面。没什么特殊情况一般不用。
16. x += y等同于x = x + y
17. 关闭编译器:
Windows下CTRL-Z
Linux下CTRL-D
18. 执行help(module name or function name) :可以得到模组帮助文档,指定义函数时放在"""之间的东西,被称作文档注解。
19. import ex和from ex import *:
前者需要重复输入ex.,后者不需要输入ex.,直接输入函数名即可。
20. 怎样判断一个数字处于某个值域中?
1 < x < 10 或者 x in range(1, 10)
21. 存放循环的结果最好的方法是使用列表list,它是一个按顺序存放东西的容器:
如何创建列表?
hairs = ['brown', 'blond', 'red']
eyes = ['brown', 'blue', 'green']
weight = [1, 2, 3, 4]
二维列表:[[1, 2, 3], [4, 5, 6]]
列表支持哪些操作?
常见列表对象操作方法:
list.append(x)
把一个元素添加到链表的结尾,相当于 a[len(a):] = [x] 。
list.extend(L)
将一个给定列表中的所有元素都添加到另一个列表中,相当于 a[len(a):] = L 。
list.insert(i, x)
在指定位置插入一个元素。第一个参数是准备插入到其前面的那个元素的索引,例如 a.insert(0, x) 会插入到整个链表之前,而 a.insert(len(a), x) 相当于 a.append(x) 。
list.remove(x)
删除链表中值为 x 的第一个元素。如果没有这样的元素,就会返回一个错误。
list.pop([i])
从链表的指定位置删除元素,并将其返回。如果没有指定索引, a.pop() 返回最后一个元素。元素随即从链表中被删除。(参数可选)
list.index(x)
返回链表中第一个值为 x 的元素的索引。如果没有匹配的元素就会返回一个错误。
list.count(x)
返回 x 在链表中出现的次数。
list.sort()
对链表中的元素就地进行排序。
list.reverse()
就地倒排链表中的元素。
例:
代码如下:
>>> a = [66.25, 333, 333, 1, 1234.5]
>>> print a.count(333), a.count(66.25), a.count(‘x')
2 1 0
>>> a.insert(2, -1)
>>> a.append(333)
>>> a
[66.25, 333, -1, 333, 1, 1234.5, 333]
>>> a.index(333)
1
>>> a.remove(333)
>>> a.index(333)
2
>>> a
[66.25, -1, 333, 1, 1234.5, 333]
>>> a.reverse()
>>> a
[333, 1234.5, 1, 333, -1, 66.25]
>>> a.sort()
>>> a
[-1, 1, 66.25, 333, 333, 1234.5]
列表索引:
从0开始
22. range()函数:
range(1, 5) #代表从1到5(不含5)[1, 2, 3, 4]
range(1, 5, 2) #代表从1到5, 间隔2(不包含5)[1, 3]
range(5) #代表从0到5(不含5)[0, 1, 2, 3, 4, 5]
23. while循环:一直执行直到False
while True可以创建一个无限循环
24. 中断程序:
from sys import exit
exit(0)
25. if语句的规则:
1. 每个if语句必须包含一个else。
2. 如果这个else永远都不应该被执行到,因为它本身没有任何意义,那你必须在else后面使用一个叫做die的函数,让它打印出错误信息并且死给你看。
3. if语句的嵌套不要超过2层,最好尽量保持只有1层。这意味着如果你在if里边又有了一个if,那你就需要把第二个if移到另一个函数里面。
4. 将if语句当做段落来对待,其中的每一个if,elif,else组合就跟一个段落的句子组合一样,在这种组合的最前面和最后面留一个空行以作区分。
5. 你的布尔测试应该很简单,如果它们很复杂的话,你需要将它们的运算事先放到一个变量里,并且为变量取一个好名字。
26. 循环的规则:
1. 只有在循环永不停止时使用“while循环”,这意味着你可能永远都用不到.
2. 其他类型的循环都使用“for”循环,尤其是在循环的对象数量固定或者有限的情况下。