python笔记(面向对象和之前的测试题)

往期作业:
1.文件操作有哪些模式?请简述各模式的作用?
r w a rb wb r+ ab
2.s=‘he11o,wox1d!‘请使用 strip方法去掉字符串两端的’‘号
s.strip(’
’)
3.用户输入一个任意数字n,求1-n之间所有数字中的奇数
for i in range(1,n,2)
4.s= ‘hskakhlkshfkskjakf’,请去除s字符串中重复的字母
set(s)(会打乱顺序)
5.a = 10
b = 20
def test5(a,b):
print(a,b)
c= test5(b,a)
print©
上述代码中,打印出来的值a,b,c分别是什么?为什么?
a = 20,b = 10,c = None
6.s=‘123.33sdhf3424.34fdg323.324’,计算字符串中所有数字的和
本题结果应为:123.33+3424.34+323.324
(1)\d+.?\d{2}(d{2}:保留两位小数) (2)\d+.?\d*(全部保留)
第一种解法:

import re
s = '123.33sdhf3424.34fdg323.324'
num = re.findall('\d+\.?\d*',s)
num = [float(i) for i in num]
print(sum(num))

第二种解法:

import re
s = '123.33sdhf3424.34fdg323.324'
num = re.findall('\d+\.?\d*',s)
num = '+'.join(num)
print(num)
print(eval(num))

7.d={‘k1’:‘v1’,‘k2’:[1,2,3],(‘k’,‘3’):{1,2,3}}
请用程序实现:
1)输出上述字典中 value为列表的key

d={'k1':'v1','k2':[1,2,3],('k','3'):{1,2,3}}
 ret = [k for k in d if type(d[k]) is list]
 print(ret)

2)如果字典中的key是一个元组,请输出对应的 value值。

d={'k1':'v1','k2':[1,2,3],('k','3'):{1,2,3}}
ret = [d[k] for k in d if type(k) is tuple]
print(ret)

3)d[(‘k’,‘3’)]对应的 value是一个什么数据类型
集合
8.如果不使用@ wrapper装饰器,请在a()之前加入一句代码,达到相同的效果

def wrapper(func):
    def inner(*arg,**karg):
        print(123)
        func(*arg,**karg)
    return inner
@wrapper  #@wrapper == a = wrapper(a)
def a(arg):
    print(arg)
a('nihao')

9.请处理文件7thquestions,输出所有以’T’开头的行

with open('7thquestions') as f:
    for i in f:
        if i.startswith('T'):
            print(i)

10.读登陆文件夹中的代码,请为这段代码画流程图
11默写10个字符串对象的内置方法,描述它的作用

12.有如下代码,写出调用的顺序以及结果

def f1():
    print('func is func1')
def f2():
    print('func is func2')
    return 1
def f3(func1):
    l1 = func1()
    print('func is func3')
    return l1
print(f3(f2))

输出结果:

func is func2
func is func3
1

13.创建一个闭包函数需要满足哪几点?
内部嵌套函数,内部调用外部变量

14.将时间打印出成一个2017/10/0118:08:15的格式
将"2017-11-18"17:43:43″转换为结构化时间
15.(1).用什么模块能知道文件夹存不存在?

import os
os.path.isdir()

(2).怎么获取这个文件夹的大小?
循环文件夹里所有的大小,然后把大小加起来
16.请写出一个能够匹配手机号的正则语句
1[345678][\d]{9}
17.有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?(编程题)

cnt = 0
for i in range(1,5):
    for j in range(1,5):
        for k in range(1,5):
            if i == j or i == k or j == k:
                continue
            cnt += 1
            print(cnt,[i,j,k])

二:面向对象
1.请简述类、对象、实例化、实例这些名词的含义
2.面向对象的三大特性是什么?
封装,多态,继承
3.有一个类定义:

class Persondef:
    def init(self,name,age):
        self.name = name
        self.age  = age

(1)初始化10个不同的对象
(2)求最高age的对象的name

  obj = max(obj_list,key = lambda obj : obj.age)
  print(obj.name)

4.模拟cs游戏
(1)人物角色分为警察和匪徒两种,定义成两个类
所有的警察的角色都是 police
每个警察都有自己独有名字,生命值,武器,性别
每个都可以开枪攻击敌人,切攻击目标不能是 police

所有的警察的角色都是 terrorist每个匪徒都有自己独有名字,生命值,武器,性别
每个都可以 开枪攻击敌人,切攻击目标不能是 terrorist

(2)实例化一个警察,一个匪徒,警察攻击匪徒,匪徒掉血(
(3)提取警察类和匪徒类相似之处 定义成一个父类,使用继承的方式减少代码重复

猜你喜欢

转载自blog.csdn.net/qq_41433183/article/details/84451787