新手区 初学 python 两周小结

ziluo · June 29, 2015 · Last by 王智强 replied at April 04, 2018 · 2365 hits

最近在学习廖老师的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=bABC

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 条回复 时间 点赞

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

ziluo #2 · June 29, 2015 作者

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

ziluo #4 · June 29, 2015 作者

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

print('python')

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

6Floor has been deleted

妹子90后么

学Python 坚持了吗?

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up