python面试题-python基础

1.1 笔试题(选择题,编程题)

一、选择题

1.下列哪个语句在 Python 中是非法的? ( B )

A、x = y = z = 1 B、x = (y = z + 1)

C、x, y = y, x D、x += y

2.关于 Python 内存管理,下列说法错误的是 (B )

A、变量不必事先声明 B、变量无须先创建和赋值而直接使用

C、变量无须指定类型 D、可以使用 del 释放资源

3. 在 Python3 中执行如下语句后得到的结果是? ( D )

>>> world=”world”

>>> print “hello”+ world

A、 helloworld B、 “hello”world

C、hello world D、 语法错误

4、下面哪个不是 Python 合法的标识符 ( B )

A、int32 B、40XL C、self D、__name__

5、下列哪种说法是错误的 ( A )

A、除字典类型外,所有标准对象均可以用于布尔测试

B、空字符串的布尔值是 False

C、空列表对象的布尔值是 False

D、值为 0 的任何数字对象的布尔值是 False

6、下列表达式的值为 True 的是 ( C )

A、5+4j > 2-3j B、3>2>2

C、(3,2)< (‘a’,‘b’) D、‘abc’< ‘xyz’

7、Python 不支持的数据类型有 ( A )

A、char B、int C、float D、list

8、type(1+2L*3.14)结果是: ( C )

A、 B、

C、 D、

9、关于字符串下列说法错误的是 ( B )

A、字符应该视为长度为 1 的字符串

B、字符串以\0 标志字符串的结束

C、既可以用单引号,也可以用双引号创建字符串

D、在三引号字符串中可以包含换行回车等特殊字符

10、以下不能创建一个字典的语句是 ( C )

A、dict1 = {}

B、dict2 = { 3 : 5 }

C、dict3 = dict( [2 , 5] ,[ 3 , 4 ] )

D、dict4 = dict( ( [1,2],[3,4] ) )

11、下面不能创建一个集合的语句是 ( C )

A、s1 = set () B、s2 = set (“abcd”)

C、s3 = (1, 2, 3, 4) D、s4 = frozenset( (3,2,1) )

12、下列 Python 语句正确的是 ( D )

A、min = x if x < y else y B、max = x > y ? x : y

C、if (x > y) print x D、while True : pass

13、epoll 在实现 TCP 服务器时使用的是什么处理机制?( B )

A、轮询 B、事件 C、遍历 D、堵塞


1.2 编程题(解答题)

1. 在 python 中, list, tuple, dict, set 有什么区别, 主要应用在什么

样的场景?

list:列表(链表的数据结构)有序的项目, 通过索引进行查找,使用方括号”[]”;

tuple:元组 元组将多样的对象集合到一起,不能修改,通过索引进行查找, 使用括号”()”;

dict:字典 字典是一组键(key)和值(value)的组合,通过键(key)进行查找, 没有顺序, 使用大括号”{}”;

set:集合 无序,元素只出现一次, 自动去重,使用”set([])”

应用场景

list, 简单的数据集合,可以使用索引;

tuple, 把一些数据当做一个整体去使用,不能修改;

dict,使用键值和值进行关联的数据;

set,数据只出现一次,只关心数据是否出现, 不关心其位置;

2. 静态函数, 类函数, 成员函数、属性函数的区别?

静态函数(@staticmethod): 即静态方法,主要处理与这个类的逻辑关联, 如验证数据;

类函数(@classmethod):即类方法, 更关注于从类中调用方法, 而不是在实例中调用方法, 如构造重载;

成员函数: 实例的方法, 只能通过实例进行调用;

3. a=1, b=2, 不用中间变量交换 a 和 b 的值

方法一:

1. a = a+b

2. b = a-b

3. a = a-b

方法二:

1. a = a^b

2. b =b^a

3. a = a^b

方法三:

1. a,b = b,a

4. 写一个函数, 输入一个字符串, 返回倒序排列的结果:

如: string_reverse(‘abcdef’), 返回: ‘fedcba’(请采用多种方法实现, 并对实现方法进行比较)

1.使用字符串本身的翻转

def string_reverse1(text='abcdef'):

return text[::-1]

2.把字符串变为列表,用列表的 reverse 函数

def string_reverse2(text='abcdef'):

new_text=list(text)

new_text.reverse()

return ''.join(new_text)

3.新建一个列表,从后往前取

def string_reverse3(text='abcdef'):

new_text=[]

for i in range(1,len(text)+1):

new_text.append(text[-i])

return ''.join(new_text)

4.利用双向列表 deque 中的 extendleft 函数

from collections import deque>

def string_reverse4(text='abcdef'):

d = deque()

d.extendleft(text)

return ''.join(d)

5.递归

def string_reverse5(text='abcdef'):

if len(text)<=1:

return text

else:

return string_reverse5(text[1:]+text[0])

5. 请用自己的算法, 按升序合并如下两个 list, 并去除重复的元素:

list1 = [2, 3, 8, 4, 9, 5, 6]

list2 = [5, 6, 10, 17, 11, 2]

list1 += list2

list1.sort()

list1 = set(list1)

6. 编程用 sort 进行排序,然后从最后一个元素开始判断

a.sort()

last=a[-1]

for i in range(len(a)-2,-1,-1):

if last==a[i]:

del a[i]

else:

last=a[i]

print(a)

7. 阅读下面的代码,写出 A0,A1 至 An 的最终值。

1) A0 = dict(zip(('a','b','c','d','e'),(1,2,3,4,5)))

2) A1 = range(10)

3) A2 = [i for i in A1 if i in A0]

4) A3 = [A0[s] for s in A0]

5) A4 = [i for i in A1 if i in A3]

6) A5 = {i:i*i for i in A1}

7) A6 = [[i,i*i] for i in A1]

{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

range(0, 10)

[]

[1, 2, 3, 4, 5]

[1, 2, 3, 4, 5]

{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}

[[0, 0], [1, 1], [2, 4], [3, 9], [4, 16], [5, 25], [6, 36], [7, 49],

[8, 64], [9, 81]]

8. 考虑以下 Python 代码,如果运行结束,命令行中的运行结果是什么

以上两段代码的运行结果是否相同,如果不相同,原因是什么?

不同

9. 列出 5 个 python 标准库

Random,time,math,functiontools,sys 等

10.python 内建数据类型有哪些

数字、字符串、Bytes、列表、元组、字典、集合、布尔等利用 collections 库的 Counter 方法统计字符串每个单词出现的次数

"kjalfj;ldsjafl;hdsllfdhg;lahfbl;hl;ahlf;h"

import collections

str1 = 'kjalfj;ldsjafl;hdsllfdhg;lahfbl;hl;ahlf;h'

list1 = str1.split(';')

c = collections.Counter()

for s in list1:

c[s] += 1

for key in c.keys():

print(key,c.get(key))

11.filter 方法求出列表所有奇数并构造新列表,a = [1, 2, 3, 4, 5, 6, 7, 8]

a = [1, 2, 3, 4, 5, 6, 7, 8]

b = list(filter(lambda x:x % 2 != 0,a))

print(b)

12. 两个列表[1,5,7,9]和[2,2,6,8]合并为[1,2,2,3,6,7,8,9]

a = [1,3,5,7]

b = [2,4,6,8]

sorted(a+b)

13.将[[1,2],[3,4],[5,6]]一行代码展开该列表,得出[1,2,3,4,5,6]

[j for x in [[1,2],[3,4],[5,6]] for j in x]

14.x="abc",y="def",z=["d","e","f"],分别求出 x.join(y)和 x.join(z)

返回的结果

dabceabcf

15. 输入某年某月某日,判断这一天是这一年的第几天?

import time

D=input("请输入年份,格式如 XXXX-XX-XX:")

d=time.strptime( D,'%Y-%m-%d').tm_yday

print("the {} day of this year!" .format(d))

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章