python学习——阶段总结

1.解释型和编译型编程语言

  编译型:先把代码编译成机器码-->计算机寄存器取运行 :c

      先把代码编译成XXX-->计算机找虚拟机执行代码-->代码变成机器码交给计算机机去运行:c、java、c#

  解释型:边解释边执行:python

2. 位和字节的关系:

  8位1个字节

3.b、B、KB、MB、GB的关系:

  8b=1B、1024B=1KB。。。。

4.字符串和列表如何相互转换:

  列表转字符串:''.join(['xx','ff'])

  字符串转列表:list('xxxxx')/split

5.写代码实现字符串反转,如v = ‘oldboy’

  a. 反切:v[::-1]

  b.将字符串转换成列表使用reverse方法,在转换回字符串

6.python递归的最大层数

  官网:1000

7.python2 和python3的区别

  a.编码&字符串

    字符串

      py2:3种类型:unicode           v = u'root'  本质上用Unicode存储(万国码)

                str/bytes(它俩一样 ) v = 'root'  本质用字节存储

      py3:2种类型:str    v = 'root'  本质上用unicode存储(万国码)

               bytes    v = b'root'   本质上用字节存储

    编码

      py2:ascii  文件头可以修改:#-*- encoding:utf-8 -*-

      py3:utf-8  文件头可以修改:#-*- encoding:gbk -*-

      

  b.py2:经典类/新式类;新式类找继承关系采用深度优先

     py3:新式类(继承object):找继承关系采用c3算法

 

  c.范围

    py2:range(100):生成100个数,且显示/xrange(100)用一个创建一个数

    py3:   range(100)用一个创建一个数

  d.py2除法是底板除

   py3有小数

  e.输入

    py2:v1 = raw_input('请输入:')

    py3:v2 = input('请输入:')

  f.print:

    py2:print 'xx'

    py3:print(123)

8.用一行代码实现数值交换:

a = 1
b = 2
a,b = 2,1

 

9.比较:a =[1,2,3]和b = [(1),(2),(3)]以及c = [(1,)(2,)(3,)]的区别

  a == b ;c中是3个元组

  以后写元祖必须在后面加, 

    v = (1,2,3,)

  Django框架静态文件配置元组必须这么写

10.求结果:

v = [lambda:x for x in range(10)]
print(v) # 10个函数
print(v[0]) # 第一个函数
print(v[0]()) # 9(此时x=9)

 本题推导过程:

1.puthon中函数是一个作用域;
for i in range(10):
    pass
print(i)#9
报错
def func():
    for i in range(10):
        pass
func()
print(i) #9
2.lambda表达式
f1 = lambda x:x+1
func_list = []
for i in range(10):
    func_list.append(f1)
# i = 9
# 执行函数:内部调用函数代码
func_list[0](7)
3.列表生成式
val = [lambda x:x+i for i in range(10)]
ret = val[2](6)
print(ret)

 

 11.re的match和search的区别

  match是从头开始找

  search在里面能找到就可以

 12.如何实现“1,2,3”变成['1','2','3']

str = '1,2,3'
lst = str.split(',')
print(lst)

 

 13.msg = '123.33.sdhf3424.34fdg323.324'计算字符串中所有数字的和

  本题结果应为:123.33+3424.34+323.32

14.创建一个闭包函数需要满足哪几点?

  在内层函数中访问外层函数的局部变量

15.面向对象三大特性

  继承、封装、多态

16.列举面向对象所有成员并用代码表示

 

17.看代码写结果

class StarkConfig(object):
    def __init__(self,num):
        self.num = num
    def run(self):
        self()
    def __call__(self, *args, **kwargs):
        print(self.num)

class RoleConfig(StarkConfig):
    def __call__(self, *args, **kwargs):
        print(345)
    def __getitem__(self, item):
        return self.num[item]
v1 = RoleConfig('alex')
v2 = StarkConfig("wupeiqi")
print(v1[1])
print(v2[2])

print(v1[1])# v1对象后面有[]自动执行__getitem__方法,输出l
print(v2[2])# v2对象后面有[]自动执行__getitem__方法,输出p
结果

 

 

18.看代码写结果

class UserInfo(object):
    pass
class Department(object):
    pass
class StarkConfig(object):
    def __init__(self,num):
        self.num = num
    def changelist(self,request):
        print(self.num,request)
    def run(self):
        self.changelist(999)
class RoleConfig(StarkConfig):
    def changelist(self,request):
        print(666,self.num)
class AdminSite(object):
    def __init__(self):
        self._registry = {}
    def register(self,k,v):
        self._registry[k] = v(k)
site = AdminSite()
site.register(UserInfo,StarkConfig)
site.register(Department,RoleConfig)
for k,row in site._registry.items():
    row.run()
<class '__main__.UserInfo'> 999
666 <class '__main__.Department'>
结果

 

19.看代码写结果

class F3(object):
    def f1(self):
        ret = super().f1()
        print(ret)
        return 123
class F2(object):
    def f1(self):
        print('123')
class F1(F3,F2):
    pass

obj = F1()
obj.f1()
123
None
结果

 

20.如何将一个对象编程一个可迭代对象

  类里要写__iter__方法,并且返回迭代器iter([11,22,33,])

21.接口作用,约束派生类中要有那些方法

22.模拟cs游戏

  1.人物角色分为警察和匪徒两种,定义成两个类

  ·所有的警察角色都是police

  ·每个警察都有自己的名字,生命,武器,性别

  ·每个都可以开枪攻击敌人,且攻击目标不能是police

  ·所有匪徒的角色都是terrorist

  ·每个匪徒都有自己的名字,生命,武器,性别

  ·每个都可以开枪攻击敌人,且攻击目标不能是terrorist

  2.实例化一个警察,一个匪徒,警察攻击风土,匪徒掉血

  3.提取警察类和匪徒类相似之处定义成一个父类,使用继承的方式减少代码重复

class Base(object):
    def __init__(self,name,gender,life_value,weapon):
        self.name = name
        self.gender = gender
        self.life_value = life_value
        self.weapon = weapon
class Police(Base):

    def introduction(self):
        '''自我介绍'''
        tpl = '我是警察,我叫:%s' %(self.name)
        print(tpl)

    def attack(self,other):
        '''
        警察攻击匪徒,每次攻击自己生命值-0,匪徒生命值-100
        :param other: 匪徒对象
        '''
        if isinstance(other,Police):
            print('警察自己人,别打!')
            return
        print('警察%s 要打匪徒 %s' %(self.name,other.name,))
        self.life_value -= 0
        other.life_value -= 100

class Terrorist(Base):
    def introduction(self):
        '''自我介绍'''
        tpl = '我是匪徒,我叫%s' %(self.name)
        print(tpl)

    def attack(self,other):
        '''
        匪徒攻击警察,每次攻击自己生命值-10;警察生命值-100
        :param other: 警察对象
        '''
        if isinstance(other,Terrorist):
            print('匪徒自己人,别打!')
            return
        self.life_value -= 10
        other.life_value -= 100
p1 = Police('周杰伦','',1000,'')
p2 = Police('吴彦祖','',1000,'')
t1 = Terrorist('李杰','',1000,'')
t2 = Terrorist('无配齐','',1000,'')

p1.attack(p2)
t1.attack(t2)
p1.attack(t1)

 

posted @ 2019-08-29 16:45  陪伴is最长情的告白  阅读(346)  评论(0编辑  收藏  举报