一次上机试题(面向对象)



  1 1.文件操作有哪些模式?请简述各模式的作用
  2 r:读, 默认文件打开就是以r模式,这个文件前提要存在不然报错。
  3 w:写,文件不存在,会自动创建,存在话,就覆盖写。
  4 a:追加,文件末尾追加写入内容。
  5 r+:可读也可写。
  6 w+:可写,,不过写是覆盖的写‘
  7 a+,追加写
  8
  9 2.s = ‘**hello,world!**‘请使用strip方法去掉字符串两端的‘*‘号
 10 s = ‘**hello,world!**‘
 11 s = s.strip(‘*‘)
 12 print(s)
 13
 14 3.用户输入一个任意数字n,求1-n之间所有数字中的奇数
 15
 16 while True:
 17     num_input = input(‘请输入数字:‘).strip()
 18     if num_input.isdigit() and int(num_input) != 0:
 19         num_input = int(num_input)
 20         for num in range(1, num_input + 1):
 21             if num % 2 == 1:
 22                 print(num)  # 显示奇数
 23
 24             else:
 25                 continue
 26     else:
 27         print("输入非法,请重新录入")
 28         continue
 29
 30
 31 4.s = ‘hskakhlkshfkskjakf‘,请去除s字符串中重复的字母
 32 s = ‘hskakhlkshfkskjakf‘
 33 s_new = []
 34 for api in s.strip():
 35     if api in s_new:
 36         continue
 37     else:
 38         s_new.append(api)
 39         s = "".join(s_new)
 40 print(s)
 41
 42 5.a=10
 43   b=20
 44   def test5(a,b):
 45      print(a,b)
 46   c = test5(b,a)
 47   print(c)
 48 b=20
 49
 50 def test5(a,b):
 51
 52     print(a,b)
 53 c = test5(b,a)
 54 print(c)
 55   上述代码中,打印出来的值a,b,c分别是什么?为什么?
 56 报错,c=test5(b,a),调用test5,程序的内容加载到内存,,,从事例看,是位置传值 ,实参b-->a,实参a--->b,c是函数的结果
 57 b是直接找到在函数里找不到,
 58 就找外面找到了b=20,,b赋值给形参a,  ,所以a会有值
 59 同理,,由于实参a没定义,找不到,没法给b值,所以直接报错,并结束下面代码的运行,print(a,b)不会被执行
 60 同理,c是在是全局,有定义,由于函数定义中没有return,所以c是none,
 61 总结:实参a没定义,报错,中止函数体内容被执行,,所以b,c没被输出
 62
 63
 64 6.s = ‘123.33sdhf3424.34fdg323.324‘,计算字符串中所有数字的和
 65 s = ‘123.33sdhf3424.34fdg323.324‘
 66 import re
 67 result  = ""
 68 s = re.findall(‘\d+\.?\d+‘,s)
 69 for i in s:
 70     result = "+".join(s)
 71 print("表达式:%s 的和是"%result) #123.33+3424.34+323.324
 72 su = 0
 73 for i in result.split("+"):
 74     i = float(i)
 75     su += i
 76 print(i) #323.324
 77
 78   本题结果应为:123.33+3424.34+323.32
 79 7.d={‘k1‘:‘v1‘,‘k2‘:[1,2,3],(‘k‘,‘3‘):{1,2,3}}
 80   请用程序实现:
 81   1)输出上述字典中value为列表的key
 82   2)如果字典中的key是一个元祖,请输出对应的value值。
 83   3)d[(‘k‘,‘3‘)]对应的value是一个什么数据类型
 84 d={‘k1‘:‘v1‘,‘k2‘:[1,2,3],(‘k‘,‘3‘):{1,2,3}}
 85 for key,value_re in d.items():
 86     if type(value_re) == list:
 87         print(key)#k2
 88     elif type(key) == tuple:
 89         print(d[key]) #{1, 2, 3}
 90         ty = {"<class ‘list‘>": "list", "<class ‘dict‘>": "dict", "<class ‘set‘>": "set"}
 91         for i  in ty.keys():
 92             if i == str(type(d[key])):
 93                 print(ty[i]) #set
 94
 95 8.如果不使用@wrapper装饰器,请在a()之前加入一句代码,达到相同的效果
 96 def wrapper(func):
 97     def inner(*arg, **kwargs):
 98         func(*arg, **kwargs)
 99     return inner
100
101 @wrapper
102 def a(arg):
103     print(arg)
104
105 a()
106
107 def wrapper(func):
108     def inner(*arg, **kwargs):
109         func(*arg, **kwargs)
110     return inner
111 # @wrapper
112 def a(arg):
113     print(arg)
114
115 a(1)
116
117 9.请处理文件7th_questions,输出所有以‘T‘开头的行
118 with open ("7th_questions",‘r‘,encoding=‘utf-8‘) as f:
119     for line in f:
120         if line.startswith(‘T‘):
121             print(line.strip())
122         else:
123             continue
124
125 10.读代码,请为这段代码画流程图
126
127 11 默写字符串对象的内置方法,越多越好
128 plist = dir(str)
129 s = ""
130 p = []
131 for i in plist:
132     if i.startswith("__"):
133         p.append(i)
134         s = ",".join(p)
135
136     else:
137         continue
138 print(s )
139 __add__,__class__,__contains__,__delattr__,__dir__,__doc__,__eq__,__format__
140 ,__ge__,__getattribute__,__getitem__,__getnewargs__,__gt__,__hash__,__init__,
141 __iter__,__le__,__len__,__lt__,__mod__,__mul__,__ne__,__new__,__reduce__,__reduce_ex__,
142 __repr__,__rmod__,__rmul__,__setattr__,__sizeof__,__str__,__subclasshook__
143
144
145 二 面向对象
146
147 1.请简述类、对象、实例化、实例这些名词的含义:
148 类是一组有着相似特征或者技能的对象集合
149 对象:从类中实例化出来的
150 实例化:产生一个从类中产生一个对象就叫实例化(p = classname.()
151 p 就叫一个classname实例/对象
152 2.面向对象的三大特性是什么?
153 封装,继承,多态
154 3.什么是方法?类中可以定义哪几种方法?
155 定义具有有着相同技能、功能叫方法,可以定义构造方法,普通方法,非绑定方法,调用内置方法
156 4.什么是属性?类中可以定义哪几种属性?
157 有着相同特征叫属性,定义:私有属性,装饰属性
158 5.请简述类方法和静态方法有哪些区别?
159 类方法:可以绑定到任何从类中实例化出来的对象身上,,并且它的第一个参数是self,实例化出来的对象引用被当作第一
160 参数传给self
161 静态方法:不需要给参数,调用方式直接是类名.静态方法名() ,也可以是对象调用 对象名.静态方法名()
162 6.请简述新式类和经典类的区别?
163 py2中,没有继承object都是经典类,尝试优先
164 py3中,所有类都叫新式类,广度优先
165 7.有一个类定义:
166     class Person:
167         def __init__(self,name,age):
168             self.name = name
169             self.age = age
170
171     1)初始化10个不同的对象
172     2)求最高age的对象的name
173 import sys
174 class Person:
175     def __init__(self,name,age):
176         self.name = name
177         self.age = age
178 dic1 = {}
179 l = []
180 for i in range(1,11):
181     t = "p%s"%i
182     t = Person("name%s"%i,i)
183     dic1[t.name] = i
184     l.append(i)
185 if t.age == max(l):
186     print(t.name)
187
188
189 8. 模拟cs游戏
190 人物角色分为警察和匪徒两种,定义成两个类
191 class public_people:
192     def __init__(self,name,sex,livelife,wuqi):
193         self.name = name
194         self.wuqi = wuqi
195         self.sex = sex
196         self.livelife = livelife #生命力
197 class police(public_people):
198     acctrvalue = 800  #攻击力
199     def __init__(self,name,sex,livelife,wuqi):
200         super().__init__(name,sex,livelife,wuqi)
201
202     def attrk (self,tr_obj):
203         tr_obj.livelife -= self.acctrvalue
204         return  tr_obj.acctrvalue
205 class terrorist(public_people):
206     acctrvalue = 300
207     def __init__(self,name,sex,livelife,wuqi):
208         super().__init__(name,sex,livelife,wuqi)
209     def attrk(self,pol_obj):
210         pol_obj.livelife -= self.acctrvalue
211         return  pol_obj.livelife
212 p1 = police(‘name1‘,‘male‘,1000,‘dao‘)
213 t1 = terrorist(‘t1‘,‘male‘,1000,‘dao‘)
214 p1.attrk(t1)
215 print(t1.livelife,p1.name)  #200 name1
216 t1.attrk(p1)
217 print(p1.livelife,t1.name)
218
219 所有的警察的角色都是police
220 每个警察都有自己独有名字,生命值,武器,性别
221 每个都可以开枪攻击敌人,切攻击目标不能是police
222
223 所有的警察的角色都是terrorist
224 每个匪徒都有自己独有名字,生命值,武器,性别
225 每个都可以开枪攻击敌人,切攻击目标不能是terrorist
226
227
228 9. 实例化一个警察,一个匪徒,警察攻击匪徒,匪徒掉血
229
230 10. 提取警察类和匪徒类相似之处定义成一个父类,使用继承的方式减少代码重复
231
232 11
233
234 class Base:
235     def f1(self):
236         self.f2()
237
238     def f2(self):
239         print(‘...‘)
240
241 class Foo(Base):
242     def f2(self):
243         print(‘9999‘)
244
245 obj = Foo()
246 obj.f1()
247
248 问题1:面向对象中的self指的什么?
249 问题2:运行结果并简述原因
250 class Base:
251     def f1(self):
252         self.f2()
253
254     def f2(self):
255         print(‘...‘)
256
257 class Foo(Base):
258     def f2(self):
259         print(‘9999‘)
260     pass
261
262 obj = Foo()
263 obj.f1()  #9999
264 self:是调用对象的引用
265 输出:9999,是继承首先是从对象本身找,没有定义f1,--->对象的类中找,也没有这个f1,
266 --->去父类中找到f1,f1中调用的是self.f2,,而名称空间已经有self.f2,所以对象优先运行自己的f2
267
268
269 三 并发编程
270
271 1 线程,进程,协程的区别?
272 线程:最小的执行单位
273 进程:是资源管理单位
274
275 2 GIL是什么,对于python有什么影响?
276 gil是全局解释器锁,,同一时刻,同一进程,只有一个线程被执行
277 3 解释LOCK,RLOCL,EVENT,samphore的应用场景
278
279 4 基于对列实现一个生产者消费者模型,要求:队列内元素不能超过5个,一旦有五个元素了,生产者不再生产,其他内容   自由扩散
280
281 5 基于selectors模块实现并发聊天,退出某一个客户端不能影响其他用户
282 import selectors
283 import socket
284 sock = socket.socket()
285 sock.bind(("127.0.0.1",8000))
286 sock.listen(5)
287 sock.setblocking(False)
288
289 sel = selectors.DefaultSelector()  #选择最优级模型
290
291 def accept(conn,mask):
292     conn,addr = sock.accept()
293     print(conn)
294     sel.register(conn,selectors.EVENT_READ,read)
295 sel.register(sock,selectors.EVENT_READ,accept)
296 def read(conn,mask):
297     try:
298         data = conn.recv(1024)
299         print(data.decode(‘utf-8‘))
300         send_data = input(">>>").encode(‘utf-8‘)
301         conn.send(send_data)
302     except Exception as e:
303         sel.unregister(conn)  #吊消连接
304
305
306
307 while True:
308     events = sel.select() #监听数据  [(key,mask),(key,mask)]
309     for key,mask in events:
310         # print(key.data)  #产生一个函数
311         # print(key.fileobj)   #产生一个fd(文件描述符)
312         func = key.data
313         obj = key.fileobj
314         func(obj,mask)
315     # break
316
317
318 clinet
319 import socket
320 sock = socket.socket()
321 sock.connect(("127.0.0.1",8000))
322 while True:
323     send_data = input(">>>")
324     sock.send(send_data.encode(‘utf-8‘))
325     recv_data = sock.recv(1024)
326     print(recv_data.decode(‘utf-8‘))

件前提要存在不然报错。 w:写,文件不存在,会自动创建,存在话,就覆盖写。 a:追加,文件末尾追加写入内容。 r+:可读也可写。 w+:可写,,不过写是覆盖的写‘ a+,追加写
时间: 2024-12-22 10:50:43

一次上机试题(面向对象)的相关文章

华为上机试题

一.题目描述:通过键盘输入一串小写字母(a~z)组成的字符串.请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉.比如字符串“abacacde”过滤结果为“abcde”. public String stringFilter(String str) { Map<String, Integer> map = new LinkedHashMap<String, Integer>(); String s = ""; for(int i=0

2014华为上机试题

1.第一题的题目大概是输入整型数组求数组的最小数和最大数之和,例如输入1,2,3,4则输出为5,当输入只有一个数的时候,则最小数和最大数都是该数,例如只输入1,则输出为2:另外数组的长度不超过50 #include<stdio.h> main() { intnum[50]={0}; inti,n; printf("请输入整型数组的长度(1~50):"); scanf("%d",&n); printf("请输入整型数组的元素:"

某公司ASP.NET应聘上机试题

ASP.NET笔试题是ASP.NET程序员面试必须经历的,一般会叫你填两个表 1个是你的详细信息表 1个是面试题答卷 两个都要注意反正面是否都有内容不要遗漏,如果考你机试一般也有两种,就是程序连接数据库或一些基本的算法(二分查找,递归等),公司一般都是测试你的基本功是否扎实,如果你基本功好就游刃有余不必紧张! 那么下面就是一些ASP.NET笔试题,希望对你的面试准备有帮助. 1.new有几种用法 第一种:new Class(); 第二种:覆盖方法 public new XXXX(){} 第三种:

华为上机试题:最高分是多少

老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问.当然,老师有时候需要更新某位同学的成绩.输入描述:输入包括多组测试数据.每组输入第一行是两个正整数N和M(0 < N <= 30000,0 < M < 5000),分别代表学生的数目和操作的数目.学生ID编号从1编到N.第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学生的成绩接下来又M行,每一行有一个字符C(只取‘Q’或‘U’),和两个正整数A,B,当C为'Q'的时候, 表示这是一条询

【华为2016上机试题C++】最高分是多少

[编程题] 最高分是多少 时间限制:1秒 空间限制:65536K 老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问.当然,老师有时候需要更新某位同学的成绩. 输入描述: 输入包括多组测试数据. 每组输入第一行是两个正整数N和M(0 < N <= 30000,0 < M < 5000),分别代表学生的数目和操作的数目. 学生ID编号从1编到N. 第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学生的成绩 接下来又M行,每一行有一个字符C(

C语言面试题大汇总

C语言面试题大汇总 1.局部变量能否和全局变量重名? 答:能,局部会屏蔽全局.要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量.对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内. 2.如何引用一个已经定义过的全局变量? 答: extern 可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引

day10&lt;面向对象+&gt;

面向对象(package关键字的概述及作用) 面向对象(包的定义及注意事项) 面向对象(带包的类编译和运行) 面向对象(不同包下类之间的访问) 面向对象(import关键字的概述和使用) 面向对象(四种权限修饰符的测试) 面向对象(类及其组成所使用的常见修饰符) 面向对象(内部类概述和访问特点) 面向对象(成员内部类私有使用) 面向对象(静态成员内部类) 面向对象(成员内部类的面试题) 面向对象(局部内部类访问局部变量的问题) 面向对象(匿名内部类的格式和理解) 面向对象(匿名内部类重写多个方法

利用递归 实现UIScrollView无限滚动的效果

项目需求 利用递归 实现UIScrollView无限滚动的效果. 上机试题, #import "ViewController.h" @interface ViewController (){ UIScrollView *mainScroll; BOOL isFinish; int x; } @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; x=0; isFinish = YES;

批处理基本知识以及进阶 V2.0

批处理基本知识以及进阶 将以要执行的程序指令 , 像在 dos 模式下一下写入记事本 , 保存成 bat 文件 , 就可以执行了 一 . 简单批处理内部命令简介 1.Echo 命令 打开回显或关闭请求回显功能,或显示消息.如果没有任何参数, echo 命令将显示当前回显设置. 语法 : echo [{on │ off}] [message] Sample : @echo off / echo hello world 在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用 > >>