Python编程题汇总(附答案)
Q1: 请写出⼀段Python实现删除⼀个列表中的重复元素?
#使⽤set
a=[1,2.3,1,5,6,7,5]
print(set(a))
Q2:⼀球从 100 ⽶⾼度⾃由落下,每次落地后反跳回原⾼度的⼀半;再落下,求它在第10次落地时,共经过多少⽶?第10次反弹多⾼?
if __name__ == '__main__':
i = 1
x = 100
sum = 0
while i <= 10:
sum += x
x = x/2
sum += x
i += 1
print('⼀共经过%f⽶,第10次反弹的⾼度是%f'%(sum, x))
Q3: Python中浅拷贝和深拷贝怎么⽤?
浅拷贝py(),没有拷贝⼦对象,所以原始数据改变,⼦对象改变。
深拷贝copy.deepcopy(),包含对象⾥⾯的⼦对象的拷贝,所以原始对象的改变不会造成深拷贝⾥的任何⼦元素的改变,这样,在改变更新对象的时候,原对象才能不受影响,也就是保持原始数据不变
import copya = [1, 2, 3, 4, ['a', 'b']] # 原始对象b = a # 赋值
c = py(a) # 对象拷贝,浅拷贝
d = copy.deepcopy(a) # 对象拷贝,深拷贝
a.append(5) # 修改对象a
a[4].append('c')
print(a)
print(b)
print(c)
print(d)
Q4: Python中打开⽂件可以⾃动关闭的关键字是什么?
#使⽤with
with open("d:\\",'r') as f:
adlines()
Q5: 列出python中可变数据类型和不可变数据类型,并简述原理
不可变数据类型:数值型、字符串型string和元组tuple。
不允许变量的值发⽣变化,如果改变了变量的值,相当于是新建了⼀个对象,⽽对于相同的值的对象,在内存中则只有⼀个对象(⼀个地址)
可变数据类型:列表list和字典dict;
允许变量的值发⽣变化,即如果对变量进⾏append之类操作后,只是改变了变量的值,⽽不会新建⼀个对象,变量引⽤的对象的地址也不会变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,即每个对象都有⾃⼰的地址,相当于内存中对于同值的对象保存了多份,这⾥不存在引⽤计数,是实实在在的对象。
Q6:介绍⼀下except⽤法和作⽤?update语句中带有单引号
try…except…except…[else…][finally…]
执⾏try下的语句,如果引发异常,则执⾏过程会跳到except语句。对每个except分⽀顺序尝试执⾏,如果引发的异常与except中的异常组匹配,执⾏相应的语句。如果所有的except都不匹配,则异常会传递到下⼀个调⽤本代码的最⾼层try代码中。
try下的语句正常执⾏,则执⾏else块代码。如果发⽣异常,就不会执⾏
如果存在finally语句,最后总是会执⾏。
Q7:⽤Python实现打印99乘法表
for i in range(1,10):
for j in range(1,i+1):
print ("%s*%s=%s "%(i,j,i*j),end="")
print()
Q8:Python中dict和json格式怎么转换
python基础代码实例#dict转json:
import json
dict1 = {"zhangfei":1, "liubei":2, "guanyu": 4, "zhaoyun":3}
myjson = json.dumps(dict1)
#json转dict:
mydict = json.loads(myjson)
pg数据库数据恢复Q9:字符串实现反转
str1 = 'iruance'
str1[::-1]
Q10: 将2个元组合并成⼀个字典(1个元组的值为key,另1个元组的值为value形式)
a = ("zhangfei", "guanyu")
b = (66, 80)
dict(zip(a,b))
Q11: 简述装饰器的作⽤
装饰器是⼀种特殊的闭包,就是在闭包的基础上传递了⼀个函数,然后覆盖原来函数的执⾏⼊⼝,以后调⽤这个函数的时候,就可以额外实现⼀些功能了。
import time
def log(func):
def inner_log(*args, **kw):
print("Call: {}".format(func.__name__))
return func(*args, **kw)
return inner_log
@log
def timer():
print(time.time())
Q12: 写⼀个冒泡排序
list1 = [2, 5, 8, 9, 3, 11]
def paixu(data, reverse=False):
if not reverse:
for i in range(len(data) - 1):
for j in range(len(data) - 1 - i):
if data[j] > data[j+1]:
data[j], data[j+1] = data[j+1], data[j]
return data
else:
for i in range(len(data) - 1):
for j in range(len(data) - 1 - i):
if data[j] < data[j+1]:
data[j], data[j+1] = data[j+1], data[j]
return data
print(paixu(list1, reverse=True))
Q13: Flask与Django的区别是什么?
Flask是“microframework”,主要⽤来编写⼩型应⽤程序,不过随着Python的普及,很多⼤型程序也在使⽤ Flask。同时,在Flask中,我们必须使⽤外部库。
Django适⽤于⼤型应⽤程序。它提供了灵活性,以及完整的程序框架和快速的项⽬⽣成⽅法。可以选择不同的数据库,URL结构,模板样式等。
Q14: 正则replie作⽤?
repile是将正则表达式编译成⼀个对象,加快速度,并重复使⽤
Q15: 有哪些提⾼Python运⾏效率的⽅法?
a. 使⽤⽣成器,因为可以节约⼤量内存;
b. 循环代码优化,避免过多重复代码的执⾏;
c. 核⼼模块⽤Cython PyPy等,提⾼效率;
d. 多进程、多线程、协程;
e. 多个if elif条件判断,可以把最有可能先发⽣的条件放到前⾯写,这样可以减少程序判断的次数,提⾼效率。Q16:有⼀个列表list=[2,11,16,5,9],不⽤sort⽅法,怎么实现从⼩到⼤排序?
c语言用什么软件编写win10#利⽤min()⽅法求出最⼩值,原列表删除最⼩值,新列表加⼊最⼩值,递归调⽤获取最⼩值的函数,反复操作。
list=[2,11,16,5,9]
new_list=[]
def getmin(list):
a=min(list) #获取列表最⼩值
new_list.append(a) #将最⼩值加⼊新列表
if len(list)>0: #保证列表中的最⼩值都获取完并加⼊新列表
get_min(list)
return new_list
new_list=get_min(list)
print new_list
Q17: Python中arg和*kwarg作⽤是什么?
允许我们在调⽤函数的时候传⼊多个实参,
*arg会把位置参数转化为tuple
**kwarg会把关键字参数转化为dict
def test(*arg, **kwarg):
if arg:
print("arg:", arg)
if kwarg:
print("kearg:", kwarg)
test('ni', 'hao', key='world')
Q18: Python⾯向对象的继承有什么特点?
a. 同时⽀持单继承与多继承,当只有⼀个⽗类时为单继承,当存在多个⽗类时为多继承。
b. ⼦类会继承⽗类所有的属性和⽅法,⼦类也可以覆盖⽗类同名的变量和⽅法。
c. 在继承中基类的构造(__init__())⽅法不会被⾃动调⽤,它需要在其派⽣类的构造中专门调⽤。
scripture offering什么意思d. 在调⽤基类的⽅法时,需要加上基类的类名前缀,且需要带上 self 参数变量。区别于在类中调⽤普通函数时并不需要带上 self 参
数。
Q19: 如何判断是函数还是⽅法?
与类和实例⽆绑定关系的 function 都属于函数(function)
与类和实例有绑定关系的 function 都属于⽅法(method)
普通函数:
def func1():
pass
print(func1)
类中的函数:
class People(object):
def func2(self):
pass
@staticmethod
def func3():
pass
@classmethod
def func4(cls):
pass
people = People()
print(people.func2)
Q20: Python会不会出现内存泄露,为什么?
当对象之间互相引⽤的时候再删除的时候,可能会造成⽆法释放对象的情况,出现泄漏
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论