1、下列代碼運行結果是?
a = map(lambda x: x**3, [1, 2, 3])
list(a)
[1, 8, 27]
2、Which numbers are printed?()
for i in range(2):
print i
for i in range(4,6):
print i
0, 1, 4, 5 答:range,左閉右開,range(2)輸出的是0,1,range(4,6)表示在4和6之間左閉右開,是4,5
range()函數的語法如下:
range(start, end[, step])
參數說明:
start: 計數從 start 開始。默認是從 0 開始。例如 range(5) 等價於 range(0, 5);
end: 計數到 end 結束,但不包括 end。例如:range(0, 5) 等於 [0, 1, 2, 3, 4],沒有5;
step:步長,默認為1。例如:range(0, 5) 等價於 range(0, 5, 1)
詳情請參考:
http://www.runoob.com/python/python-func-range.html
因此上述代碼實際將輸出:
0
1
4
5
3、for i in range(2):
print i
for i in range(4,6):
print I
打印的結果是()
0, 1, 4, 5
4、下列哪種不是Python元組的定義方式?
(1)
(1, )
(1, 2)
(1, 2, (3, 4))
Python 中的 tuple 結構為 “不可變序列”,用小括號表示。為了區別數學中表示優先級的小括號,當 tuple 中只含一個元素時,需要在元素后加上逗號。
>>> print(type((1,)))
<class 'tuple'>
>>> print(type((1)))
<class 'int'>
5、What gets printed?()
print r"\nwoow"
the text like exactly like this: \nwoow 前導標識符 r 不會被輸出,只起標記作用,r代表不被轉義
Python 中字符串的前導 r 代表原始字符串標識符,該字符串中的特殊符號不會被轉義,適用於正則表達式中繁雜的特殊符號表示。
最典型的例子,如要輸出字符串 \n,由於反斜杠的轉義,因此一般的輸出語句為:
print "\\n"
這里的 \\ 將被轉義為 \ 。而采用原始字符串輸出時,則不會對字符串進行轉義:
print r"\n"
因此本題答案為 C,輸出 \nwoow 。注意前導標識符 r 不會被輸出,只起標記作用。
6、以下聲明錯誤的是:D
A、dic = {}
B、dic = {100:200}
C、dic = {(1,2,3):'test'}
D、dic = {[1,2,3]:'test'}
字典的鍵值必須是不可變類型,如數字,字符串,元組,而列表是可變類型。
可變(mutable)對象類型 :list、dict、set、bytearray、user-defined classes (unless specifically made immutable)
不可變(immutable)對象類型: int、float、decimal、complex、bool、str、tuple、range、frozenset、bytes
7、對於以下代碼,描述正確的是:
list = ['1', '2', '3', '4', '5']
print list[10:]
A、導致 IndexError
B、輸出['1', '2', '3', '4', '5']
C、編譯錯誤
D、輸出[]
切片操作不會引起下標越界異常
索引會報錯,如list[10], list index out of range,而切片不會,只會給空列表如list[10:11]結果是空列表
8、下列程序運行結果為:
a=[1, 2, 3, 4, 5]
sums = sum(map(lambda x: x + 3, a[1::3]))
print(sums)
13
a=[1, 2, 3, 4, 5]
sums = sum(map(lambda x: x + 3, a[1::3]))
'''
a[1::3]意思是切片取值
a[1]=2,
: 代表取值到列表結尾,3為步長 ,取值結果為[2,5]
lambda 匿名函數 返回x+3,則為[5,8],再求合13
'''
print(sums)
a[1::3]的意思是,從下標1開始步長為3的元素,在這道題里也就是2、5;
兩個冒號中間的數字代表從開始到小於該下標,留空則直到結尾,比如a[0:4:1]則是從下標0開始到下標4之間步長為1的元素。
這是Python里面的切片步長寫法,它的原始形式應該是這樣的:[start: end : step]
表示“從開始索引位置的那個值計算,經過多少步長到結束索引位置”,有時候end會被省略。
所以這里就表示從索引為1的(a=[1, 2, 3, 4, 5])數字,就是這里的2(因為索引都是從0開始計算)開始計算 三步,下一個就是5。
9、有如下類定義,下列描述錯誤的是? D
class A(object):
pass
class B(A):
pass
b = B()
A、isinstance(b, A) == True
B、isinstance(b, object) == True
C、issubclass(B, A) == True
D、issubclass(b, B) == True
abc isinstance(object,classinfo),用於判斷object是否是classinfo的一個實例,或者object是否是classinfo類的子類的一個實例,如果是返回True. issubclass(class,classinfo),用於判斷class是否是classinfo類的子類,如果是返回True.
新式類:class 類(object基類)
繼承類:class 子類(父類1[,父類2,父類3])#在繼承元組中列了一個以上的類,那么它就被稱作"多重繼承"
class A(object):#新式類,相當於A繼承object基類
pass
class B(A):#B類繼承A類
pass
b = B()#實例化
10、已知print_func.py的代碼如下:
print('Hello World!')
print('__name__ value: ', __name__)
def main():
print('This message is from main function')
if __name__ == '__main__':
main()
print_module.py的代碼如下:
import print_func
print("Done!")
運行print_module.py程序,結果是:
Hello World!
__name__ value: print_func
Done!
如果是直接執行print_func文件,則__name__的值為__main__;
如果是以導入模塊的形式執行print_func文件,則__name__的值為該文件名print_func。
__name__的目的就是如果是以導入模塊的形式執行文件,不會執行if __name__ == '__main__'下面的語句。