机器学习方向python经典面试题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Arctic_Beacon/article/details/85336767

1  谈谈python 指针变量的理解,并解释python交换两个变量的值实现语句a,b=b,a原理?

答:python的变量都是指针,python并不会为定义的变量开辟内存空间,而是为值开辟内存空间。因此,a,b=b,a语句中,a指针指向b的值,b指针指向a的值,从而实现了变量值的交换。

2  输出Fibonacci数列,上限100,递归公式为F[n]=F[n-1]+F[n-2],初值F[1]=1,F[2]=1。

答:

a,b = 0, 1
while b<100:
    print (b),
    a, b = b, a+b

输出:1 1 2 3 5 8 13 21 34 55 89

3  简述python中, list, tuple, dict, set的区别?并分别回答如下问题。

(1)tuple可以索引吗?

(2)用set去除mylist = [1, 1, 2, 3, 4, 'ok','ok']重复元素。

(3)dict的健值(key)可以重复吗?

答:

list: 链表, 有序的项目, 通过索引进行查找;构建语法mylist=[1,2,3]

tuple: 元组, 元组将多样的对象集合到一起, 不能修改, 通过索引进行查找;构建语法mytuple=1,2,3

dict: 字典, 字典是一组键(key)和值(value)的组合, 通过键(key)进行查找, 没有顺序;构建语法mydict= {1: 1, 2: 2, 3: 3}

set: 集合,无序, 元素只出现一次, 自动去重;构建语法myset = {1,2,3}

(1)可以索引。

(2)list(set(mylist))

(3)不能重复。

4  用字典结构构建一个简单的数据库,构造字典people存储和查询Alice, Beth 和Cecil的电话和地址。请完成以下代码(电话和地址请任意编写)

labels = {
'phone': 'phone number',
'addr': 'address'
}
name = input('Name: ')
request = input('Phone number (p) or address (a)? ')
if request == 'p': key = 'phone'
if request == 'a': key = 'addr'

if name in people: print ("%s's %s is %s." % \
(name, labels[key], people[name][key]))

答:
 

people = {
'Alice': {
'phone': '2341',
'addr': 'Foo drive 23'
},
'Beth': {
'phone': '9102',
'addr': 'Bar street 42'
},
'Cecil': {
'phone': '3158',
'addr': 'Baz avenue 90'
}
}

labels = {
'phone': 'phone number',
'addr': 'address'
}
name = input('Name: ')
request = input('Phone number (p) or address (a)? ')
if request == 'p': key = 'phone'
if request == 'a': key = 'addr'

if name in people: print ("%s's %s is %s." % \
(name, labels[key], people[name][key]))

 

5  用list结构写一个简单的数据库database,实现用户名密码验证,请补全以下代码,用户名为albert, dilbert, smith, jones4人,密码请随意编写。

username = input('User name: ')
pin = input('PIN code: ')
if [username, pin] in database: 
    print ('Access granted')

答:

database = [
['albert','1234'],
['dilbert','4242'],
['smith','7524'],
['jones','9843']]

username = input('User name: ')
pin = input('PIN code: ')
if [username, pin] in database: 
    print ('Access granted')

 

6  用dict实现list中重复元素的去除。mylist=[1,1,3,5,6,6,6]

答:

mylist=[1,1,3,5,6,6,6]
d={}
for x in mylist:
    d[x]=1
mylist =list(d.keys()) 

7  写出下列代码的输出

class Parent():
    x = 1
 
class Child1(Parent):
    pass
 
class Child2(Parent):
    pass
 
print (Parent.x, Child1.x, Child2.x)
Child1.x = 2
print (Parent.x, Child1.x, Child2.x)
Parent.x = 3
print (Parent.x, Child1.x, Child2.x)

答:

1 1 1
1 2 1
3 2 3

猜你喜欢

转载自blog.csdn.net/Arctic_Beacon/article/details/85336767