python的一些面试题(2)

4.Python Ctrl+C会引发什么类型的异常

正在运行的程序发送Ctrl+C键盘消息会引发KeyBoardInterrupt异常,他的基类异常是BaseException。

5.编写一个测试回文,从左往右读和从右往左读结果一样

#-*- coding: utf-8 -*-

#直接翻转列表
tmp = 'axxa'
print tmp == tmp[::-1]

x = [1,1,1,]
print x,reversed(x),type(reversed(x))
print x == list(reversed(x))

def isEques(tmp):
    flag = True
    lens = len(tmp)
    count = 0
    while count < lens/2:
        if tmp[count] != tmp[lens - count -1]:
            flag = False
        count += 1
        if not flag:
            break
    if flag:
        print "{} 是回文".format(tmp)
    else:
        print "{} 不是回文".format(tmp)

isEques('axxxxxxxxxxxxxxxxxa')
isEques('axxddxxa')

6.斐波那契数列的三种实现方式

  • 函数递归
  • while 或者 for 循环
  • yield 生成器的方式
#-*- coding: utf-8 -*-

#斐波那契数列的几种实现方式


#递归
def feibonaqie(x):
    if x == 1 or x == 2:
        return x
    return feibonaqie(x -1) + feibonaqie(x - 2)

res = list()

for i in range(1,12):
    res.append(feibonaqie(i))
    # print feibonaqie(i)
print res


#循环的方式实现
def fba(n):
    b,a = 1,1
    res = list()
    if n <= 2:
        res.append(1)
    else:
        # res.append(1)
        for _ in range(1,n - 1):
            a,b = b,a+b
            res.append(a)
    return res
print fba(13)

#生成器的方式实现

def febyil(n):
    i,num1,num2 = 0,1,1
    while i < n - 1:
        yield num2
        i += 1
        num1,num2 = num2,num1+num2
print febyil(13)
print list(febyil(13))
原文地址:https://www.cnblogs.com/sening/p/10289566.html