面试题

'''
1
1.以下程序输出结果是什么
a = 1
def fun(a):
    a = 2
fun(a)
print (a)  
 
a = []
def fun(a):
    a.append(1)
fun(a)
print(a)
'''
a = 1
def fun(a):
    a = 2
fun(a)
print (a) 
#   输出 1
a = []
def fun(a):
    a.append(1)
fun(a)
print(a)
#输出[1]
'''
.请简要说明什么是类变量,什么是实例变量,并观察以下程序的输出结果

 
class Person:
    name="aaa"
p1=Person()
p2=Person()
p1.name="bbb"
print(p1.name)  
print(p2.name) 
print(Person.name)
'''
'''
类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。
实例变量:在类的声明中,属性是用变量来表示的。这种变量被称为实例变量,
是在类声明的内部但是在类的其他成员方法之外声明的。
'''
class Person:
    name="aaa"
p1=Person()
p2=Person()
p1.name="bbb"
print(p1.name)  
print(p2.name) 
print(Person.name)
#输出结果为 'bbb' 'aaa' 'aaa' 
3.以下语句有什么弊端,name是元祖的时候,程序会是什么样的结果,如何避免

"hi there %s" % name
语句应该给name赋值且应该输出打印
name是元组的时候程序会报错。
正确应为:print('hi there %s'%str(name))
'''
4.阅读下面的代码,写出A0,A1至An的最终值。

A0 = dict(zip(('a','b','c','d','e'),(1,2,3,4,5))) A1 = range(10)
A2 = [i for i in A1 if i in A0] A3 = [A0[s] for s in A0]
A4 = [i for i in A1 if i in A3]
A5 = {i:i*i for i in A1} A6 = [[i,i*i] for i in A1]
'''
A0 = {'a':1,'b':2,'c':3,'d':4,'e':5}
A1 = 0,1,2,3,4,5,6,7,8,9
A2 = [1,2,3,4,5]
A3 = [1,2,3,4,5]
A4 = [1,2,3,4,5]
A5 = {0:0,1:1,2:4,3:9,4:16,5:25,6:36,7:49,8:64,9:81}
A6 = [[0,0],[1,1],[2,4],[3,9],[4,16],[5,25],[6,36],[7,49],[8,64],[9,81]]
 5.你如何管理不同版本的代码?
通过 github

7.这两个参数是什么意思:*args,**kwargs?我们为什么要使用它们?
*args:命名关键字参数
**kwargs:关键字参数
如果我们不确定要往函数中传入多少个参数,或者我们想往函数中以列表和元组的形式传参时使用*args
'''
6.下面代码会输出什么:

def f(x,l=[]):
    for i in range(x):
        l.append(i*i)
    print(l)
f(2)
f(3,[3,2,1])
f(3)
'''


def f(x,l=[]):
    for i in range(x):
        l.append(i*i)
    print(l)
f(2)
f(3,[3,2,1])
f(3)

'''
[0,1]
[3,2,1,0,1,4]
[0,1,0,1,4]
'''
7.这两个参数是什么意思:*args,**kwargs?我们为什么要使用它们?
*args:命名关键字参数
**kwargs:关键字参数
如果我们不确定要往函数中传入多少个参数,或者我们想往函数中以列表和元组的形式传参时使用*args

如果我们不知道要往参数中传入多少个关键字参数,或者想传入字典的值作为关键字参数时使用**kw
'''
9.请写出一段Python代码实现删除一个list里面的重复元素
'''
l = [5,6,5,6,5,2,3,4]
print(set(l))
10.单引号,双引号,三引号的区别
三引号可以多行输出,而单引号和双引号只能在一行上,
'''
11.写一个函数, 输入一个字符串, 返回倒序排列的结果

输入: string_reverse(‘abcdef') , 返回: ‘fedcba',写出你能想到的多种方法
'''
def string_reverse(a):
    
    return(a[::-1])
print(string_reverse('abcdef'))



def string_reverse(a):
    l = list(a)
    l.reverse()
    return ''.join(l)
print(string_reverse('abcdef'))



def string_reverse(a):
    l =[]
    for i in range(1,len(a)+1):
        l.append(a[-i])
    return ''.join(l)
print(string_reverse('abcdef'))    
'''
2.列表[1,2,3,4,5],请使用map()函数输出[1,4,9,16,25],
并使用列表推导式提取出大于10的数,最终输出[16,25]
'''
b = map(lambda a:a ** 2,[1,2,3,4,5])

res = [i for i in b if i > 10]
print(res)

 

posted @ 2018-12-17 11:46  赵冀华  阅读(122)  评论(0编辑  收藏  举报