53 个 Python 面试问题与答案

41. 如何删除字符串中的所有空白?

最简单的方法是使用空白拆分字符串,然后将拆分成的字符串重新连接在一起。

s = 'A string with     white space'
''.join(s.split())
#=> 'Astringwithwhitespace'

42. 在迭代序列时,为什么要使用enumerate()?

enumerate() 允许在序列上迭代时跟踪索引。它比定义和递增一个表示索引的整数更具 Python 感。

li = ['a','b','c','d','e']
for idx,val in enumerate(li):
   print(idx, val)
#=> 0 a
#=> 1 b
#=> 2 c
#=> 3 d
#=> 4 e

43. pass、continue和break之间有什么区别?

pass 意味着什么都不做。我们之所以通常使用它,是因为 Python 不允许在没有代码的情况下创建类、函数或 if 语句。

在下面的例子中,如果在 i>3 中没有代码的话,就会抛出一个错误,因此我们使用 pass。

a = [1,2,3,4,5]
for i in a:
   if i > 3:
       pass
   print(i)
#=> 1
#=> 2
#=> 3
#=> 4
#=> 5

Continue 会继续到下一个元素并停止当前元素的执行。所以当 i<3 时,永远不会达到 print(i)。

for i in a:
   if i < 3:
       continue
   print(i)
#=> 3
#=> 4
#=> 5

break 会中断循环,序列不再重复下去。所以不会被打印3以后的元素。

for i in a:
   if i == 3:
       break
   print(i)    
#=> 1
#=> 2

44. 如何将for循环转换为使用递推式构造列表(list comprehension)?

For 循环如下:

a = [1,2,3,4,5]

a2 = []
for i in a:
    a2.append(i + 1)print(a2)
#=> [2, 3, 4, 5, 6]

用递推式构造列表来修改这个 for 循环,代码如下:

a3 = [i+1 for i in a]

print(a3)
#=> [2, 3, 4, 5, 6]

递推式构造列表通常被认为更具 Python 风格,同时仍易于阅读。

45. 举一个使用三元运算符的例子。

三元运算符是一个单行的 if/else 语句。语法看起来像“if 条件 else b”。

x = 5
y = 10
'greater' if x > 6 else 'less'
#=> 'less'
'greater' if y > 6 else 'less'
#=> 'greater'

46. 检查一个字符串是否仅仅包含数字?

可以使用 isnumeric() 方法。

'123a'.isnumeric()
#=> False'

'123'.isnumeric()
#=> True

47. 检查一个字符串是否仅仅包含字母?

你可以使用 isalpha()。

'123a'.isalpha()
#=> False
'a'.isalpha()
#=> True

48. 检查字符串是否只包含数字和字母?

你可以使用 isalnum()。

'123abc...'.isalnum()
#=> False
'123abc'.isalnum()
#=> True

49. 从字典返回键列表

这可以通过将字典传递给 Python 的 list() 构造函数 list() 来完成。

d = {'id':7, 'name':'Shiba', 'color':'brown', 'speed':'very slow'}
list(d)
#=> ['id', 'name', 'color', 'speed']

50. 如何将一个字符串转化为全大写和全小写?

你可以使用 upper() 和 lower() 字符串方法。

small_word = 'potatocake'
big_word = 'FISHCAKE'
small_word.upper()
#=> 'POTATOCAKE'
big_word.lower()
#=> 'fishcake'
页面: 1 2 3 4 5 6

《53 个 Python 面试问题与答案》有2个想法

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注