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

 

posted @ 2017-09-15 11:57  Create-Heart  阅读(185)  评论(0编辑  收藏  举报