python面試模擬真題講解


一、選擇題(32分)

1、python不支持的數據類型有:(A)

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

2、x = “foo”

     y = 2

     print(x+y)                               (E)

  A.foo   B.foofoo   C.foo2   D.2   E.An exception is thrown

  解釋:不同數據類型不可以相加,但是字符串可以與數字相乘,以上例題若改為print(x*y),結果為B答案

3、關於字符串下列說法錯誤的是:(B)

  A、字符應該視為長度為1的字符串            B、字符串以\0標志字符串的結束  

  C、既可以用單引號,也可以用雙引號創建字符串    D、在三引號字符串中可以包含換行回車等特殊字符

4、以下不能創建一個字典的語句是:(C)

  A、dic1 = {}    B、dic2 = {123:345}    C、dic3 = {[1,2,3]:'uestc'}    D、dic3 = {(1,2,3):'uestc'}

    解釋:字典的key值必須為不可變數據類型

5.答案為:(D)

Kvps = {‘1’:1,’2’:2}
theCopy = kvps
kvps[‘1’] = 5
sum = kvps[‘1’] + theCopy[‘1’]
Print sum

  A.1   B.2   C.7   D.10

    解釋:kvps與thecopy是賦值關系,指向的為同一個內存地址,一個發生變化,則均會發生變化

6、以下何者是不合法的布爾表達式:(B)

  A.x in range(6)   B.3=a  C.e>5 and 4==f   D(x-6)>5

    解釋:py2中range()為列表類型,xrange()為一個生成器,py3中只有range(),與py2中的xrange()性質基本相同,A答案在這三種環境中均為合法的bool值,

              bool表達式即有判斷作用的語句,B答案為賦值,無判斷作用

7、下列表達式的值為True的是:(無答案)

  A.5+4j>2-3j   B.3>2>2  C.e>5 and 4==f   D.(x-6)>5

   解釋:A答案為復數,復數不可以比大小

8、已知x=43,ch=‘A’,y = 1,則表達式(x>=y and ch<‘b’ and y)的值是:(B)

  A、0   B、1   C、出錯  D、True

   解釋:結果與y值相同,若表達式改為:(x>=y and ch<‘b’ and y>0),則結果為:True

9、下列表達式中返回 為True的是:(C)

  A、3>2>2  B、’abc’>’xyz’  C、0x56 >56  D、(3,2)<(‘a’,’b’)

   解釋:A、B結果為False,正確答案為C,十六進制數字比十進制大,D答案不合法,int與str數據類型不可以比較,若改為('a',2)<('b',3)則輸出True

10、下列Python語句正確的事:(AD)

  A、min = x if x < y else y    B、max = x > y ? x : y (c語言三元運算符) C、if(x>y) print(x)    D、while True:pass

11.若k為整形,下述while循環執的次數為:(A)

k=1000
  while k>1:
    print k
    k=k/2

  A.9   B.10  C.11   D.100

    解釋:通過print語句判斷為py2中代碼,py2中除法為向下取整

12、以下敘述正確的是:(B)

  A、continue語句的作用是結束整個循環的執行               B、只能在循環體內使用break語句

  C、在循環體內使用break語句或continue語句的作用相同    D、從多層循環嵌套中退出時,只能使用goto語句

13、關於python中的復數,下列說法錯誤的是:(B)

   A、表示復數的語法是real+image j   B、實部和虛部都是浮點數  C、虛部必須后綴j且j不區分大小寫  D、方法conjugate返回復數的共軛復數

14、下面的語句哪個會無限循環下去:(B)  

  A、for a in range(10):

      time.sleep(10)

  B、while 1<10:

      time.sleep(10)

  C、while True:

      break

  D、a = [3,-1,',']

     for i in a[:]:

       if not a:

         break

 

15、下面的代碼,哪些會輸出1,2,3三個數字(多選,選錯不得分):(BD)

  A 、for i in range(3):

      print(i)

  B、aList = [0,1,2]

        for i in aList:

      print(i+1)

  C、i = 1

          while i < 3:

      print(i) i+=1

  D、for i in range(3):

       print(i+1)

16、Python如何定義一個函數:(C)

  A、class <name>(<type> arg1,<type> arg2,…<type> argN)     B、function <name>(arg1,arg2,…argN)

  C、def <name>(arg1,arg2,…argN)                  D、def <name>(<type> arg1,<type> arg2,…<type> argN)

二、填空題(10分)

1、以下函數需要在其中飲用一個全局變量k,請填寫語句: def fun():

                                                                                                 _____#global.k

                                                                                                 k = k+1

2、L=range(100)   #生成器可以可以直接作為列表取值

  1) 取第一到第三個元素_______L[0:4]

  2) 取倒數第二個元素_______L[-2]

  3) 取后十個元素_______L[-10:]

  4) 把L復制給L1用_______L1=L.copy()

3、判斷dict有沒有某個key用的方法是_______dic.get(key)

4、獲取list的元素個數,和向末尾追加元素的方法分別是______len() _______append()

5.以下的代碼的輸出將是什么: _______

復制代碼
def extendList(val,list=[]):
     list.append(val)
     return list
list1 = extendList(10)
list2 = extendList(123, [])
list3 = extendList('a')
print('list1 = % s' %list1)              #輸出結果為:list1 = [10, 'a']
print('list2 = % s' %list2)              #輸出結果為:list2 = [123]
print('list3 = % s' %list3)              #輸出結果為:list3 = [10, 'a']
復制代碼

   解釋:函數中可變默認參數存在陷阱,重復調用會使原默認參數發生變化

6.下 程序的輸出結果是:_________yes

復制代碼
x=True
y=False
z=False
if x or y and x: 
    print "yes"
else:
    print "no"
復制代碼

三、簡答題(20分)

1、如何判斷一個變量是不是字符串。------if type(name)==str

2、is 和 == 的區別。

3、Python 如何實現tuple和list的轉換。------tuple(),list()

4、list和tuple有什么不同。------list為可變數據類型,tuple為不可變數據類型

5、如何得到列表list的交集與差集。------利用set(),將列表轉換為集合數據類型,利用difference()方法求差集,利用intersection()方法求交集

6、Python中定義函數時如何書寫可變參數和關鍵字參數?------順序為(位置參數,*args,關鍵參數,**kwargs)

7、*args和**kwargs在什么情況下會使 到?請給出使 **kwargs的事例------定義函數時參數不確定時用,例裝飾器

8、請描述unicode,utf-8,gbk等編碼之間的關系?

9、如何使用python刪除一個文件

  import os

  os.remove(‘file’)

10、def func(a,b,*args,c=0,**kwargs):pass ,*args,**kwargs的作用是什么?

四、寫代碼(38分)

1、d={‘a’:1,’b’:2,’c’:3}請打印出key、value對(3分)

復制代碼
#思路一:
d={'a':1,'b':2,'c':3}
for i in d:
    print(i,d[i])
#思路二:
d = {'a': 1, 'b': 2, 'c': 3}
for a,b in d.items():
    print(a, b)
復制代碼

2、請寫出 段Python代碼實現刪除 個list  的重復元素。(6分)

復制代碼
#方法一:
li=[1,'a',2,4,2,'a']
se=set(li)
li=list(se)
print(li)
#方法二:
li=[1,'a',2,4,2,'a']
result=[]
for i in range(0,len(li)):
    for j in range(i+1,len(li)):
        if li[i]==li[j]:
            result.append(li[i])
for i in li:
    if i not in result:
        result.append(i)
print(result)
復制代碼

3、使 Python/C 上機解決以下題 (13分)

1)、斐波那契數列1,2,3,5,8,13,21.....根據這樣的規律,編程求出400萬以內最大的斐波那契數,並求出他是第 個斐波那契數。

li=[1,2]
while li[-1]<4000000:
    li.append(li[-1]+li[-2])
del li[-1]
print(li[-1])
print(len(li))

2)、dicta = {"a":1,"b":2,"c":3,"d":4,"f":"hello"} ,dictb = {"b":3,"d":5,"e":7,"m":9,"k":"world"}

  要求寫 段代碼,實現兩個字典的相加,不同的key對應的值保留,相同的key對應的值相加后保留,如果是字符串就拼接,如上 例得到結果為:

  dictc = {"a":1,"b":5,"c":3,"d":9,"e":7,"m":9,"f":"hello","k":"world"}

復制代碼
dicta={'a':1,'b':2,'c':3,'d':4,'f':'hello'}
dictb={'b':3,'d':5,'e':7,'m':9,'k':'world'}
dic={}
for key1 in dicta:
    for key2 in dictb:
        if key1==key2:
            dic[key1]=dicta[key1]+dictb[key2]
for a in dicta:
    if a not in dic:
        dic[a]=dicta[a]
for b in dictb:
    if b not in dic:
        dic[b]=dictb[b]
print(dic)
復制代碼

5、什么是裝飾器?寫 個裝飾器,可以打印輸出 法執 時長的信息(8分)

   裝飾器:在不修改原函數內容及調用方式上,實現函數的功能擴展

復制代碼
import time
def timmer(func):
    def inner(*args,**kwargs):
        start=time.time()
        ret=func(*args,**kwargs)
        end=time.time()
        print(end-start)
        return ret
    return inner
@timmer
def name(a,b):
    print('%s+%s等於%s' %(a,b,a+b))
name(3,5)
復制代碼

6、請寫出log的實現(主要功能是打印函數名)(8分)

  @log

  def now():

    print ‘2017-08-31’

  >>>now()

  輸出: call now():

  2017-08-31

復制代碼
def log(func):
    def inner(*args,**kwargs):
        print('call %s()' %func.__name__)
        ret=func(*args,**kwargs)
        return ret
    return inner
@log
def now():
    print('2017-08-31')
now()
復制代碼

復制代碼
data={'time':'2016-08-05T13;13:05',
      'some_ID':'ID1234',
      'graps1':{'fld1':1,'fld2':2},
      'xxx2':{'fld3':0,'fld5':0.4},
      'fld6':11,
      'fld7':7,
      'fld':8
}
# 類遞歸思想  # 棧的思想
fields = 'fld2|fld3|fld7|fld9'
fields_lst = fields.split('|')  #['fld2', 'fld3', 'fld7', 'fld9']
result = {}
data_lst = [1]
while data != 1:
      for key in data:
            if key in fields_lst:
                 result[key] = data[key]
            if type(data[key]) == dict:
                  data_lst.append(data[key])
      data = data_lst.pop()  
print(result)
復制代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM