python选择题题目_python基础之测试题

一、python基础

1、 s = ' 123.33sdhf3424.34fdg323.324',计算字符串中所有数字的和。

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

答案:

1.1、如果结果为:123.33+3424.34+323.324,有以下几种解法:

(1)、使用"[\d.]+"匹配数字

importre

s= '123.33sdhf3424.34fdg323.324'pattern= re.compile("[\d.]+")

res=pattern.findall(s)#print(res)

num_list = [float(i) for i inres]print(num_list)

count=0for i innum_list:

count+=iprint(count

(2)、使用'\d+\.?\d+'匹配数字

s = '123.33sdhf3424.34fdg323.324'

importre

result= ""s= re.findall('\d+\.?\d+',s)for i ins:

result= "+".join(s)print("表达式:%s 的和是"%result) #123.33+3424.34+323.324

su =0for i in result.split("+"):

i=float(i)

su+=iprint(i) #323.324

print(su)

1.2、如果结果为:123.33+3424.34+323.32,有以下几种解法:

(1)、使用"(\d+\.\d{,2})"匹配数字

importre

s= '123.33sdhf3424.34fdg323.324'pattern= re.compile("(\d+\.\d{,2})")

res=pattern.findall(s)#print(res)

num_list = [float(i) for i inres]print(num_list)

count=0for i innum_list:

count+=iprint(count)

1.3、对正则匹配后的列表可以使用"+".join()将其合成为字符串,然后使用eval()执行

importre

s= '123.33sdhf3424.34fdg323.324'ret= re.findall('\d+\.?\d+',s)

ret= "+".join(ret)print(ret)

eval(ret)

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}}for k,v ind.items():if type(v) ==list:print(k)

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

答案:

d = {'k1':'v1','k2':[1,2,3],('k','3'):{1,2,3}}for k,v ind.items():if type(k) ==tuple:print(v)

(3) d[(‘k‘,‘3‘)]对应的value是一个什么数据类型

答案:set类型

8、如果不使用@wrapper装饰器,请在a()之前加入一句代码,达到相同的效果

defwrapper(func):def inner(*arg, **kwargs):

func(*arg, **kwargs)returninner

@wrapperdefa(arg):print(arg)

a(233)

答案:

defwrapper(func):def inner(*arg, **kwargs):

func(*arg, **kwargs)returninnerdefa(arg):print(arg)

a=wrapper(a)

a(123)

9、请处理文件7th_questions,输出所有以‘T‘开头的行。

答案:

with open("7th_questions", "r",encoding="utf-8") as f:for i inf.readlines():if i.startswith("T"):print(i)

11、默写10个字符串对象的内置方法,描述它的作用

a = "123"a.split()

a.startswith("1")

a.endswith("3")

a.strip()

a.upper()

a.lower()

a.isdigit()

a.find("1")

a.format()

a.encode("utf-8")

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

deff1():print('funcname is f1')deff2():print('funcname is f2')return 1

deff3(func1):

l1=func1()print('funcname is f3')returnl1print(f3(f2))

答案:

1、f3中传入f2作为参数,则f2()执行,打印“funcname isf2”,返回1,2、l1 =1,打印“funcname isf3”,返回l13、打印1

实际运行结果:

funcname isf2

funcnameisf31

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

答案:1、内部嵌套函数 ; 2、内部用到外部变量

14、将时间打印成一个2017/10/01 18:08:15的格式,将"2017-11-13 17:43:43"转换为结构化时间。

答案:

importtime

t= time.strftime("%Y/%m/%d %H:%M:%S")print(t)

t1= "2017-11-13 17:43:43"res= time.strptime(t1, "%Y-%m-%d %H:%M:%S")print(res)

15、用什么模块能知道文件夹存在不存在?怎么获取这个文件夹的大小?

答案:

使用os.path中的exists()方法判断文件夹是否存在。获取文件夹大小的方法是计算文件夹下的每个文件的大小并求和。实例代码如下:

importos

file_path=os.getcwd()

file_path= os.path.join(file_path, "images")

os.path.exists(file_path)

size=0for foldername, subfolders, filenames inos.walk(file_path):for filename infilenames:

path=os.path.join(foldername,filename)

size+=os.path.getsize(path)print(size)

16、请写出一个能够匹配手机好的正则语句

答案:

importre

pattern= re.compile("1(55|58|59|87)\d{8}")

res= pattern.search("15849467672")ifres:print(res.group())

17、有四个数:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?

答案:

(1)、使用for循环

count =0for i in range(1,5):for j in range(1,5):for z in range(1,5):if i ==j or i == z or j ==z:continuecount+= 1n= i*100+j*10+zprint(n)print("count:",count)

(2)、使用生成器

count =0defget_num():for i in range(1,5):for j in range(1,5):for z in range(1,5):if i ==j or i == z or j ==z:continue

yield i*100+j*10+zfor i inget_num():

count+= 1

print(i)print("count:",count)

二、面向对象

1、请简述类、对象、实例化、实例这些名词的含义

答案:

类: 类是对有相同属性和相似行为的一类事物的抽象。

对象: 是一个具有具体属性值的类的实例化.

实例化 :从一个抽象的类产生一个具体对象的过程.

实例:就是对象.

2、面向对象的三大特性是什么?

答案:

封装、继承、多态、

3.有一个类定义:

classPerson:def __init__(self,name,age):

self.name=name

self.age= age

(1)初始化10个不同的对象

答案:

p1 = Person("Jack",18)

p2= Person("Tom",15)

p3= Person("White",30)

p4= Person("Black",25)

(2)求最高age的对象的name

答案:

方法一

ContractedBlock.gif

ExpandedBlockStart.gif

classPerson:def __init__(self,name,age):

self.name=name

self.age=age

p1= Person("Jack",18)

p2= Person("Tom",15)

p3= Person("White",30)

p4= Person("Black",25)

p_list=[p1,p2,p3,p4]

p_dict={}for p inp_list:

p_dict[p]=p.age

res=max(p_dict.values())print(res)for k inp_dict:if k.age ==res:print("最高age的对象的name:",k.name)

View Code

方法二:使用内置函数max()

ContractedBlock.gif

ExpandedBlockStart.gif

classPerson:def __init__(self,name,age):

self.name=name

self.age=age

p1= Person("Jack",18)

p2= Person("Tom",15)

p3= Person("White",30)

p4= Person("Black",25)

p_list=[p1,p2,p3,p4]

res= max(p_list,key=lambdap:p.age)print(res.name)

View Code

4. 模拟cs游戏

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

所有的警察的角色都是police

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

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

所有的警察的角色都是terrorist

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

每个都可以开枪攻击敌人,切攻击目标不能是terrorist方式减少代码重复

(2) 实例化一个警察,一个匪徒,警察攻击匪徒,匪徒掉血

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

5、读代码

classBase:deff1(self):

self.f2()deff2(self):print(‘...‘)classFoo(Base):deff2(self):print(‘9999‘)

obj=Foo()

obj.f1()

(1)、面向对象中的self指的什么?

答案:self指的是实例化的对象

(2)、运行结果并简述原因

答案:打印出“9999”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值