Skip to content

Commit 20bf7fa

Browse files
author
kangxiaoyu
committed
python代码练习
1 parent eb1fcec commit 20bf7fa

File tree

7 files changed

+234
-0
lines changed

7 files changed

+234
-0
lines changed

2017-04-20/advanced/advanced.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#!/bin/env python
2+
# -*- coding:utf-8 -*-i
3+
4+
L=['AA','FF','EE','RR','WW']
5+
r=[]
6+
7+
n=3
8+
for i in range(n):
9+
r.append(L[i])
10+
11+
#print f
12+
#切片操作 Slice 通过: 实现L[0:3]表示,从索引0开始,一直到索引3
13+
#为止,但不包含索引3,即索引0,1,2, 正好是3,个元素。
14+
print L
15+
print 'L[0:3]--',L[0:3] # 取索引为 0,1,2
16+
print 'L[:3]--',L[:3]
17+
print 'L[1:3]--',L[1:3]
18+
19+
print 'L[-1]--',L[-1]
20+
print 'L[-2:]--',L[-2:]
21+
22+
print 'L[-2:-1]--',L[-2:-1]
23+
24+
'''
25+
'''
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#!/bin/env python
2+
# -*- coding:utf-8 -*-i
3+
4+
L=['AA','FF','EE','RR','WW']
5+
r=[]
6+
7+
n=3
8+
for i in range(n):
9+
r.append(L[i])
10+
11+
#print f
12+
#切片操作 Slice 通过: 实现L[0:3]表示,从索引0开始,一直到索引3
13+
#为止,但不包含索引3,即索引0,1,2, 正好是3,个元素。
14+
print L
15+
print 'L[0:3]--',L[0:3] # 取索引为 0,1,2
16+
print 'L[:3]--',L[:3]
17+
print 'L[1:3]--',L[1:3]
18+
19+
print 'L[-1]--',L[-1]
20+
print 'L[-2:]--',L[-2:]
21+
22+
print 'L[-2:-1]--',L[-2:-1]
23+
24+
'''
25+
'''

2017-04-20/decorate/decorate.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
#!/bin/env python
2+
# -*- coding:utf-8 -*-
3+
import functools
4+
def now():
5+
print '2017-04-20'
6+
f = now
7+
f() #函数也是一个对象,函数对象可以赋值给变量,通过变量也能调用该函数
8+
9+
#函数对象有一个__name__属性,可以拿到函数的名字:双下划线
10+
11+
print now.__name__
12+
print f.__name__
13+
#本质上,decorator 就是一个返回函数的高阶函数
14+
def log(func):
15+
@functools.wraps(func) #将原始函数属性复制到wrapper中。
16+
def wrapper(*args,**kw):
17+
print "call %s()"%func.__name__
18+
return func(*args, **kw)
19+
return wrapper
20+
21+
#使用Python的@语法, 在每个函数上使用。
22+
23+
@log
24+
def test1():
25+
print "Hello python..."
26+
test1()
27+
28+
# equals test1 = log(test1)
29+
30+
#wrapper() 函数的参数定义是(*args,**kw),因此,wrapper()函数可以接受任意参数的调用,在wrapper()函数内,
31+
#首先打印日志, 再紧接着调用原始函数。
32+
33+
34+
#如果decorator 本身需要传入参数,那就需要编写一个返回decorator的高阶函数。
35+
36+
def log2(text):
37+
def decorator(func):
38+
@functools.wraps(func)
39+
def wrapper(*args,**kw):
40+
print '%s %s():' %(text, func.__name__)
41+
return func(*args,**kw)
42+
return wrapper
43+
return decorator
44+
45+
@log2("text------")
46+
def now2():
47+
print '2014-11-8'
48+
now2()
49+
print now2.__name__
50+
#原理解析 now = log2('execute')(now)
51+
52+
#我们来剖析上面的语句,首先执行log2('execute'),返回的是decorator函数,再调用返回的函数,参数是now
53+
#函数,返回值最终wrapper函数。
54+
#但是返回的函数, 已经变成了 wrapper

2017-04-20/dict/dictdemo.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#!/bin/env python
2+
# -*- coding:utf-8 -*-
3+
'''
4+
dict 是用空间换取时间的方法, key 必须是不可变对象
5+
6+
set 也是一组key的集合,但是不存储value在set中没有重复的key, 要创建set
7+
需要提供一个list作为输入集合。
8+
'''
9+
d={'Sean':22,'Mirs':55,'Tom':66}
10+
11+
print d['Mirs']
12+
d['Zming'] = 35
13+
print d
14+
15+
if 'Mirs' in d:
16+
print d['Mirs']
17+
18+
print d.get('Mits')
19+
print d.get('Mits',-1) #不存在时自己指定值。
20+
#pop(key)删除对应的key 对应的values也会从dict中删除
21+
d.pop('Mirs') #删除不存在的key时也会报错
22+
23+
s = set([1,1,2,3,3,3,3]) #重复元素会自动过滤。
24+
25+
print s
26+
s.add(9)
27+
s.remove(1)
28+
print s

2017-04-20/if_structure/ifdemo.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#!/bin/env python
2+
# -*- coding:utf-8 -*-
3+
#这里可以输入中文呀。
4+
age=23
5+
if age > 18:
6+
print 'your age is ',age
7+
print 'adult'
8+
elif age >6:
9+
print 'your age is ',age
10+
print 'teenager'
11+
else:
12+
print 'kid'
13+
14+
if True:
15+
print "i am True"

2017-04-20/loop_structure/loopdemo.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#!/bin/env python
2+
# -*- coding:utf-8 -*-
3+
4+
#测测能用中文吗
5+
6+
#声明一个列表
7+
8+
names = ['Sean','Mirs','Index']
9+
10+
for name in names:
11+
print name
12+
13+
sum = 0
14+
for x in range(101):
15+
sum = sum+x
16+
17+
print sum
18+
19+
sum =0
20+
n=99
21+
while n>0:
22+
sum = sum + n
23+
n = n - 2
24+
25+
print sum
26+
27+
#raw_input()读取的内容永远以字符串的形式返回,如果为int需要使用int('str')

2017-04-20/oops/oop1.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
#!/bin/env python
2+
# -*- coding:utf-8 -*-
3+
#这个可以有中文了呀
4+
5+
__author__ = 'Administrator'
6+
7+
class Student(object):
8+
def __init__(self,name,score):
9+
self.name = name
10+
self.score = score
11+
12+
def print_score(self):
13+
print('%s %s'%(self.name,self.score))
14+
15+
def get_grade(self):
16+
if self.score >= 90:
17+
return 'A'
18+
elif self.score >= 60:
19+
return 'B'
20+
else:
21+
return 'C'
22+
23+
bart = Student('Sean',33)
24+
25+
mirs = Student('mirs',90)
26+
27+
bart.print_score()
28+
print bart.get_grade()
29+
mirs.print_score()
30+
mirs.score = 30
31+
32+
print mirs.get_grade()
33+
#在创建实例的时候, 把一些我们认为必须的属性强制填写进去, 通过定议一个特殊的__init__方法,在
34+
#创建实例的时候, 就把name,score等属性绑上去。
35+
36+
#访问限制 属性前 双 下划线
37+
class User(object):
38+
def __init__(self,name):
39+
self.__name = name
40+
41+
def print_name(self):
42+
print "name is %s" %self.__name
43+
44+
def get_name(self):
45+
return self.__name
46+
47+
user = User("Tom")
48+
user.print_name()
49+
#print user.__name 不可以访问
50+
51+
print user.get_name() #通过get和set方法, 可以对参数做检查。
52+
53+
# 其实是可以访问的。
54+
55+
print user._User__name #但是强烈不建议你这样做
56+
#总的来说就是, Python 本身没有任何机制阻止你干坏事,一切全靠自觉。
57+
58+
#继承和多态。
59+
60+

0 commit comments

Comments
 (0)