美文网首页
Python面试100题(含答案)

Python面试100题(含答案)

作者: wangsb_2020 | 来源:发表于2019-12-05 08:51 被阅读0次

Python 面试实训 100 题

转自:https://mp.weixin.qq.com/s/Z3afF58zIX0OWpgUM-9djQ
Python 语感训练涵盖列表、字典、元组、集合、字符串、格式化输出、类型和整数转换、文件读写、杂项等9个类别,共100道练习题Python 语感训练涵盖列表、字典、元组、集合、字符串、格式化输出、类型和整数转换、文件读写、杂项等9个类别,共100道练习题。

自己慢慢完成这些题目:

1. 将元组 (1,2,3) 和集合 {4,5,6} 合并成一个列表。

>>> list((1,2,3)) + list({4,5,6})
[1, 2, 3, 4, 5, 6]
2. 在列表 [1,2,3,4,5,6] 首尾分别添加整型元素 7 和 0。

>>> a = [1,2,3,4,5,6]
>>> a.insert(0,7)
>>> a.append(0)
>>> print(a)
[7, 1, 2, 3, 4, 5, 6, 0]
3. 反转列表 [0,1,2,3,4,5,6,7] 。

a = [0,1,2,3,4,5,6,7]
a.reverse()
print(a)

或 

a = [0,1,2,3,4,5,6,7]
a[::-1]
print(a)
4. 反转列表 [0,1,2,3,4,5,6,7] 后给出中元素 5 的索引号。

a = [0,1,2,3,4,5,6,7]
a.reverse()
a.index(5)
Out[4]: 2

5. 分别统计列表 [True,False,0,1,2] 中 True,False,0,1,2的元素个数,发现了什么?

a = [True,False,0,1,2]
a.count(True),a.count(1),a.count(False),a.count(0),a.count(2)
Out[11]: (2, 2, 2, 2, 1)
# count()不区分True和1、False和0,但None、''不会被视为False
6. 从列表 [True,1,0,‘x’,None,‘x’,False,2,True] 中删除元素‘x’。

a = [True,1,0,'x',None,'x',False,2,True]
while 'x' in a:
    a.remove('x')
print(a)
7. 从列表 [True,1,0,‘x’,None,‘x’,False,2,True] 中删除索引号为4的元素。

list = [True,1,0,'x',None,'x',False,2,True]
del list[4]
print(list)
8. 删除列表中索引号为奇数(或偶数)的元素。

list = [True,1,0,'x',None,'x',False,2,True]
#去掉基数下标
print(list[::2])
#去掉偶数下标
print(list[1::2])
9. 清空列表中的所有元素。

list = [True,1,0,'x',None,'x',False,2,True]
list = []
print(list)

# or

list = [True,1,0,'x',None,'x',False,2,True]
list.clear()
print(list)
10. 对列表 [3,0,8,5,7] 分别做升序和降序排列。

a = [3,0,8,5,7]
a.sort()
print(a)

a.sort(reverse=True)
print(a)
11. 将列表 [3,0,8,5,7] 中大于 5 元素置为1,其余元素置为0。

a = [3,0,8,5,7]
for i in range(0, len(a)):
    if a[i] > 5:
        a[i] = 1
    else:
        a[i] = 0
print(a)
12. 遍历列表 [‘x’,‘y’,‘z’],打印每一个元素及其对应的索引号。

a = ['x','y','z']
for i in range(0,len(a)):
    print(i,a[i])
13. 将列表 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 拆分为奇数组和偶数组两个列表。

a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
odd = []
even = []
for i in a:
    if i % 2:
        even.append(i)
    else:
        odd.append(i)
print(even)
print(odd)
14. 分别根据每一行的首元素和尾元素大小对二维列表 [[6, 5], [3, 7], [2, 8]] 排序。

a = [[6, 5], [3, 7], [2, 8]]
print(a)

b = sorted(a, key=(lambda x:x[0]))
print(b)

c = sorted(a, key=(lambda x:x[-1]), reverse=True)
print(c)
15. 从列表 [1,4,7,2,5,8] 索引为3的位置开始,依次插入列表 [‘x’,‘y’,‘z’] 的所有元素。

#两种插入形式
a = [1,4,7,2,5,8]
b = ['x','y','z']
a.insert(3, b)
print(a)

a = [1,4,7,2,5,8]
b = ['x','y','z']
a[3:3] = b
print(a)
16. 快速生成由 [5,50) 区间内的整数组成的列表。

a = list(range(5,50))
print(a)
17. 若 a = [1,2,3],令 b = a,执行 b[0] = 9, a[0]亦被改变。为何?如何避免?

a = [1,2,3]
b = a
print(a)
b[0] = 9
print(a)

a = [1,2,3]
b = a.copy()
print(a)
b[0] = 9
print(a)
18. 将列表 [‘x’,‘y’,‘z’] 和 [1,2,3] 转成 [(‘x’,1),(‘y’,2),(‘z’,3)] 的形式。

即:两个一维的list合并成一个二维list
a = ['x','y','z']
b = [1,2,3]
c = list(zip(a,b))
print(c)
19. 以列表形式返回字典 {‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21} 中所有的键。


a = {'Alice': 20, 'Beth': 18, 'Cecil': 21}
print(a.keys())
print(list(a.keys())) #list
for key in a.keys():
    print(key)
20. 以列表形式返回字典 {‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21} 中所有的值。

a = {'Alice': 20, 'Beth': 18, 'Cecil': 21}
print(list(a.values()))
21. 以列表形式返回字典 {‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21} 中所有键值对组成的元组。

a = {'Alice': 20, 'Beth': 18, 'Cecil': 21}
print(a.keys())
print(tuple(a.keys()))
22. 向字典 {‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21} 中追加 ‘David’:19 键值对,更新Cecil的值为17。

a = {'Alice': 20, 'Beth': 18, 'Cecil': 21}
a['David'] = 19
a['Cecil'] = 17
print(a)
23. 删除字典 {‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21} 中的Beth键后,清空该字典。


a = {'Alice': 20, 'Beth': 18, 'Cecil': 21}
a.pop('Beth')
print(a)
a.clear()
print(a)
24. 判断 David 和 Alice 是否在字典 {‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21} 中。

a = {'Alice': 20, 'Beth': 18, 'Cecil': 21}
if 'David' in a.keys():
    print('yes')
else:
    print('no')

if 'Alice' in a.keys():
    print('yes')
else:
    print('no')
25. 遍历字典 {‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21},打印键值对。

a = {'Alice': 20, 'Beth': 18, 'Cecil': 21}
for key in a.keys():
    print(key,a[key])
26. 若 a = dict(),令 b = a,执行 b.update({‘x’:1}), a亦被改变。为何?如何避免?

a = dict()
b = a
b.update({'x':1})
print('b:',b)
print('a:',a)

a = dict()
b = a.copy()
b.update({'x':1})
print('b:',b)
print('a:',a)
27. 以列表 [‘A’,‘B’,‘C’,‘D’,‘E’,‘F’,‘G’,‘H’] 中的每一个元素为键,默认值都是0,创建一个字典。

a = ['A','B','C','D','E','F','G','H']
b = [1]*len(a)
print('a:',a)
print('b:',b)

D = dict(zip(a,b))
print(D)
28. 将二维结构 [[‘a’,1],[‘b’,2]] 和 ((‘x’,3),(‘y’,4)) 转成字典。

a = [['a',1],['b',2]]
b = (('x',3),('y',4))
Da = dict(a)
Db = dict(b)
print(Da)
print(Db)
29. 将元组 (1,2) 和 (3,4) 合并成一个元组。

a = (1,2)
b = (3,4)
c = a + b
print(c)
30. 将空间坐标元组 (1,2,3) 的三个元素解包对应到变量 x,y,z。

(x,y,z) = (1,2,3)
print(x)
print(y)
print(z)
31. 返回元组 (‘Alice’,‘Beth’,‘Cecil’) 中 ‘Cecil’ 元素的索引号。

a = ('Alice','Beth','Cecil')
print(a.index('Cecil'))
32. 返回元组 (2,5,3,2,4) 中元素 2 的个数。

a = (2,5,3,2,4)
print(a.count(2))
33. 判断 ‘Cecil’ 是否在元组 (‘Alice’,‘Beth’,‘Cecil’) 中。

a = ('Alice','Beth','Cecil')
if 'Cecil' in a:
    print('yes')
34. 返回在元组 (2,5,3,7) 索引号为2的位置插入元素 9 之后的新元组。


a = list((2,5,3,7))
a.insert(2,9)
print(tuple(a))
35. 创建一个空集合,增加 {‘x’,‘y’,‘z’} 三个元素。

b = set('')
b.update('x','y','z')
print(b) #集合是无序的
36. 删除集合 {‘x’,‘y’,‘z’} 中的 ‘z’ 元素,增j加元素 ‘w’,然后清空整个集合。

a = {'x','y','z'}
b = set(a)
print(b)
b.remove('y')
print(b)
b.clear()
print(b)
37. 返回集合 {‘A’,‘D’,‘B’} 中未出现在集合 {‘D’,‘E’,‘C’} 中的元素(差集)。

a = {'A', 'D', 'E'}
b = {'D', 'F', 'C'}
c = a.difference(b)
print(c)

c = a - b
print(c)
38. 返回两个集合 {‘A’,‘D’,‘B’} 和 {‘D’,‘E’,‘C’} 的并集。

a = {'A', 'D', 'E'}
b = {'D', 'F', 'C'}
c = a | b
print(c)
39. 返回两个集合 {‘A’,‘D’,‘B’} 和 {‘D’,‘E’,‘C’} 的交集。

a = {'A', 'D', 'E'}
b = {'D', 'F', 'C'}
c = a & b
print(c)
40. 返回两个集合 {‘A’,‘D’,‘B’} 和 {‘D’,‘E’,‘C’} 未重复的元素的集合。

a = {'A', 'D', 'E'}
b = {'D', 'F', 'C'}
c = (a|b) - (a&b)
print(c)

c = a ^ b
print(c)
41. 判断两个集合 {‘A’,‘D’,‘B’} 和 {‘D’,‘E’,‘C’} 是否有重复元素。

a = {'A', 'D', 'E'}
b = {'D', 'F', 'C'}
if a & b:
    print("yes")
else:
    print('No')
42. 判断集合 {‘A’,‘C’} 是否是集合 {‘D’,‘C’,‘E’,‘A’} 的子集。

a = {'A', 'D', 'C'}
b = {'A', 'D', 'F', 'C'}
print(a.issubset(b))
43. 去除数组 [1,2,5,2,3,4,5,‘x’,4,‘x’] 中的重复元素。

a = [1,2,5,2,3,4,5,'x',4,'x']
print(list(set(a)))
44. 返回字符串 ‘abCdEfg’ 的全部大写、全部小写和大下写互换形式。

a = 'abCdEfg'
print(a.upper())
print(a.lower())
print(a.swapcase())
45. 判断字符串 ‘abCdEfg’ 是否首字母大写,字母是否全部小写,字母是否全部大写。

a = "AbCdEfg"
print(a.isupper())
print(a.islower())
print("Adfd".istitle())
46. 返回字符串 ‘this is python’ 首字母大写以及字符串内每个单词首字母大写形式。

a = 'this is python'
print(a.capitalize())
print(a.title())
47. 判断字符串 ‘this is python’ 是否以 ‘this’ 开头,又是否以 ‘python’ 结尾。

a = 'this is python'
print(a.startswith('this'))
print(a.endswith('python'))
48. 返回字符串 ‘this is python’ 中 ‘is’ 的出现次数。

a = 'this is python'
print(a.count('is'))
49. 返回字符串 ‘this is python’ 中 ‘is’ 首次出现和最后一次出现的位置。

a = 'this is python'
print(a.find('is'))
print(a.rfind('is'))
50. 将字符串 ‘this is python’ 切片成3个单词。

a = 'this is python'
b = a.split(' ')
for i in range(0, len(b)):
    print(b[i])

51. 返回字符串 ‘blog.csdn.net/xufive/article/details/102946961’ 按路径分隔符切片的结果。

a = 'blog.csdn.net/xufive/article/details/102946961'
b = a.split('/')
for i in b:
    print(i)
52. 将字符串 ‘2.72, 5, 7, 3.14’ 以半角逗号切片后,再将各个元素转成浮点型或整形。

a = '2.72, 5, 7, 3.14'
b = a.split(',')
for i in b:
    print(float(i))
    print(int(float(i)))
53. 判断字符串 ‘adS12K56’ 是否完全为字母数字,是否全为数字,是否全为字母,是否全为ASCII码。

a = 'adS12K56'
print(a.isalnum())
print(a.isdigit())
print(a.isalpha())
print(a.isascii())
54. 将字符串 ‘there is python’ 中的 ‘is’ 替换为 ‘are’。

a = 'there is python'
b = a.replace('is', 'are')
print(b)
55. 清除字符串 ‘\t python \n’ 左侧、右侧,以及左右两侧的空白字符。

import re
a = '\t python \n'
b = re.sub(r'\t|\n| ', '', a)
print(b)
56. 将三个全英文字符串(比如,‘ok’, ‘hello’, ‘thank you’)分行打印,实现左对齐、右对齐和居中对齐效果。

print('{:>10}\n{:>10}\n{:>10}'.format('ok', 'hello', 'thank you'))
print('{:<10}\n{:<10}\n{:<10}'.format('ok', 'hello', 'thank you'))
print('{:^10}\n{:^10}\n{:^10}'.format('ok', 'hello', 'thank you'))
57. 将三个字符串(比如,‘Hello, 我是David’, ‘OK, 好’, ‘很高兴认识你’)分行打印,实现左对齐、右对齐和居中效果。

print('{:>20}\n{:>20}\n{:>20}'.format('Hello, 我是David', 'OK, 好', '很高兴认识你'))
print('{:<20}\n{:<20}\n{:<20}'.format('Hello, 我是David', 'OK, 好', '很高兴认识你'))
print('{:^20}\n{:^20}\n{:^20}'.format('Hello, 我是David', 'OK, 好', '很高兴认识你'))

#可能不对
58. 将三个字符串 ‘15’, ‘127’, ‘65535’ 左侧补0成同样长度。

a = '15'
b = '127'
c = '65535'
l = len(c)
print('{}'.format(a.rjust(l, '0')))
print('{}'.format(b.rjust(l, '0')))
print('{}'.format(c.rjust(l, '0')))
59. 提取 url 字符串 ‘https://blog.csdn.net/xufive’ 中的协议名。

import re
a = 'https://blog.csdn.net/xufive'
print(re.search(r'\w+:', a).group())
60. 将列表 [‘a’,‘b’,‘c’] 中各个元素用’|'连接成一个字符串。

b = ['a','b','c']
print('|'.join(b))
61. 将字符串 ‘abc’ 相邻的两个字母之间加上半角逗号,生成新的字符串。

a = 'abc'
print(','.join(a))

62. 从键盘输入手机号码,输出形如 ‘Mobile: 186 6677 7788’ 的字符串。

a = input('Mobile:')
print(a)
63. 从键盘输入年月日时分秒,输出形如 ‘2019-05-01 12:00:00’ 的字符串。

没想好……
64. 给定两个浮点数 3.1415926 和 2.7182818,格式化输出字符串 ‘pi = 3.1416, e = 2.7183’。

a = 3.1415926
b= 2.7182818
print('pi = {:.4f}, e = {:.4f}'.format(a,b))
65. 将 0.00774592 和 356800000 格式化输出为科学计数法字符串。

a = 0.00774592
b= 356800000
print('{}, {}'.format('%e' % a, '%e' % b))
66. 将十进制整数 240 格式化为八进制和十六进制的字符串。

a = 240
print(a)
print(bin(a))
print(oct(a))
print(hex(a))
67. 将十进制整数 240 转为二进制、八进制、十六进制的字符串。

a = 240
print(a)
print(str(bin(a)))
print(str(oct(a)))
print(str(hex(a)))
68. 将字符串 ‘10100’ 按照二进制、八进制、十进制、十六进制转为整数。

a = '10100'
print(int(a, 2))
print(int(a, 8))
print(int(a, 10))
print(int(a, 16))
69. 求二进制整数1010、八进制整数65、十进制整数52、十六进制整数b4的和。

a = '1010'
b = '65'
c = '52'
d = 'b4'
e = int(a,2) + int(b, 8) + int(c, 10) + int(d, 16)
print(e)
70. 将列表 [0,1,2,3.14,‘x’,None,’’,list(),{5}] 中各个元素转为布尔型。

a = [0,1,2,3.14,'x',None,'',list(),{5}]
print([bool(x) for x in a])
71. 返回字符 ‘a’ 和 ‘A’ 的ASCII编码值。

  1. 返回ASCII编码值为 57 和 122 的字符。
  2. 将二维列表 [[0.468,0.975,0.446],[0.718,0.826,0.359]] 写成名为 csv_data 的 csv 格式的文件,并尝试用 excel 打开它。
  3. 从 csv_data.csv 文件中读出二维列表。
  4. 向 csv_data.csv 文件追加二维列表 [[1.468,1.975,1.446],[1.718,1.826,1.359]],然后读出所有数据。
  5. 交换变量 x 和 y 的值。
  6. 判断给定的参数 x 是否是整形。
  7. 判断给定的参数 x 是否为列表或元组。
  8. 判断 ‘https://blog.csdn.net’ 是否以 ‘http://’ 或 ‘https://’ 开头。若是,则返回 ‘http’ 或 ‘https’;否则,返回None。
  9. 判断 ‘https://blog.csdn.net’ 是否以 ‘.com’ 或 ‘.net’ 结束。若是,则返回 ‘com’ 或 ‘net’;否则,返回None。
  10. 将列表 [3,‘a’,5.2,4,{},9,[]] 中 大于3的整数或浮点数置为1,其余置为0。
  11. a,b 是两个数字,返回其中较小者或最大者。
  12. 找到列表 [8,5,2,4,3,6,5,5,1,4,5] 中出现最频繁的数字以及出现的次数。
  13. 将二维列表 [[1], [‘a’,‘b’], [2.3, 4.5, 6.7]] 转为 一维列表。
  14. 将等长的键列表和值列表转为字典。
  15. 使用链状比较操作符重写逻辑表达式 a > 10 and a < 20。
  16. 写一个函数,以0.1秒的间隔不换行打印30次由函数参数传入的字符,实现类似打字机的效果。
  17. 数字列表求和。
  18. 返回数字列表中的最大值和最小值。
  19. 计算 5 的 3.5 方和 3 的立方根。
  20. 对 3.1415926 四舍五入,保留小数点后5位。
  21. 判断两个对象是在内存中是否是同一个。
  22. 返回给定对象的属性和方法。
  23. 计算字符串表达式 ‘(2+3)*5’ 的值。
  24. 实现字符串 ‘x={“name”:“David”, “age”:18}’ 包含的代码功能。
  25. 使用 map 函数求列表 [2,3,4,5] 中每个元素的立方根。
  26. 使用 sys.stdin.readline() 写一个和 input() 函数功能完全相同的函数。
  27. 使用二维列表描述9x9围棋局面,'w’表示白色棋子,‘b’表示黑色棋子,’-'表示无子,打印成下图左所示的文本棋盘。
  28. 对于9x9围棋盘,用a-i标识各行,用1-9标识各列,设计函数go(),输入位置和颜色,即输出文本棋盘,模拟围棋对弈的过程。
  29. 下图中是国际跳棋的初始局面,10x10的棋盘上只有50个深色格子可以落子,'w’表示白色棋子,‘b’表示黑色棋子,’-'表示无子,字符串 phase = ‘b’20 + ‘-’10 + ‘w’*20 表示下图中的局面,请将 phase 打印成下图右所示的样子。Python 语感训练涵盖列表、字典、元组、集合、字符串、格式化输出、类型和整数转换、文件读写、杂项等9个类别,共100道练习题。








相关文章

网友评论

      本文标题:Python面试100题(含答案)

      本文链接:https://www.haomeiwen.com/subject/bkorgctx.html