19. 物理行是在编写程序时所 看见 的。逻辑行是Python 看见 的单个语句。Python假定每个 物 理行 对应一个 逻辑行
如果想要在一个物理行中使用多于一个逻辑行,那么需要使用分号;来特别地标明这种用法。分号表示一个逻辑行/语句的结束。如:
i=2;j=4;print(i);print(j) 这是一个物理行,它对应四个逻辑行
仅仅当逻辑行太长的时候,在多于一个物理行写一个逻辑行。这些都是为了尽可能避免使用分号,从而让代码更加易读。它被称为明确的行连接 如:
s = 'This is a string. \This continues the string.‘
print(s)
输出 :This is a string. This continues the string.
有一种暗示的假设,可以不需要使用反斜杠。这种情况出现在逻辑行中使用了圆括号、方括号或波形括号的时候。这被称为暗示的行连接。
*注:强烈建议坚持在每个物理行只写一句逻辑行。
逻辑行与物理行a = [100,
200]
print a
32. 字符串是不可变的
这意味着一旦创造了一个字符串,就不能再改变它了。虽然这看起来像是一件坏事,但实际上它不是。我们将会在后面的程序中看到为什么说它不是一个缺点。
级连字符串
如果把两个字符串按字面意义相邻放着,他们会被Python自动级连。例如,'What\'s' ‘ your name?'会 被自动转为"What's your name?“
转义字符串
例1:‘What\’s your name?‘ 即为 ‘What’s your name?’
字符串
33. 格式化字符串
str1 = "my name is %s,age is %d,record is %f"%(‘Tom',22,99.0),
输出 my name is Tom,age is 22,record is 99.000000
注:若限定浮点型的精度,占位符可以写成这样 %.nf,例如保留两位小数:%.2f
40. 列表知识扩充
把列表当做堆栈来使用,如:
stack = [1,2,3]
stack.append(4) #这时stack的内容为[1,2,3,4]
print(stack)
print(stack.pop()) #移除列表中最后一个元素
print(stack) #这时stack的值为[1,2,3]
把列表当做队列来使用,如:
from collections import deque
li = [1,2,3]
que = deque(li)
print(type(que)) #
que.append(4)
que.append(5)
print(que) #deque([1, 2, 3, 4, 5])
print(que.popleft()) #移除第一个元素1
print(que.popleft()) #移除第二个元素2
print(que)
列表推导式,如(将0到10的平方放入列表中):
seq1 = [x**2 for x in range(10)]
print(seq1) #打印 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
41. 元组特点
一个元组由数个逗号分隔的值组成
元组有很多用途。例如(x, y)坐标点
元组就像字符串,不可改变:不能给元组的一个独立的元素赋值
可以通过包含可变对象来创建元组,例如链表。
元组的创建
创建一个元组
t = 234,345,'Hello'
print(t) # (234, 345, 'Hello')
创建空元组 , t = ()
创建只包含一个元素的元组, t = 345,元组>>> lst = [1, 2, 3]
>>> t = tuple(lst)
>>> t
(1, 2, 3)
42. 元组封装和解封
语句t = 12345, 54321, ’hello!’ 是元组封装(sequence packing)的一个例子:值12345,54321 和’hello!’ 被封装进元组。其逆操作可能是这样>>> t = (1, 2, 3)
>>> x, y, z = t
>>> print x, y, z
1 2 3
43. 字典特点
字典以键值对的形式存在,以关键字为索引
字典中的关键字可以是任意不可变类型,通常用字符串或数值,不能用列表做关键字,因为链表可以用它们的append()和extend()方法,或者用切片、或者通过检索变量来即时改变
字典的主要操作是依据关键字来存储和析取值。也可以用del key 来删除
如果使用一个已经存在的关键字存储新的值或对象,以前为该关键字分配的值就会被遗忘。
试图析取从一个不存在的关键字中读取值会导致错误。
字典的基本操作
d = {‘ID’:1,‘name’:‘zhangsan’,‘age’:18,‘score’:90} #创建字典
print('name' in d) #判断字典d中是否存在name这个键,是返回True
print(d['name']) #根据键找到对应的值
del d['ID'] #删除字典d中,key为ID的键值对
print(d) # {'name': 'zhangsan', 'age': 18, 'score': 90}
li = list(d.keys()) #获取字典d中的key,并将它们转换成list
dsort = sorted(d.keys()) #给字典中的key排序
print(dsort)字典
44. 字典的update(anothordict)方法类似于合并,它把一个字典的关键字和值合并到另一个,盲目的覆盖相同键的值
字典的遍历
d = {'ID':1,'name':'zhangsan','age':18,'score':90}
for k,v in d.items():
print(k,v)
45. Python 还包含了一个数据类型—— set (集合) 。集合是一个无序不重复元素的集。基本功能包括关系测试和消除重复元素。集合对象还支持 union(联合),intersection(交),difference(差)和 sysmmetric difference(对称差集)等数学运算。
创建集合:
sets = {345,567,234,'Hello','Hello'} #如果集合中包含重复元素会自动过滤掉
print(sets)
创建空集合:
s = set();
注意不能写成 s = {} ,这是一个空的字典
* 注:集合和列表一样,也有集合推导式语法集合
46. 第四章 控制流If语句
For循环
While循环
47. If单分支
if condition:
相应操作……
if双分支
if condition:
相应操作……
else:
相应操作……
If多分支
if condition1:
相应操作……
elif condition2:
相应操作……
elif condition3:
相应操作……
else:
相应操作……
If分支
48. if例题
count = int(input('请输入成绩:'))
if count < 60:
print('不及格')
elif count >= 60 and count <=70:
print('及格')
elif count >70 and count <=80:
print('良好')
else:
print('优秀')
49. while语法
while condition:
相应操作……
else:
相应操作……
while例题:
c = 0
while(c <= 100):
print('Hello',c)
c = c + 1
else:
print('entry else')
print('end')
循环语句中的关键字
break 语句和 C 中的类似,用于跳出最近的一级 for 或 while 循环。
continue 语句是从 C 中借鉴来的,它表示循环继续执行下一次迭代
pass 语句什么也不做。它用于那些语法上必须要有什么语句,但程序什么也不做的场合
While循环
50. For循环完整格式
For循环原理:
for 语句在容器对象中调用 iter() 。 该函数返回一个定义了 next() 方法的迭代器对象,它在容器中逐一访问元素。没有后续的元素时, next() 抛出一个 StopIteration 异常通知 for 语句循环结束
For循环for in
51. For循环例题,0~10之间的质数和合数判断
def isPrime(a):
for i in range(int(a)):
for x in range(2,i):
if i % x == 0:
print(str(i) + ' is even')
break
else:
print(str(i) + ' is prime')
61. 常见格式化字符串函数
s = 'Hello World!'
a = str(s)
print(a) #输出 Hello World!
b = repr(s)
print(b) #输出 'Hello World!'
c = '12'.zfill(5) #使c占5位,它用于向数值的字符串表达左侧填充 0
print(c) #00012
Format的用法
方法 str.format() 的基本用法如下:
print('My name is {}, Hello {}'.format('Katrina','World')) #使用{}占位格式化输出
62. 使用{0}、{1}占位符:
print('My name is {0}, Hello {1}'.format('Katrina','World')) #使用{0}占位
print('My name is {1}, Hello {0}'.format('World','Katrina'))
使用关键字参数,可以通过参数名来引用值:
print('My name is {name}, Hello {say}'.format(name='Katrina',say='World'))#指定名占位
定位和关键字参数可以组合使用:
print('My name is {0}, Hello {say}'.format('Katrina',say='World'))#混合占位
也可以用 ‘**’ 标志将这个字典以关键字参数的方式传入:
table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
print('Jack: {Jack:d}; Sjoerd: {Sjoerd:d}; Dcab: {Dcab:d}'.format(**table))
63. 获得文件对象:
open(filePath, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) ,此函数返回一个file对象
参数解析:filePath,文件路径;mode:打开模式,默认为读模式,当然还有其他 模式,如:
'r' open for reading (default)
'w' open for writing, truncating the file first
'x' create a new file and open it for writing
'a' open for writing, appending to the end of the file if it exists
'b' binary mode
't' text mode (default)
'+' open a disk file for updating (reading and writing文件读写