1.变量 

2.流程控制 

3.序列、字典、集合 

4.文件  


1.变量


 程序中用来保存数据。定义时,不用指定变量类型,输出时使用print直接输出:

>>> say = 'hello Python'
>>> print("sunny said", say)
sunny said hello Python
#使用+连接字符串时,不带空格
>>> print("Hello" + "World")
HelloWorld


  数据类型:

>>> type(2**32)
<type 'int'>
>>> print(0x11)
17
>>> type(0x11)
<class 'int'>
# 瞎写的数字
>>> type(3.14159266546541651651351354313135146136269213)
<class 'float'>
>>> type(0.23j)
<class 'complex'>
>>> type(3.14 + 0.23j)
<class 'complex'>
>>> type(True)
<class 'bool'>
# 1表示真
>>> if 1:
...     print(True)
...
True
>>> if 0:
...     print(True)
...
>>> type("True")
<class 'str'>


1.1.输入/输出

  使用变量接收数据:

>>> name = input("Your name: ")
Your name: sunny
>>> print(name)
sunny
# 检查数据类型
>>> age = input('Your age:')
Your age:22
>>> type(age)
<class 'str'>
# 类型转换
>>> type(age)
<class 'str'>
>>> age = int(age)
>>> type(age)
<class 'int'>


1.2.多行输出

# 多行输出
>>> info = '''
... -------- info --------
... name: %s
... age: %d
... -------- end  --------
... ''' % (name, age)
>>>
>>> print(info)

-------- info --------
name: sunny
age: 21
-------- end  --------
# 多行输出2
name = 'sunny'
age = '22'
info = [age, name]
info = '''
name: {0}
age:  {1}
'''.format(name, age)

print(info)



2.流程控制


2.1.选择结构

>>> if income > 50000:
...     donate=0.2
... else:
...     donate=0.07
...


2.2.循环

  while循环

>>> while i < 10:
...     print(i)
...     i=i+3
... else:
...     print("Too many. How stupid it is!")

  file循环

import time

timeWait = 1.0
#for i in range(10):
for i in range(1,11):
    time.sleep(timeWait)
print('There are %s seconds passed.' % i)




3.序列


  序列,是有顺序的数据集合。集合中数据称为序列的元素。序列有六种:包括元组、列表、上边的字符串……。

  由于元组不能改变数据,创建的元组常常不为空;而列表可以增加、修改元素,程序中经常会建立一个空表。  序列中的元素是有固定顺序的,访问时可以依据位置来找到元素,位置索引从0开始。


3.1.列表

#定义列表
>>> list2
['china', 'smile', 8, 'india']
>>> list2[3]="print"
>>> list2
['china', 'smile', 8, 'print']


  列表属于序列,序列先进先出。

列表的方法
方法返回值
注释
append(object)
None
添加对象到列表末尾
clear()
None
删除所有元素
copy()
list
复制一份新的
count(value)
int
返回value的出现次数
del object

删除对象
extend(list)
None
把list并入
index(value[, start[, stop]])
int

返回找到的第一个value的索引

扩展用法,就是指定起始、结束位置……

insert(pos, val)

往某个位置插入值
len(object)

计算列表

pop([index])

item
去掉一个index对应的值并返回该值,默认为末尾的值
remove(value)
None
删除头一个value值
reverse()
None
反转
sort()
None
排序,默认按ASCII从小到大


# append()
>>> LL.append([])
>>> LL
['029', '010', '025', []
# copy()
>>> LL = L.copy()
>>> LL
['029', '010', '025']
>>> LLL = LL.copy()
>>> LLL[3][0]
'alibaba'
>>> LLL[3][0] = 'Baidu'
# 赋值的是一个链接地址
>>> LLL
['029', '010', '025', ['Baidu']]
>>> LL
['029', '010', '025', ['Baidu']]
# pop()
>>> list2.pop()
'web'
>>> list2.remove("css")
# 替换
>>> while "asan" in list2:
...  position_element = list2.index("asan")
...  list2[position_element] = "print"
#默认排序
>>> L.sort()
#反向排序
>>> L.sort(reverse = True)
# 取值
>>> L[2]
'025'
# 切片
>>> L = ['029', '010', '025']
>>> L[1:2]
['010']
# 遍历列表
>>> for i in LLL:
...     print(i)
...
029
010
025
['Baidu']


3.2.元组

#元组的定义
>>> tuple=("india", "usa", "japan", 331, 402)


  元组属于序列,不能变更内容,元组只能进行查询操作。

元组的方法
方法返回值
注释
count(value)

返回value的出现次数
index([start [, stop]])

返回首个索引值
>>> tuple2=("hello", "css", "web", "web")
>>> tuple2.count("web")
2
>>> tuple2.index("web")
2


3.3.字符串

  

方法
返回值
说明
capitalize()
string
首字母大写(非首字母小写)
center(width[, fillchar])string打印内边距为width,填充fillchar(默认‘空格’)
count(sub[, start[, end]])
int
统计字符的个数
find(sub[, start[, end]])
int
返回头一个子串的首个位置
isalpha()
bool存在,全为字母,返回真
isdecimal()
bool全为十进制,返回真
isdigit()
bool数字,返回真
isidentifier()
bool是合法文件名字符,返回真
islower()
bool全小写为真
isnumeric()
bool全为数字字符,返回真
isprintable()
bool全为可打印字符,返回真
isspace()
bool全空白符,返回真
istitle()
bool
isupper()
bool
全大写为真
lower()
string
转换小写
replace(old, new[ ,n])
string
替换
strip()
string
去掉两边的空白符
upper()
string
转换大写

  实例

# capitalize()
>>> str = 'zhaocaiBANK.com'
>>> str2 = str.capitalize()
>>> print(str2)
Zhaocaibank.com
>>> str = 'zhaocaiBANK.com is good.'
>>> str2 = str.capitalize()
>>> print(str2)
Zhaocaibank.com is good.
# find()
>>> s.find('U')
9
# center()
>>> s.center(33, '_')
'______________Server_____________'
# count()
print(str.count('a'))
print(str.count('a', 0, 6))
# isdecimal()   判断的是字符串
>>> s = '98798'
>>> s.isdecimal()
True


3.4.字典

  字典没有顺序,无序访问

字典方法
返回值
说明
get(k[, d])
v|d

pop(k[, d])
v|d
删除一个字典元素,键k存在返回k对应的value,否则返回d
values()
dict_values
返回“所有”存在的值
# get() 查询
>>> dic.get('002', 'none')
'tangerhu'
# pop() 删除
>>> print(dic.pop('001', 0))
zhangxueliang
>>> print(dic.pop('001', 0))
0
# values()
>>> dic.values()
dict_values(['tangerhu', 'yangyuting'])
# 增加/修改
>>> dic['004']  = 'zhangshifei'


3.4.集合

  

集合方法
返回值
说明
add()
none
给集合添加元素
pop()
element
删除集合中元素
# 定义一个集合
>>> s = {'洪七公', '郭靖', '欧阳锋'}
# add() 增加元素
>>> s.add('老顽童')
# pop() 删除元素
>>> s
{'老顽童', '郭靖', '洪七公', '欧阳锋'}
>>> s.pop()
'老顽童'
>>> s.pop()
'郭靖'
>>> s
{'洪七公', '欧阳锋'}

# 获取集合的长度
>>> len(s)
2
# 条件判断
>>> '郭靖' in s
False



4.文件


class file(object)

  file(name[, mode[, buffering]])

  文件类:file,打开一个文件。打开模式有‘r’(default)、‘w’、‘a’,表示‘只读’(默认)、‘只写’、‘追加’。使用‘a’、‘w’模式打开文件时,如果指定的文件名不存在就新建。 往模式中添加‘+’时表示“同时允许读、写”。 给定了缓冲参数时,0表示“无缓冲”、1表示“线性缓冲”、数字表示“缓冲大小”。

  打开文件的首选方法是使用内置函数open。

file类方法
方法
返回值
说明
close()
None关闭文件

flush()

None
清理缓存区(写模式时写入磁盘)
read([n])
字符串

返回n字节的字符串,read(n)

返回直到文件结尾,read()

遇到文件结束符时,返回“空字符串”

readable()
布尔
是否可读取
readline([n])
字符串(保留换行符)

readline()返回当前位置到行尾

readline(n)返回最大n字节的字符串

遇到文件结束符时,返回“空字符串”

readlines()
列表
把读取的文件内容以字符串列表形式返回
seek(offset[, whence])
None

改变当前位置

offset,偏移量是一个字节数

whence,取值为0(默认)、1、2;分别表示“文件起始位置”、“当前位置”、“文件末尾”

*不是所有文件都可以使用

seekable()
布尔

判断是否可变换位置

支持随机访问

tell()
整型(长整型)
当前位置
truncate([n])
None

截断文件(需要‘写’模式)

保留截取后的文件到当前位置(默认),或者到n字节处

直接把截取的内容(开头到n字节)写入

write(...)
None

写入文件

把“字符串”写入文件

writable()布尔
是否可写入
writelines(...)
None

写入文件

把“字符串序列”写入文件


4.1.例子

打开文件

>>> f = open('text.txt')
# 创建文件,并且指定编码格式
>>> f = open('newfile.txt', 'w', encoding='utf-8')

读文件:

  read([int])实例

#读取了file的所有内容
>>> f.read()
'1hello1\n2hello2\n3hello3'
>>> f.read(3)
'1he'
#返回值都是字符串

  readline([int])实例

#返回到行尾的字符串
>>> f.readline()
'1hello1\n'
>>> f.readline()
'2hello2\n'
#返回最大5字节
>>> f.readline(5)
'3hell'
>>> f.readline(5)
'o3'
#遇到EOF,返回空串
>>> f.readline(5)
''

  readlines([int])实例

#返回字符串列表
>>> f.readlines()
['1hello1\n', '2hello2\n', '3hello3']
# 遍历文件的每一行
>>> for line in f:
        print(line.strip())

切换位置

  seek、tell实例

#返回文件起始位置
>>> f.seek(0)
>>> f.tell()
0L
#移动两个字节
>>> f.read(2)
'1h'
>>> f.tell()
0L
#移动到下一行
>>> f.readline()
'ello1\n'
>>> f.tell()
7L
>>> f.read(2)
'2h'
>>> f.tell()
9L

#移动到文件末尾,不会溢出
>>> f.tell()
23L
>>> f.readline()
''
>>> f.tell()
23L
#从文件末尾读取7个字节
>>> f.seek(0, 2)
>>> f.tell()
23L
>>> f.seek(-7, 2)
>>> f.readline()
'3hello3'

写文件

  写入文件

# write
>>> f.write("1hello1\n2hello2\n3hello3")
>>> f.close()
>>> f = open('test', 'r')
>>> f.readlines()
['1hello1\n', '2hello2\n', '3hello3']
# writelines
>>> f = open('test', 'w')
>>> textStr = ['1hello1', '1hello2', '3hello']
>>> f.writelines(textStr)
>>> f.close()
>>> f = open('test', 'r')
>>> f.readlines()
['1hello11hello23hello']
#写入文件的所有内容在同一行

#需要手动添加换行符
>>> f = open('test', 'w')
>>> textStr = []
>>> textStr.append("1hello1\n")
>>> textStr.append("2hello2\n")
>>> textStr.append("3hello3\n")
>>> f.writelines(textStr)
>>> f.close()


  文件对象的属性

#关闭状态
>>> print f.closed
False
#文件编码格式
>>> print f.encoding
None
#打开模式
>>> print f.mode
a
#文件名
>>> print f.name
test


  打开的文件使用过后,在程序中不会自动释放。这样,一个程序执行时间很长,势必会占用大量内容。因此需要,使用close()方法释放文件对象。  上下文管理器可以在一定程度上避免忘记释放资源,原因在于上下文管理器像一个对象作用域似的。有点类似方法中的局部变量一样的概念。使用方法如下:

with open("fstab", "r+") as f:
    f.write("Hello python.\n")


4.2.with open

  打开的文件需要及时关闭,关闭时调用“close()”。为避免,忘记关闭,建议使用“with open”打开文件,这时文件会自动关闭。

with open('text.txt' ,'r') as f:
    for line in f:
        print(line.strip())

# 同时打开多个文件
with open('text1.txt' ,'r') as f1,
        \open('text2.txt' ,'r') as f2:
    for line in f:
        print(line.strip())





zero python.1_计算机系统