python基础知识

变量
变量的作用:变量名,代指定变量值在内存某个地址保存的内容。
1,声明变量
语法:
变量名 = 变量值
#登录号两边的空格可有可无,依据个人喜好使用
例子:
>>> name = 'you name'
>>> name
'you name'
 
>>> age = 28
>>> age
28
 
变量的值为字符串时,必须使用引号(单引号,双引号都可以)。如果不使用引号,python会把变量值也当作一个变量名。
>>> you = binges
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'binges' is not defined
 
>>> you = 'binges'
>>> name = you
>>> name
'binges'
 
2,变量定义的规则:
  • 变量名只能是字母,数字和下划线的任意组合(例如:me_name,__name__,name3)
  • 变量的第一个字符不能是数字
  • 不能用关键字作为变量名(比如:as_integer_ratio', 'conjugate', 'fromhex', 'hex', 'imag', 'is_integer', 'real')
  • 变量名尽量简单易懂
 
 
 
 
 
数据类型
  • 数字
  • 布尔值
  • 字符串
  • 列表
  • 元组
  • 字典
 
1,数字
数字又分为:INT(整型),LONG(长整型),FLOAT(浮点型)
 
INT(整型):
整型就是整数,不带小数点的数字。
在32位机器上面,整数的取值范围为-2**31~2**31-1,即-2147483648~2147483647
在64位机器上面,整数的取值范围为-2**63~2**63-1,即-92233720368547758089223372036854775807
例子:
>>> age = 25
>>> type(age)
<class 'int'>
 
int(x) #转换x为整型
>>> int(50.01)
50
 
FLOAT(浮点型):
所谓浮点型就是带小数点的数字。
例子:
>>> age = 35.2
>>> type(age)
<class 'float'>
 
>>> age = 35.0
>>> type(age)
<class 'float'>
>>> age
35.0
 
float(x) #转换x为一个浮点数
>>> float(50)
50.0
 
LONG(长整型)

python可以处理非常大的整数:1000000000000000000L

普通整数不能大于2 147 483 647 (也不能小于-2 147 483 648),如果需要大数,可以使用长整型长整型数书写方法和普通整数一样,但是结尾有个L
例子:
>>> 10**16
10000000000000000L
 
 
2,布尔值
布尔值只有True(真,或者是数字1),False(假,或者是数字0)两种值,在python中,可以直接使用True,False
例如
>>> True
True
>>> False
False
>>> 2 > 3
False
>>> 2 < 3
True
 
 
 
3,字符串
字符串格式化:
例子:
name = input("name:")
age = int(input("age:"))
job = input("job:")
msg='''
Infomation of %s:
name:%s
age:%s
job:%s
'''%(name,name,age,job)
print(msg)

print("Infomation of %s: name:%s age:%s job:%s" %(name,name,age,job))
运行结果:
name:binges
age:28
job:IT
 
Infomation of binges:
    name:binges
    age:28
    job:IT
 
Infomation of binges: 
name:binges
age:28
job:IT
 
这是两种字符串格式化的方法。
 
 
4,列表

创建列表
sample_list = ['a',1,('a','b')]

Python 列表操作
sample_list = ['a','b',0,1,3]

得到列表中的某一个值
value_start = sample_list[0]
end_value = sample_list[-1]

删除列表的第一个值
del sample_list[0]

在列表中插入一个值
sample_list[0:0] = ['sample value']

得到列表的长度
list_length = len(sample_list)

列表遍历
for element in sample_list:
    print(element)
    
Python 列表高级操作/技巧

产生一个数值递增列表
num_inc_list = range(30)
#will return a list [0,1,2,...,29]

 
list的方法
L.append(var)   #追加元素
L.insert(index,var)
L.pop(var)      #返回最后一个元素,并从list中删除之
L.remove(var)   #删除第一次出现的该元素
L.count(var)    #该元素在列表中出现的个数
L.index(var)    #该元素的位置,无则抛异常 
L.extend(list)  #追加list,即合并list到L上
L.sort()        #排序
L.reverse()     #倒序
list 操作符:,+,*,关键字del
a[1:]       #片段操作符,用于子list的提取
[1,2]+[3,4] #为[1,2,3,4]。同extend()
[2]*4       #为[2,2,2,2]
del L[1]    #删除指定下标的元素
del L[1:3]  #删除指定下标范围的元素
list的复制
L1 = L      #L1为L的别名,用C来说就是指针地址相同,对L1操作即对L操作。函数参数就是这样传递的
L1 = L[:]   #L1为L的克隆,即另一个拷贝。
 
 
 
 
 
 
 
5,元组
元组是不可变的。元组使用小括号。
>>> i = (1,2,4,5)
>>> print(i)
(1, 2, 4, 5)
元组的操作:
Python 表达式结果描述
len((1, 2, 3)) 3 长度
(1, 2, 3) + (4, 5, 6) (1, 2, 3, 4, 5, 6) 串联
('Hi!',) * 4 ('Hi!', 'Hi!', 'Hi!', 'Hi!') 重复
3 in (1, 2, 3) True 成员
for x in (1, 2, 3): print x, 1 2 3 迭代
 
 
 
6,字典

dictionary: 字典
dict = {'ob1':'computer', 'ob2':'mouse', 'ob3':'printer'}
每一个元素是pair,包含key、value两部分。key是Integer或string类型,value 是任意类型。
键是唯一的,字典只认最后一个赋的键值。

dictionary的方法
D.get(key, 0)       #同dict[key],多了个没有则返回缺省值,0。[]没有则抛异常
D.has_key(key)      #有该键返回TRUE,否则FALSE
D.keys()            #返回字典键的列表

D.update(dict2)     #增加合并字典
D.popitem()         #得到一个pair,并从字典中删除它。已空则抛异常
D.clear()           #清空字典,同del dict
D.copy()            #拷贝字典
D.cmp(dict1,dict2)  #比较字典,(优先级为元素个数、键大小、键值大小)
                    #第一个大返回1,小返回-1,一样返回0
            
dictionary的复制
dict1 = dict        #别名
dict2=dict.copy()   #克隆,即另一个拷贝。

3、tuple:元组(即常量数组)
tuple = ('a', 'b', 'c', 'd', 'e')
可以用list的 [],:操作符提取元素。就是不能直接修改元素。

4、string:     字符串(即不能修改的字符list)
str = "Hello My friend"
字符串是一个整 体。如果你想直接修改字符串的某一部分,是不可能的。但我们能够读出字符串的某一部分。
子字符串的提取
str[:6]
字符串包含 判断操作符:in,not in
"He" in str
"she" not in str

string模块,还提供了很多方法,如
S.find(substring, [start [,end]]) #可指范围查找子串,返回索引值,否则返回-1
S.rfind(substring,[start [,end]]) #反向查找
S.index(substring,[start [,end]]) #同find,只是找不到产生ValueError异常
S.rindex(substring,[start [,end]])#同上反向查找
S.count(substring,[start [,end]]) #返回找到子串的个数

S.lowercase()
S.capitalize()      #首字母大写
S.lower()           #转小写
S.upper()           #转大写
S.swapcase()        #大小写互换

S.split(str, ' ')   #将string转list,以空格切分
S.join(list, ' ')   #将list转string,以空格连接

处理字符串的内置函数
len(str)                #串长度
cmp("my friend", str)   #字符串比较。第一个大,返回1
max('abcxyz')           #寻找字符串中最大的字符
min('abcxyz')           #寻找字符串中最小的字符

string的转换
            
oat(str) #变成浮点数,float("1e-1")  结果为0.1
int(str)        #变成整型,  int("12")  结果为12
int(str,base)   #变成base进制整型数,int("11",2) 结果为2
long(str)       #变成长整型,
long(str,base)  #变成base进制长整型,

字符串的格式化(注意其转义字符,大多如C语言的,略)
str_format % (参数列表) �#参数列表是以tuple的形式定义的,即不可运行中改变
>>>print ""%s's height is %dcm" % ("My brother", 180)
          #结果显示为 My brother's height is 180cm

list 和 tuple 的相互转化

tuple(ls) 
list(ls)



 
 
 
 
 
 
用户交互
input()
 
>>> name = input("请输入你的姓名:")
请输入你的姓名:binges
>>> name
'binges'
>>> name = input("请输入你的姓名:")
请输入你的姓名:宾格斯
>>> name
'宾格斯'
#这里可以直接写中文,不用考虑字符编码的问题,3.x版本就是这么神奇
 
注意3.X版本把input()的所有内容都当作字符串类型
>>> age = input("请输入你的年龄:")
请输入你的年龄:28
>>> age
'28'
>>> type(age)    #查看变量age值的类型
<class 'str'>
 
 
如果想让输入的数字当作整数处理
 
>>> age = int(input("请输入你的年领:"))
请输入你的年领:28
>>> age
28
>>> type(age)
<class 'int'>
 
 
 
 
 
 
 
 
 
 
 
 
条件语句和缩进
python对缩进的要求非常严格,同级代码缩进必须一致,一般缩进为4个空格或一个teb键,根据个人喜欢使用。
条件语句:
根据输入不同执行不同的代码
语法:
if 条件1:
    符合条件1执行这些代码
elif 条件2:
    符合条件2执行这些代码
else:
    上面都不符合执行这些代码
 
例子:
luchk_number = 28
int_put = int(input("请输入数字:"))
if int_put == luchk_number:
print("你猜对了 ")
elif int_put > luchk_number:
print("你猜大了 ")
else:
print("你猜小了 ")
执行结果:
请输入数字:27
你猜小了 
请输入数字:35
你猜大了 
请输入数字:28
你猜对了 
 
 
 
 
 
运算符
  • 算术运算符
  • 比较运算符
  • 赋值运算符
 
 
1,算术运算符
下面假设变量a为2,变量b为5
运算符
描述
实例
+
加:两个对象相加 a + b 结果为 7
-
减:前面的数减掉后面的数
a - b 结果为 -3
*
乘:两个数的相乘的结果
a * b 结果为 10
/
除:前面的数除以后面的数的商
b / a 结果为 2.5
%
取模:前面的数除以后面的数的余数
b % a 结果为 1
**
幂:前面数的多少次方
a ** b 结果为 32
//
取整除:前面的数除以后面的数的商的整数部分
b // a 结果为 2
 
2,比较运算符
下面假设变量a为2,变量b为5
所有比较运算符返回1(True)表示真,返回2(False)表示假
 
运算符
描述
实例
== 等于:比较对象是否相等
(a==b)返回False
!=
不等于:比较两个对象是否不相等
(a!=b)返回True
>
大于:返回x是否大于y
(a>b)返回False
<
小于:返回x是否小于y
(a<b)返回True
>=
大于等于:返回x是否大于等于y
(a>=b)返回False
<=
小于等于:返回x是否小于等于y
(a<=b)返回True
 
 
3,赋值运算符
运算符
描述
实例
=
简单的赋值运算符 c=a+b将a加bdeepin运算结果赋值为c
+=
加法赋值运算符
c+=a等效于c=c+a
-=
减法赋值运算符
c-=a等效于c=c-a
*=
乘法赋值运算符
c*=a等效于c=c*a
/=
除法赋值运算符
c/=a等效于c=c/a
%=
取模赋值运算符
c%=a等效于c=c%a
**=
幂赋值运算符
c**=a等效于c=c**a
//=
取整除赋值运算符
c//=a等效于c=c//a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
位运算符:
是把两个数字转化为二进制数进行计算
运算符
描述
&
按位与运算:一个为假即为假
|
按位或运算:一个为真即为真
^
按位异或运算:真真为假,假假为假,真假为真
~
按位取反:两个数相加的结果为 -1
<<
左移运算:向左移动x位,等同于乘以2的x次方
>>
右移运算:向右移动x位,等同于除于2的x次方
 
 
 
 
 
 
 
 
 
 
 
 
 
 
例子:
>>> a = 50
>>> b = 60
>>> a & b
48
>>> a | b
62
>>> a ^ b
14
>>> ~a
-51
>>> a<<2
200
>>> a>>2
12
 
 
 
逻辑运算符
运算符
描述
实例
and
布尔值“与”,两个都为真才是真
(a and b)为True
or
布尔值“或”,一个为真即为真
(a or b)为True
not
如果条件为真,则逻辑非运算符为假 not(a and b)为False
 
 
 

  • 关系运算符
in 包含
not in 包含
例子:
>>> list = [1,2,3,4,5]
>>> i = 3
>>> y = 6
>>> if i in list:
...     print('in')
...
in
>>> if y not in list:
...     print('not in')
...
not in
 
 
  • 验证运算符
is 和 is not
验证运算符,是判断两个对象是否为不同类型,如果两个对象是同类型则为True。
例子:
>>> a = 4
>>> b = 4
>>> a is b
True
>>> a is not  b
False
 
运算符的优先级:
运算符描述
lambda Lambda表达式
or 布尔“或”
and 布尔“与”
not x 布尔“非”
in,not in 成员测试
is,is not 同一性测试
<,<=,>,>=,!=,== 比较
| 按位或
^ 按位异或
& 按位与
<<,>> 移位
+,- 加法与减法
*,/,% 乘法、除法与取余
+x,-x 正负号
~x 按位翻转
** 指数
x.attribute 属性参考
x[index] 下标
x[index:index] 寻址段
f(arguments...) 函数调用
(experession,...) 绑定或元组显示
[expression,...] 列表显示
{key:datum,...} 字典显示
'expression,...' 字符串转换
 
 
 
字符编码:

1. 字符编码简介

1.1. ASCII

ASCII(American Standard Code for Information Interchange),是一种单字节的编码。计算机世界里一开始只有英文,而单字节可以表示256个不同的字符,可以表示所有的英文字符和许多的控制符号。不过ASCII只用到了其中的一半(x80以下),这也是MBCS得以实现的基础。

1.2. MBCS

然而计算机世界里很快就有了其他语言,单字节的ASCII已无法满足需求。后来每个语言就制定了一套自己的编码,由于单字节能表示的字符太少,而且同时也需要与ASCII编码保持兼容,所以这些编码纷纷使用了多字节来表示字符,如GBxxx、BIGxxx等等,他们的规则是,如果第一个字节是x80以下,则仍然表示ASCII字符;而如果是x80以上,则跟下一个字节一起(共两个字节)表示一个字符,然后跳过下一个字节,继续往下判断。

这里,IBM发明了一个叫Code Page的概念,将这些编码都收入囊中并分配页码,GBK是第936页,也就是CP936。所以,也可以使用CP936表示GBK。

MBCS(Multi-Byte Character Set)是这些编码的统称。目前为止大家都是用了双字节,所以有时候也叫做DBCS(Double-Byte Character Set)。必须明确的是,MBCS并不是某一种特定的编码,Windows里根据你设定的区域不同,MBCS指代不同的编码,而Linux里无法使用MBCS作为编码。在Windows中你看不到MBCS这几个字符,因为微软为了更加洋气,使用了ANSI来吓唬人,记事本的另存为对话框里编码ANSI就是MBCS。同时,在简体中文Windows默认的区域设定里,指代GBK。

1.3. Unicode

后来,有人开始觉得太多编码导致世界变得过于复杂了,让人脑袋疼,于是大家坐在一起拍脑袋想出来一个方法:所有语言的字符都用同一种字符集来表示,这就是Unicode。

最初的Unicode标准UCS-2使用两个字节表示一个字符,所以你常常可以听到Unicode使用两个字节表示一个字符的说法。但过了不久有人觉得256*256太少了,还是不够用,于是出现了UCS-4标准,它使用4个字节表示一个字符,不过我们用的最多的仍然是UCS-2。

UCS(Unicode Character Set)还仅仅是字符对应码位的一张表而已,比如”汉”这个字的码位是6C49。字符具体如何传输和储存则是由UTF(UCS Transformation Format)来负责。

一开始这事很简单,直接使用UCS的码位来保存,这就是UTF-16,比如,”汉”直接使用x6Cx49保存(UTF-16-BE),或是倒过来使用x49x6C保存(UTF-16-LE)。但用着用着美国人觉得自己吃了大亏,以前英文字母只需要一个字节就能保存了,现在大锅饭一吃变成了两个字节,空间消耗大了一倍……于是UTF-8横空出世。

UTF-8是一种很别扭的编码,具体表现在他是变长的,并且兼容ASCII,ASCII字符使用1字节表示。然而这里省了的必定是从别的地方抠出来的,你肯定也听说过UTF-8里中文字符使用3个字节来保存吧?4个字节保存的字符更是在泪奔……(具体UCS-2是怎么变成UTF-8的请自行搜索)

另外值得一提的是BOM(Byte Order Mark)。我们在储存文件时,文件使用的编码并没有保存,打开时则需要我们记住原先保存时使用的编码并使用这个编码打开,这样一来就产生了许多麻烦。(你可能想说记事本打开文件时并没有让选编码?不妨先打开记事本再使用文件 -> 打开看看)而UTF则引入了BOM来表示自身编码,如果一开始读入的几个字节是其中之一,则代表接下来要读取的文字使用的编码是相应的编码:

BOM_UTF8 ‘xefxbbxbf’
BOM_UTF16_LE ‘xffxfe’
BOM_UTF16_BE ‘xfexff’

并不是所有的编辑器都会写入BOM,但即使没有BOM,Unicode还是可以读取的,只是像MBCS的编码一样,需要另行指定具体的编码,否则解码将会失败。

 
以上内容摘自网络。
 
 
循环
for循环:
>>> for i in range(4):
...     print(i)
...
0
1
2
3
执行的语句多次的顺序
 
while循环:
>>> n = 0
>>> while n < 4 :
...     print(n)
...     n += 1
...
0
1
2
3
 
 
 
 
 
文件操作
f = open('/home/test.txt' ,'r')        以读的模式打开文件
f.close()                            关闭文件
readline()                            以行模式读取
 
 

关于open 模式:

w     以写方式打开,
a     以追加模式打开 (如果文件不存在则创建新文件)
r     以读写模式打开

w+    以写模式打开

a+    以追加和读的模式打开
r+    以读写模式打开,和追加的效果是一样的,但是如果文件不存在,则会报错
rb/wb/ab     以二进制读模式打开,如果需要跨平台,一定要加上b

 

文件其他方法:

f.moed    显示文件打开格式

f.flush()    把缓冲区的数据刷到硬盘

f.read()    把文件一次性读入内存

f.readline()    读一行内容

f.readlines() 把文件都读入内存,并且每行转成列表中的一个元素

f.tell()    显示程序光标所在该文件中的当前的位置

f.seek()    f.truncate(10)从文件开头截取10个字符,超出的都删除

f.writelines()    参数需要为一个列表,将一个列表中的每个元素都写入文件

f.xreadlinses()    以迭代的模式循环文件,在处理大文件时效率极高,只记录文件开头和结尾,每次循环一次,只读取一行。

 
小弟初学python,把自己的理解写为博客,所以博客内容仅供参考。 python之路使用python 3.X版本。 更多内容请关注:http://www.cnblogs.com/binges/
原文地址:https://www.cnblogs.com/binges/p/5095810.html