Python学习笔记——基本语法
1.程序输入和输出
raw_input()内建函数
>>> user = raw_input('Enter your name:') Enter your name:root >>> print 'Your name is:',user Your name is: root
print语句
>>> myString = 'Hello World!' >>> print myString Hello World! >>> myString 'Hello World!'
>>> print type(u"你") #都能输出汉字,但是输出的类型不一样 <type 'unicode'> >>> print type("你") <type 'str'>
注意:在仅用变量名的时候,输出的字符串是用单引号括起来的
2.操作符
<1>两种除法——单斜杠/用于传统的除法,双斜杠//用作浮点除法(对结果进行四舍五入)
<2>乘方操作符——双星号**
<3>标准比较操作符——< <= > >= == != <>
<4>逻辑操作符——and or not
3.变量和赋值
Python是动态类型语言,不需要预先声明变量的类型
Python不支持C语言中的自增1和自减1操作符
4.数字
<1>有符号整型 长整型 布尔值
<2>浮点值
<3>复数
5.字符串
>>> myString = "Hello" >>> myString[0] 'H' >>> myString[2:4] 'll' >>> myString[1:] 'ello' >>> myString[:4] 'Hell' >>> myString[-1] 'o' >>> myString * 2 'HelloHello' >>> myString + myString 'HelloHello'
>>> myString = '''python ... is cool''' >>> myString 'python\nis cool' >>> print myString python is cool
6.条件语句
>>> if x>1: ... x -= 1 ... print '#%d' % (x) ... #2
条件表达式
>>> x = 3 >>> x = 1 if x<3 else 2 >>> x 2
else语句
#coding:utf-8 #!/usr/bin/env python 'maxFact.py -- 寻找一个数的最大约数' def showMaxFactor(num): count = num/2 while count > 1: if num % count == 0: print '%d 的最大约数是 %d' % (num,count) break count -= 1 else: print num,'没有最大公约数' for eachNum in range(10,21): showMaxFactor(eachNum)
7.循环语句
while循环
>>> x = 0 >>> while x<3: ... print x ... x += 1 ... 0 1 2 >>>
for循环和range()内建函数
>>> for x in ['A','B','C','D']: ... print x ... A B C D
>>> for x in ['A','B','C','D']: ... print x, ... A B C D
使用range()内建函数
>>> for x in range(3): #循环从0到2 ... print x, ... 0 1 2 >>>
>>> myString = 'ABCD' #循环字符串中的每一个字母 >>> for x in myString: ... print x, ... A B C D >>>
使用len()内建函数
>>> myString 'ABCD' >>> for i in range(len(myString)): ... print myString[i],i ... A 0 B 1 C 2 D 3
for语句用于序列类型
<1>通过序列项迭代
>>> List = ['a','b','c','d'] >>> for eachList in List: ... print eachList ... a b c d
<2>通过序列索引迭代
>>> for eachList in range(len(List)): ... print List[eachList] ... a b c d
<3>使用项和索引迭代
>>> for i,eachList in enumerate(List): ... print "%d %s" % (i,eachList) ... 0 a 1 b 2 c 3 d
列表解析
>>> square = [x ** 2 for x in range(4)] >>> for i in square: ... print i ... 0 1 4 9
>>> square = [x ** 2 for x in range(4) if not x % 2] #如果整除2 >>> for i in square: ... print i ... 0 4
8.迭代器(RandSeq和AnyIter)
1.RandSeq
#coding:utf-8 #!/usr/bin/env python 'randSeq.py -- 迭代' #从random模块里仅仅导入choice方法 from random import choice class RandSeq(object): def __init__(self,seq): self.data = seq; def __iter__(self): return self; def next(self): return choice(self.data) if __name__ == '__main__': for eachItem in RandSeq(('rock','paper','scisc')): print eachItem
9.文件和内建函数open()、file()
>>> filename = raw_input('Enter file name:') Enter file name:/home/common/software/hexo/source/_posts/book_2016.md >>> fobj = open(filename,'r') >>> for eachLine in fobj: ... print eachLine, ... >>> fobj.close()
文件写入
#coding:utf-8 #!/usr/bin/env python 'makeTextPyhton.py -- create text file' import os ls = os.linesep #输入文件名 fname = raw_input('Enter file name:') # 判断输入的文件名是否存在 while True: if os.path.exists(fname): print "错误:'%s' 已经存在" % fname else: break #按行输入文件的内容,以.为结束每一行,以单个.结束整个输入 all = [] print "\n请以.结束每一行内容\n" #循环 while True: entry = raw_input("输入每一行: ") if entry == ".": break else: all.append(entry) #把所有的内容写入到文件中 fobj = open(fname,'w') fobj.writelines(["%s%s" % (x,ls) for x in all]) fobj.close() print "完成!"
文件读取和显示
#coding:utf-8 #!/usr/bin/env python 'readTextPyhton.py -- read and display text file' #输入文件名 fname = raw_input('Enter file name:') print #尝试打开和显示文件 try: fobj = open(fname,'r') except IOError,e: print "*** file open error:",e else: #显示内容 for eachLine in fobj: print eachLine, fobj.close()
10.函数
>>> def addMe2Me(x): ... return (x+x) ... >>> addMe2Me(2.5) 5.0
标准类型内建函数
<1>type() —— 返回对象的类型
<2>cmp() —— 比较两个对象,返回两个对象的ASCII码的差
<3>str()、repr() —— 以字符串的方式获取对象的内容,str()适合于输出,repr()适合于使用eval()重新得到该对象,此外``不推荐使用
<4>type()、isinstance() —— 确认一个对象的类型
序列类型函数
<1>len() —— 返回字符串的字符数
<2>max()和min() —— 返回字符串中最大或者最小的字符(按照ASCII码值排列)
<3>enumerate() —— 用于for循环
>>> s = 'ABCDEF' >>> for i,t in enumerate(s): ... print i,t ... 0 A 1 B 2 C 3 D 4 E 5 F
<4>zip() —— 返回一个列表
>>> s,t = 'ABC','DEF' >>> zip(s,t) [('A', 'D'), ('B', 'E'), ('C', 'F')]
字符串类型函数
<1>raw_input() —— 用于输入
>>> userinput = raw_input("Enter user name:") Enter user name:XiaoMing >>> userinput 'XiaoMing'
<2>chr() —— 输入是0-255的整数,输出的是一个对应的字符
unichr() —— 输入是整数,返回的是一个对应的Unicode字符
ord() —— 输入是一个字符,返回是对应的ASCII码或者Unicode数值
<3>其他 —— 《Pyhton核心编程》P122
11.类
>>> class myClass(object): ... def _init_(self,nm='123'): ... self.name = nm ... print 'Constructor' ... def showname(self): ... print 'My name is',self.name ... >>> newClass = myClass() >>> newClass._init_() Constructor >>> newClass.showname() My name is 123
12.模块
>>> import sys >>> sys.stdout.write('Hello Word!\n') Hello Word! >>> sys.platform 'linux2' >>> sys.version '2.7.6 (default, Jun 22 2015, 18:00:18) \n[GCC 4.8.2]'
13.基本规则和特殊字符
<1># —— 注释
<2>\n —— 行分隔符
<3>\ —— 继续上一行
<4>; —— 将两个语句连接到一行中
<5>: —— 将代码块的头和体分开
14.Python对象
标准类型 | 其他内建类型 |
数字——Integer整型;Boolean布尔型;Long integer 长整型;Floating point number 浮点型;Complex number复数型 | 类型——type(1)——><type,'int'> 得到特定对象的类型信息 |
字符串——String | Null对象(None)——不支持任何运算,也没有任何内建方法 |
列表——List [] | 文件 |
元组——Tuple () | 集合/固定集合 |
字典——Dictionary | 函数/方法 |
模块 | |
类 |
列表
1.创建列表类型数据并给其赋值
>>> aList = [123,'abc',4.56,['inner','list'],7-9j] >>> aList [123, 'abc', 4.56, ['inner', 'list'], (7-9j)] >>> list('ABC') ['A', 'B', 'C']
2.访问列表中的值
>>> aList[0] 123 >>> aList[1:4] ['abc', 4.56, ['inner', 'list']] >>> aList[:3] [123, 'abc', 4.56] >>> aList[3][1] 'list'
3.如何更新列表
>>> aList[2]='ABC' >>> aList [123, 'abc', 'ABC', ['inner', 'list'], (7-9j)] >>> aList.append("Hello Word") >>> aList [123, 'abc', 'ABC', ['inner', 'list'], (7-9j), 'Hello Word']
4.删除列表中的元素或者列表本身
>>> del aList[1] >>> aList [123, 'ABC', ['inner', 'list'], (7-9j), 'Hello Word'] >>> aList.remove(123) >>> aList ['ABC', ['inner', 'list'], (7-9j), 'Hello Word']
>>> del aList
5.标准类型操作符
列表比较操作的时候,是两个列表的元素分别比较,直到有一方的元素胜出
6.序列类型操作符
<1>切片([]和[:])
>>> aList [123, 'abc', 'ABC', ['inner', 'list'], (7-9j), 'Hello Word'] >>> aList[-2:-1] [(7-9j)] >>> aList[2:-1] ['ABC', ['inner', 'list'], (7-9j)]
<2>成员关系操作(in,not in)
输出的是True或者False
<3>连接操作符(+)
>>> aList=[1,2,3,4] >>> bList=['A','B','C','D'] >>> cList = aList+bList >>> cList [1, 2, 3, 4, 'A', 'B', 'C', 'D']
<4>重复操作符(*)
>>> aList * 2 [1, 2, 3, 4, 1, 2, 3, 4]
7.标准类型函数cmp()
比较的规则P140
8.序列类型函数
<1>len()——对列表和元组返回的是列表或者元组的元素个数
<2>max()和min()——比较大小
<3>sorted()和reversed()——
>>> bList ['A', 'B', 'C', 'D'] >>> for t in reversed(bList): ... print t ... D C B A >>> bList=['D','C','B','A'] >>> sorted(bList) ['A', 'B', 'C', 'D']
<4>enumerate()和zip()——
['A', 'B', 'C', 'D'] >>> for i,t in enumerate(bList): ... print i,t ... 0 A 1 B 2 C 3 D >>> aList [1, 2, 3, 4] >>> bList ['A', 'B', 'C', 'D'] >>> for i,j in zip(aList,bList): ... print ('%s %s' % (i,j)).title() ... 1 A 2 B 3 C 4 D
<5>sum()
>>> aList [1, 2, 3, 4] >>> sum(aList) 10
<6>list()和tuple()——用于列表和元组之间的转换
9.列表类型的内建函数——P142
>>> dir(aList) ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] >>> aList [1, 2, 3, 4] >>> aList.append('A') >>> aList [1, 2, 3, 4, 'A'] >>> aList.count('A') 1 >>> aList.insert(1,1.5) >>> aList [1, 1.5, 2, 3, 4, 'A'] >>> 'A' in aList True >>> aList.index(1.5) 1 >>> aList.sort() >>> aList [1, 1.5, 2, 3, 4, 'A'] >>> aList.reverse() #没有返回值的函数会直接改变对象的值 >>> aList ['A', 4, 3, 2, 1.5, 1] >>> bList.extend(aList) >>> bList ['A', 'B', 'C', 'D', 'A', 4, 3, 2, 1.5, 1]
10.append和extend
元组
1.创建一个元组并给它赋值
>>> aTuple = (123,'abc',4.56,['inner','tuple'],7-9j) >>> aTuple (123, 'abc', 4.56, ['inner', 'tuple'], (7-9j)) >>> tuple('ABC') ('A', 'B', 'C')
2.访问元组中的值
>>> aTuple[0] 123 >>> aTuple[1:4] ('abc', 4.56, ['inner', 'tuple']) >>> aTuple[:3] (123, 'abc', 4.56) >>> aTuple[3][1] 'tuple'
3.更新元组
元组和字符串一样,是不可变类型,不能更新或者改变元组的元素
4.移除一个元组以及元组本身
删除一个单独的元组元素是不可能的,可以用del语句删除一个元组
5.元组操作符和内建函数
标准类型操作符、序列类型操作符和内建函数和列表的相似
6.元组的特殊特性
3个标准的不可变类型——数字、字符串和元组字符串
元组类型包含的可变对象是可以改变的,比如元组中包含一个列表
集合
有两种不同的类型——可变集合(set)和不可变集合(frozenset)
可变集合不是可哈希的,不能用作字典的键,也不能用做其他集合中的元素
不可变集合是有哈希值的,能被用做字典的键或者是作为集合中的一个成员
1.创建集合类型和给集合赋值
>>> s = set('cheeseshop') >>> s set(['c', 'e', 'h', 'o', 'p', 's']) >>> t = frozenset('bookshop') >>> t frozenset(['b', 'h', 'k', 'o', 'p', 's']) >>> type(s) <type 'set'> >>> type(t) <type 'frozenset'> >>> len(s) 6 >>> len(t) 6 >>> s == t False
2.访问集合中的值
>>> 'k' in s False >>> 'k' in t True >>> for i in s: ... print i ... c e h o p s
3.更新集合
>>> s.add('z') >>> s set(['c', 'e', 'h', 'o', 'p', 's', 'z']) >>> s.update('abc') >>> s set(['a', 'c', 'b', 'e', 'h', 'o', 'p', 's', 'z']) >>> s.remove('z') >>> s set(['a', 'c', 'b', 'e', 'h', 'o', 'p', 's']) >>> s -= set('abc') >>> s set(['e', 'h', 'o', 'p', 's'])
不可变集合不能修改
4.删除集合中的成员和集合
>>> del t
5.集合类型操作符
<1>标准类型操作符
1.成员关系(in,not in)
2.集合等价/不等价(==,!=)
3.子集/超集(<,<=,>,>=)
<2>集合类型操作符
1.联合(|)
>>> s|t set(['b', 'e', 'h', 'k', 'o', 'p', 's'])
2.交集(&)
>>> s&t set(['h', 's', 'o', 'p'])
3.差补/相对补集(-)
>>> s-t set(['e'])
4.对称差分(^),即(XOR)异或,只能是属于集合s或者集合t的成员,不能同时属于两个集合
>>> s^t set(['b', 'e', 'k'])
5.混合集合类型操作
类型不相同的时候,产生的结果类型和左操作数的类型相同
<3>集合类型操作符(仅适用于可变集合)
1.update()方法或者|=
>>> s|=t >>> s set(['b', 'e', 'h', 'k', 'o', 'p', 's'])
2.intersection_update()方法或者&=,保留两个集合重复的成员
>>> s set(['a', 'c', 'b', 'd']) >>> t set(['e', 'd', 'f']) >>> s&=t >>> s set(['d'])
3.difference_update()方法或者-=
4.symmetric_difference_update()方法或者^=,差分操作
6.内建函数
<1>标准类型函数——len()
<2>集合类型工厂函数——set()和frozenset()
7.集合类型内建方法——P184
字典
1.创建字典和给字典赋值,可以使用工厂方法dict()来创建字典,也可以使用fromkeys()来创建一个元素具有相同值的字典
>>> dict = {'name':'XiaoMing','age':20} >>> dict {'age': 20, 'name': 'XiaoMing'} >>> dict2 = dict((['x',1],['y',2])) >>> dict2 {'y': 2, 'x': 1} >>> dict2 = {}.fromkeys(('x','y'),1) >>> dict2 {'y': 1, 'x': 1
2.访问字典中的值
>>> dict = {'name':'XiaoMing','age':20} >>> dict {'age': 20, 'name': 'XiaoMing'} >>> for key in dict.keys(): ... print 'key=%s,value=%s' % (key,dict[key]) ... key=age,value=20 key=name,value=XiaoMing
>>> for key in dict: ... print 'key=%s,value=%s' % (key,dict[key]) ... key=age,value=20 key=name,value=XiaoMing
>>> dict['name'] 'XiaoMing'
>>> 'name' in dict True
3.更新字典
>>> dict['name'] = '123' >>> dict['name'] '123'
>>> del dict['name'] >>> dict {'age': 20}
>>> dict {'age': 20} >>> dict.pop('age') 20
4.映射类型相关的函数
<1>dict()——创建字典
<2>len()——返回键值对的数目
<3>hash()——可以判断某个对象是否可以做一个字典的值
5.映射类型内建方法
<1>keys()——返回一个列表,包含字典中所有的键
<2>values()——返回一个列表,包含字典中所有的值
<3>items()——返回一个包含所有(键,值)元组的列表
注意:返回的元素是没有顺序的,可以通过sorted()方法进行排序
<4>update()——将一个字典的内容添加到另外一个字典中
<5>clear()——删除字典中的所有条目
<6>copy()——返回一个字典的副本
<7>get()——根据键查询值,键不存在的话返回None
<8>setdefault()——检查字典中是否含有某个键,如果存在就返回这个值;不存在就赋值并返回这个值
15.操作符
比较类型操作符
<1>对象值的比较 < > <= >= == !=
<2>对象身份比较 is is not 比较是否指向同一个对象 注意:Python中整型对象和字符串对象是不可变对象
格式化操作符(%)
字符串模板——字符串Template对象
>>> from string import Template >>> s = Template("This is ${name} ${num}") >>> print s.substitute(name="Python",num=3) This is Python 3
16.其他
1.Non-ASCII character错误
源代码文件第一行添加
#coding:utf-8
2.Python终端自动补全
在~目录下添加一个文件,名字为.pythonstartup.py
#!/usr/bin/python # -*- coding: UTF-8 -*- import readline, rlcompleter; readline.parse_and_bind("tab: complete"); # 启用Tab补全 def igtk(): globals()['gtk'] = __import__('gtk'); globals()['thread'] = __import__('thread'); gtk.gdk.threads_init(); thread.start_new_thread(gtk.main, ()); pass;
然后在.bashrc中添加
export PYTHONSTARTUP=~/.pythonstartup.py
3.解析json
json.dumps : dict转成str,将字典转换为字符串
json.loads:str转成dict,将字符串转换为字典
参考:json.dumps和 json.loads 区别,如此简单
本文只发表于博客园和tonglin0325的博客,作者:tonglin0325,转载请注明原文链接:https://www.cnblogs.com/tonglin0325/p/5700938.html