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)
#思路二:
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==li[j]:
result.append(li)
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=dictb
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