python常见问题以及基础语法知识
一、编译方面
1、报错:
错误描述:
python编程时(测试环境 Python 2.7),遇到如下错误:
ERROR (UnicodeEncodeError): 'ascii' codec can't encode character u'\uff08' in position 9: ordinal not in range(128)
python在安装时,默认的编码是ascii,当程序中出现非ascii编码时,python的处理常常会报这样的错,python没办法处理非ascii编码的,此时需要自己设置将python的默认编码,一般设置为utf8的编码格式。
如下,代码开头处添加如下代码 import sys reload(sys) sys.setdefaultencoding('utf8')
二、基础语法知识
1、基本预算
(1)用内建函数 id()可以查看每个对象的内存地址,即身份;type()查询对象的类型;对象有类型,变量无类型;round()表示四舍五入;dir(module)
是一个非常有用的指令,可以通过它查看任何模块中所包含的工具。
(2)
>>> divmod(5,2) # 表示 5 除以 2,返回了商和余数 (2, 1)
(3)前两行必填
#!/usr/bin/env python 这一行是必须写的,它能够引导程序找到 Python 的解析器,也就是说,不管你这个文件保存在什么地方,这个程序都能执行,而不用制定 Python 的安装路径。 #coding:utf-8 这一行是告诉 Python,本程序采用的编码格式是 utf-8
```
注释
```
#注释2
(4)str(a)
实现将整数对象转换为字符串对象; repr()是一个函数,其实就是反引号的替代品,它能够把结果字符串转化为合法的 python 表达式。
print b + repr(a) #repr(a)与上面的类似 free1989
(5)切片
>>> lang 'study Python' #在前面“切”了若干的字符之后,再看一下该字符串,还是完整的。 >>> lang[2:9] 'udy pyt'
len():求序列长度 :连接 2 个序列 : 重复序列元素 in :判断元素是否存在于序列中 max() :返回最大值 min() :返回最小值 cmp(str1,str2) :比较 2 个序列值是否相同 通过下面的例子,将这几个基本操作在字符串
(6)tring.format()
的格式化方法,其中 {}
作为占位符。
>>> s1 = "I like {}".format("python") >>> s1 'I like python'
(7)"[sep]".join(list),join 拼接字符串;split()不输入任何参数,显示就是见到任何分割符号,就用其分割了。
>>> b 'www.itdiffer.com' >>> c = b.split(".") >>> c ['www', 'itdiffer', 'com'] >>> ".".join(c) 'www.itdiffer.com' >>> "*".join(c) 'www*itdiffer*com'
>>> name
['Albert', 'Ainstain']
>>> "".join(name) #将 list 中的元素连接起来,但是没有连接符,表示一个一个紧邻着
'AlbertAinstain'
>>> ".".join(name) #以英文的句点做为连接分隔符
'Albert.Ainstain'
>>> " ".join(name) #以空格做为连接的分隔符
'Albert Ainstain'
(8)list.remove(x)
中的参数是列表中元素,即删除某个元素;list.pop([i])
中的 i 是列表中元素的索引值,这个 i 用方括号包裹起来,意味着还可以不写任何索引值,如上面操作结果,就是删除列表的最后一个;
(9)
能够索引的,如 list/str,其中的元素可以重复可变的,如 list/dict,即其中的元素/键值对可以原地修改不可变的,如 str/int,即不能进行原地修改
无索引序列的,如 dict,即其中的元素(键值对)没有排列顺序
# set
有的可变,有的不可变;元素无次序,不可重复。
tuple 算是 list 和 str 的杂合,那么 set 则可以堪称是 list 和 dict 的杂合.
(10)range函数:
>>> range(9) #stop=9,别的都没有写,含义就是 range(0,9,1) [0, 1, 2, 3, 4, 5, 6, 7, 8] #从 0 开始,步长为 1,增加,直到小于 9 的那个数 >>> range(0,9) [0, 1, 2, 3, 4, 5, 6, 7, 8] >>> range(0,9,1) [0, 1, 2, 3, 4, 5, 6, 7, 8] >>> range(1,9) #start=1 [1, 2, 3, 4, 5, 6, 7, 8] >>> range(0,9,2) #step=2,每个元素等于 start+i*step, [0, 2, 4, 6, 8]
(11)文件读写
>>> with open("130.txt","a") as f: ... f.write("\nThis is about 'with...as...'") ... >>> with open("130.txt","r") as f: ... print f.read() ... learn python http://qiwsir.github.io qiwsir@gmail.com hello This is about 'with...as...'
(12)构造类
#!/usr/bin/env Python # coding=utf-8 __metaclass__ = type #新式类 class Person: #创建类 def __init__(self, name): #构造函数 self.name = name def getName(self): #类中的方法(函数) return self.name def color(self, color): print "%s is %s" % (self.name, color) girl = Person('wangguniang') #实例化 name = girl.getName() #调用方法(函数) print "the person's name is: ", name girl.color("white") #调用方法(函数) print "------" print girl.name #实例的属性
运行结果:
$ python 20701.py the person's name is: wangguniang wangguniang is white ------ wangguniang