新手区 初学 python 两周小结

ziluo · 2015年06月29日 · 最后由 王智强 回复于 2018年04月04日 · 2079 次阅读

最近在学习廖老师的 python 教程,python 教程原址:http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000

在学习过程中总结如下,如果有什么地方不正确的还请大家指正:

2015.6.15~2015.6.21

1. 输入输出

name=input('Please input your name: ')
print('hello,',name)
length=float(input('请输入正方形边长:'))
mj=length*length
print('正方形面积为:',mj)

2. 转义字符使用

print('I\'m \"OK\" !')

转义字符\可以转义很多字符,比如\n 表示换行,\t 表示制表符,字符\本身也要转义,所以\表示的字符就是\

print('I \'m learning\nPython.')
print('\\\n\\')

如果字符串内部有很多行,用\n 写在一行里不好阅读,为了简化,Python 允许用'''...'''的格式表示多行内容:

print('''line1
line2
line3''')

如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python 还允许用 r''表示''内部的字符串默认不转义:

print('\\\t\\')
print(r'\\\t\\')

2015.6.22~2015.6.28

1. 字符相关

最新的 python3 中,字符串以 Unicode 编码,支持多语言

1. 单个字符的编码,python 可以用 ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符

print(ord('b'))
print(ord('B'))
print(ord('中'))
print(chr(66))
print(chr(25991))

2. Python 直接输出字符的整数编码,以十六进制表示如下:

print(‘\u4e2d\u6587’)

3.Python 对 bytes 类型的数据自带 b 前缀表示,bytes 的每个字符都只占用一个字节

x=b’ABC’

4.以 Unicode 表示的 str 通过 encode()和 decode()进行编码和解码操作

print('ABC'.encode('ascii'))
print('中文'.encode('utf-8'))
print('中文'.encode('gb2312'))
print(b'ABC'.decode('ascii'))
print(b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8'))

注:

  • 1. 在 bytes 中,无法显示为 ascii 字符的字节,用\x## 显示
  • 2. 为了避免乱码问题,通常会在文件开头加上:
  • #!/usr/bin/env python3 (告诉 linux/os x 系统,这是一个 python 可执行程序,windows 会忽略这个注释)
  • #-- coding: utf-8 --(告诉 python 解释器,按照 utf-8 编码读取源代码)

5.获取 str 多少字符函数:len()。(注:如果换成 bytes,则计算字节数)

中文字经过 utf-8 编码后变为 3 个字节
例如:

print(len('中文'))    >>>2
print(len('中文'.encode('utf-8')))    >>>6

2.格式化

1. Python 中采用的格式化方式和 c 语言是一致的,用% 实现

print('Hello,%s' % 'world')
print('Hi, %s, you have $%d.' % ('lily',100))

当只有一个参数时,括号可以省略

2.格式化整数和浮点数还可以指定是否补 0 和整数与小数的位数:

print('%2d-%02d'%(3,1))
print('%.2f'%3.1415)

3.字符串中有% 号时使用 “%%” 来表示

练习

S1=72
S2=85
R=(S2/S1-1)*100
print(R)
print('%.1f %%'%R)

3.List 和 tuple

1.List 中可以使用-1 来取最后一个元素

    Classmate=[‘m’,’n’,’b’]
    print(Classmate[-1])
print(Classmate[-2])

2.直接删除 list 末尾的元素,用 pop()方法

>>>classmates.pop()   -->’b’
>>>classmates   -->[‘m’,’n’]

删除指定位置的元素直接用 pop(i)方法

>>>classmates.pop(1)  --->’n’
>>>classmates    -->[‘m’]

替换 list 中的值时,直接给对应的索引值进行赋值就可以了

>>>classmates[0]=’s’
>>>classmates  -->[‘s’]

Tuple(元组)

1.Tuple 和 list 非常相似,但是 tuple 中的值不可以改变,也没有 append(),insert()这样的方法,也无法赋值为另外的值。

注:要定义只有 1 个元素的 tuple 时,要加一个逗号,以便与数学公式中的小括号有所区别,消除歧义
例如:

>>>t=(1,)   -->(1,)
>>>t=(1)   -->1

4.循环

练习:

L=['a','b','c']
  for循环
for x in L:
    print('hello,%s' % x)
  while循环   
lt=len(L)
n=0
while n<lt:
    print('hello,%s' % L[n])
    n = n + 1
print(n)

5. dict 和 set

1. Python 内置了字典:dict 的支持,dict 全程 dictionary,在其他语言中也称为 map,使用键 - 值(key-value)存储,具有极快的查找速度。

例如:

>>>d ={‘Michael’:95,’Bob’:75,’Tracy’:85}
>>>d[‘Michael’]
95

####2. 还可以对 key 进行替换赋值操作,代码如下:

>>>d[‘Michael’]=90
>>>d[‘Michael’]
90

3.还可以对 key 进行添加操作,代码如下:

>>>d[‘Jack’]=88
>>>d[‘Jack’]
88

4. 为了避免 key 不存在的错误,有两种方法,一是通过 in 判断 key 是否存在

>>> ’Had’ in d
 False

二是通过 dict 提供的 get 方法,如果 key 不存在可以返回 none,或者自己指定的 value:

 >>>d.get(‘Thomas’)
>>> d.get(‘Thomas’,-1)
 -1

注意:返回 None 的时候 Python 的交互式命令行不显示结果

5.删除一个 key,使用 pop(key) 方法

>>>  d.pop(‘Bob’)
  75
 >>> d
  {‘Michael’:95,’Tracy’:85}

请务必注意,dict 内部存放的顺序和 key 放入的顺序是没有关系的。
-和 list 比较,dict 有以下几个特点:

  • 1. 查找和插入的速度极快,不会随着 key 的增加而增加;
  • 2. 需要占用大量的内存,内存浪费多 -而 list 相反:
  • 1. 查找和插入的时间随着元素的增加而增加;
  • 2. 占用空间小,浪费内存很少。 所以,dict 是用空间来换取时间的一种方法。 Dict 可以用在需要高速查找的很多地方,在 Python 代码中几乎无处不在,正确使用 dict 非常重要,需要牢记的第一条是 dict 的 key 必须是不可变对象。 这是因为 dict 根据 key 来计算 value 的存储位置,如果每次计算相同的 key 得出的结果不同,那 dict 内部就完全混乱了。这个通过 key 计算位置的算法成为哈希算法(Hash)。 要保证 hash 的正确性,作为 key 的对象就不能变。在 Python 中,字符串、整数等都是不可变的,因此,可以放心的作为 key。而 list 是可变的,就不能作为 key。

6.Set 和 dict 类似,也是一组 key 的集合,但是不存储 value。由于 key 不能重复,所以 set 中没有重复的 key。

创建 set:

>>>s=set([1,2,3])
>>>s
{1,2,3}

也可以直接初始化赋值

s={1,2,3}

注意:传入的参数 [1,2,3] 是一个 list,而显示的{1,2,3}只是告诉我们这个 set 内部有 1,2,3 这 3 个元素,显示的顺序也不表示 set 是有序的。

7.Set 通过 add(key)方法添加元素

>>>s.add(4)
>>>s
{1,2,3,4}

8. 通过 remove(key)方法可以删除元素:

>>>s.remove(4)
>>>s
{1,2,3}

9.Set 会自动过滤重复的元素

10.Set 可以看成数学意义上的无序和无重复元素的集合,因此,两个 set 可以做数学意义上的交集、并集等操作:

>>>s1=set([1,2,3])
>>>s2=set([2,3,4])
>>>s1&s2
{2,3}
>>>s1|s2
{1,2,3,4}

11.不含 list 的 tuple 可以做 key 或者 value

学习的有点慢,距离我 7 月底初步掌握 python 还有点距离,不过我会继续努力的,给自己打打气加油加油,哈哈

共收到 7 条回复 时间 点赞

你看看你发的帖子能看么?

#1 楼 @lihuazhang 好像有问题,我再编辑一下

#3 楼 @lihuazhang 不好意思哈新手,已修改

print('python')

我就试试 python 语法解释器是不是有代码高亮的...

8楼 已删除

妹子 90 后么

学 Python 坚持了吗?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册