Python基礎知識測試題
# -*- coding: utf-8 -*-
"""
@author: 蔚藍的天空Tom
"""
def ex0():
'''形參會被函數修改內容'''
def addItem(listParam):
listParam += [5,6,7,8]
mylist = [1,2,3,4]
addItem(mylist)
print(mylist) #[1, 2, 3, 4, 5, 6, 7, 8]
print(len(mylist)) #8
def ex1():
'''元素不在列表中時的報錯信息'''
names = ['Tom', 'Kitty', 'John']
names.index('Anna') #會異常報錯ValueError : 'Anna' is not in list
def ex2():
'''lambda的type'''
print(type(lambda:None)) #<class 'function'>
def ex3A():
'''global關鍵字的使用方法'''
#當在函數中使用global關鍵字時,即代表使用的是全局變量。
#這是對該變量的變更,即便是函數結束後,也會存在
counter = 100
def doGlobalThings():
global counter
print(counter) #100
for i in (1,2,3):
counter += i
doGlobalThings()
print('After dGlobalThings:', counter) #106
def ex3B():
'''local關鍵字的使用方法'''
counter = 1000
def doLocalThings():
counter = 2000
for i in (1,2,3):
counter += i
doLocalThings()
print('Aflter doLocalThings:',counter) #1000
def ex4():
'''append方法的使用方法
會將一個對象作爲一個元素添加到列表對象的最右側'''
n = [1,2,3,4]
n.append([5,6,7,8])
print(n) #[1, 2, 3, 4, [5, 6, 7, 8]]
print(len(n)) #5
def ex5():
'''extend方法的使用方法
extend方法會將對象中元素逐個添加到列表對象的最右側
'''
n = [1,2,3,4]
n.extend([5,6,7,8])
print(len(n)) #8
def ex6():
'''
list對象+號操作符的使用,用於連接兩個列表對象,
返回一個新列表中包含兩個列表中的每個元素
'''
a = [1,2,3,4]
b = [5,6,7,8]
c = a + b
print(c) #[1, 2, 3, 4, 5, 6, 7, 8]
print(len(c)) #8
def ex7():
'''
tuple對象一經建立,便無法再對其進行添加、刪除等操作
tuple可以認爲制度的list
'''
mytuple = (1,2,3,4)
mytuple.__add__((6,7))
print(mytuple) #(1, 2, 3, 4)
def ex8():
'''True if condition else False
如果condition成立,則返回True,否則返回Flase
'''
ret = True if 5 != 3 else False
print(ret) #True
ret = False if 5 != 3 else True
print(ret) #False
def ex9():
'''考察if-else'''
x = True;y,z=False,False
if x or y and z:
print('yes') #run this line
else:
print('no')
def ex10():
'''考察lambda定義函數的知識點'''
d = lambda p : p*2
t = lambda p : p*3
x = 2
x = d(x)
x = t(x)
x = d(x)
print(x) #24
def ex11():
'''考察list的元素類型範圍和list長度知識點
'''
ret = len ([1,2,3, None, (),[]])
print('ret:', ret) #6
def ex12():
'''考察def關鍵字定義函數的知識點
'''
def f():
pass
print(type(f())) #<class 'NoneType'>
print(type(f)) #<class 'function'>
def ex13():
'''考察map關鍵字'''
A = [2,3,4,5]
def myfun(x):
return x**2
for i in map(myfun, A):
print(i)
#依次輸出4,9,16,25
def ex14():
'''考察filter關鍵字'''
def check(x):
if x in [1,2,3]:
return True
else:
return False
for i in filter(check, [1,2,1,3,1,4]):
print(i)
#輸出結果是1 2 1 3 1
def ex15():
'''考察class的屬性變量 __dict__'''
class Persion:
def __init__(self, id):
self.id = id
tom = Persion(1)
tom.__dict__['age'] = 22
print(tom.__dict__) #{'age':22, 'id':1}
print(tom.age) #22
print(tom.age + len(tom.__dict__)) #24
def ex16():
'''考察函數的屬性變量__doc__保存的是介紹字符串'''
'''考察序列的切片知識點,A[-8:-2]#取A[-8]~A[-3]'''
def foo():
"This is a coll simple function return 1"
return 1
print(foo.__doc__[-8:-2]) #return
def ex17():
'''主要考察{}生成的是集合set對象'''
foo = {1,2,3,4}
print(type(foo)) #<class 'set'>
foo = (1,2,3,4)
print(type(foo)) #<class 'tuple'>
foo = [1,2,3,4]
print(type(foo)) #<class 'list'>
foo = {'name':'Tome', 'age':18}
print(type(foo)) #<class 'dict'>
def ex18():
foo = {1,2,3,4}
foo = {}
print(len(foo)) #0
def ex19():
'''考察字符串也可以用下標來訪問子集的字符'''
a = ['Tom', 'John', 'Anna', 'David']
print(a[-1][-1]) #d
print(a[-1][0]) #D
def ex20():
def myfunc1(param1, *param2):
print(param2)
print(type(param2)) #<class 'tuple'>, 元組
myfunc1('Tom','Anna','John','Kitty') #('Anna','John','Kitty')
def myfun2(param1, *param2):
for i in param2:
print(i)
myfun2('Tom','Anna','John','Kitty')
#依次輸出Anna John Kitty
def ex21():
'''考察可擴展形參的知識點
'''
def myfunc(x,y,z,t):
print(x+y)
n = [1,2,3,4]
myfunc(*n) #3
def myfunc2(*param):
print(param[0] + param[1]) #3
n = [1,2,3,4]
myfunc2(*n)
def ex22():
'''考察方法getattr()和setattr()'''
class CA:
def __init__(self,a,b,c):
self.x = a+b+c
a = CA(10,100,1000)
b = getattr(a, 'x')
setattr(a,'x',b+2)
print(a.x) #1112
def ex23():
'''考察字典dict的update方法
'''
d1 = {'1':1, '2':2, '3':3, '4':4, '5':5}
d2 = {'1':10, '3':30}
d1.update(d2)
print(d1)#{'1': 10, '2': 2, '3': 30, '4': 4, '5': 5}
def ex24():
'''dcpy = dict(d),
修改d--->不會修改dcpy
修改dcpy---->不會修改d
'''
d = {'1':1, '2':2}
dcpy = dict(d) #{'1':1, '2':2}
d['1'] = 100
ret = d['1'] + dcpy['1'] #ret=100+1=101
dcpy['2'] = 200
ret = d['2'] + dcpy['2'] #ret=2+200=202
print(ret)
def ex25():
'''isintance()方法的使用'''
a = [1,'2', 3]
total = 0
for i in a:
if isinstance(i, int):
total += i
print(total) #4
def ex26():
'''from copy import deepcopy的使用知識點
b = copy.deepcopy(a)
a修改--->不會修改b
b修改--->不會修改a
'''
import copy
a = [1,2,3,[4,5,6]]
b = copy.deepcopy(a)
b[-1].append(100)
#a=[1, 2, 3, [4, 5, 6]]
#b=[1, 2, 3, [4, 5, 6, 100]]
a[-1].append(200)
#a=[1, 2, 3, [4, 5, 6, 200]]
#b=[1, 2, 3, [4, 5, 6, 100]]
def ex27():
'''from copy import copy的使用知識點
b = copy.copy(a)
a修改--->會修改b
b修改--->會修改a
'''
import copy
a = [1,2,3,[4,5,6]]
b = copy.copy(a)
b[-1].append(100)
#a=[1, 2, 3, [4, 5, 6, 100]]
#b=[1, 2, 3, [4, 5, 6, 100]]
a[-1].append(200)
#a=[1, 2, 3, [4, 5, 6, 200]]
#b=[1, 2, 3, [4, 5, 6, 200]]
def ex28():
'''考察str.join(lst)
序列中元素輸出時,中間以'\t'或'\n','字符串'輸出
'''
names = ['Tom','Kitty','Anna']
print('\n'.join(names))#讓names中元素按行輸出
#Tom
#Kitty
#Anna
print('\t'.join(names))#讓names中元素按\t輸出
#Tom Kitty Anna
print('---'.join(names))#讓names中元素間隔'---'輸出
#Tom---Kitty---Anna
def ex29():
'''
'''
boxes, jars, crates = {}, {}, {} #{}賦初值時類型是<class 'dict'>
boxes['cereal'] = 1
boxes['candy'] = 2
jars['honey'] = 4
crates['boxes'] = boxes
crates['jars'] = jars
len(crates[boxes]) #異常報錯TypeError: unhashable type: 'dict'
if __name__=='__main__':
ex()