Matrix工作室第六届纳新AI组考核题(B卷)
一、單選題
A、set
B、list
C、tuple
D、dict
Python標準的內置數據類型有:
Number(整數型 int , 浮點數型 float, 布爾型 bool , 復數 complex)
String List Tuple Set Dictionary
Python可變數據類型:可改變變量的值,且不會新建對象
List、Dictionary、Set
Python不可變數據類型:不允許變量的值發生改變,發生改變時會新建對象
Tuple、String、Number
A、int32
B、40XL
C、self
D、name
python中的標識符:
1)第一個字符必須是字母表中字母或下劃線 _ 。
2)標識符的其他的部分由字母、數字和下劃線組成。
3)標識符對大小寫敏感。
4)不可以是python中的關鍵字,如False、True、None、class等。
注意:self不是python中的關鍵字。類中參數self也可以用其他名稱命名,但是為了規范和便于讀者理解,推薦使用self。
A、5
B、6
C、7
D、8
index()方法語法:
str.index(str, beg=0, end=len(string))參數
- str -- 指定檢索的字符串
- beg -- 開始索引,默認為0。
- end -- 結束索引,默認為字符串的長度。
從Hello開始數到p截止,從下標0開始數
A、表是復數的語法是real + image j
B、實部和虛部都是浮點數
C、虛部必須后綴j,且必須小寫
D、方法conjugate返回復數的共軛復數
2復數由實數部分和虛數部分構成
3表示虛數的語法: real+imagj
4 實數部分和虛數部分都是浮點數
5 虛數部分必須有后綴 j 或 J
A、正在裝飾 正在驗證權限
B、正在裝飾
C、正在驗證權限
D、運行錯誤
A、None 18
B、None None
C、編譯錯誤
D、運行錯誤
本題考查的是字典的 get 方法
dict.get(key, value=None)
當value的值存在時返回其本身,當key的值不存在時返回None(即默認參數)。
A、‘GNU’s Not %d %%’ % ‘UNIX’
B、‘GNU’s Not %d %%’ % ‘UNIX’
C、‘GNU’s Not %s %%’ % ‘UNIX’
D、‘GNU’s Not %s %%’ % ‘UNIX’
python里面%d表數字,%s表示字符串,%%表示一個%;
單引號內嵌套單引號需要轉義字符/;單引號內嵌套雙引號不需要嵌套;
雙引號內嵌套雙引號需要轉義字符/;雙引號內引用單引號不需要轉義字符;
A、rb
B、wb
C、ab
D、a
b 二進制模式
r 只讀,指針將會放在文件的開頭
rb 二進制只讀,指針將會放在文件的開頭
r+ 讀寫,指針將會放在文件的開頭
rb+ 二進制讀寫,指針將會放在文件的開頭
w 寫入, 如果該文件已存在則打開文件,并從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件
wb 二進制寫入,如果該文件已存在則打開文件,并從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。一般用于非文本文件如圖片等
w+ 讀寫,如果該文件已存在則打開文件,并從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。
wb+ 二進制讀寫,如果該文件已存在則打開文件,并從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。一般用于非文本文件如圖片等
a 追加,如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之后。如果該文件不存在,創建新文件進行寫入
ab 二進制追加,如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之后。如果該文件不存在,創建新文件進行寫入
a+ 讀寫,如果該文件已存在,文件指針將會放在文件的結尾。文件打開時會是追加模式。如果該文件不存在,創建新文件用于讀寫。
ab+ 二進制讀寫,如果該文件已存在,文件指針將會放在文件的結尾。如果該文件不存在,創建新文件用于讀寫。
A、True
B、False
C、語法錯誤
D、F
str.endswith(suffix[, start[, end]]) 用于判斷字符串是否以指定后綴結尾,如果以指定后綴結尾返回True,否則返回False。
可選參數"start"與"end"為檢索字符串的開始與結束位置。
A、read()
B、readline()
C、readlines()
D、readclose()
1.read([size])方法從文件當前位置起讀取size個字節,若無參數size,則表示讀取至文件結束為止,它范圍為字符串對象。
2.readline()方法每次讀出一行內容,所以,讀取時占用內存小,比較適合大文件,該方法返回一個字符串對象。
3.readlines()方法讀取整個文件所有行,保存在一個列表(list)變量中,每行作為一個元素,但讀取大文件會比較占內存。
A、x = y = z = 1
B、x = (y = z + 1)
C、x, y = y, x
D、x += y
y = z + 1 的結果沒有返回值,就無法賦值到 x
A、foo(2) == 12
B、foo(3) == 12
C、foo(2) == 6
D、foo(3) == 6
@dec 裝飾器,先執行dec(), 并將 @dec 下面的 函數 作為dec()的參數。 (裝飾器的作用:為已經存在的對象添加額外的功能)
foo(n) = n * 2 * 3
print_module.py的代碼如下:
import print_func print("Done!")執行結果為(A)
A、Hello World! __name__ value: print_func Done!
B、Hello World! __name__ value: print_module Done!
C、Hello World! __name__ value: __main__ Done!
D、Hello World! __name__ value: Done!
自己運行自己的程序,__name__ 即為__main__
當程序當做腳本被別人調用運行時,其__name__ 為自己的模塊名稱
這里的print_func即被導入到print_module中當做腳本被運行時,則print_func的__name__即變為其自身的模塊名。
A、[1, 6, 9]
B、[1, 12, 27]
C、[1, 8, 27]
D、(1, 6, 9)
map()接收兩個參數,一個是功能函數f,一個list,并將f依次作用在list的每個元素上,并返回一個新的list,a**b是求a的b次方的意思
A、10
B、12
C、14
D、16
adder(5) #返回了 wrapper ,且x=5
adder5 = adder(5) # adder5是對wrapper的引用 此時x等于5
adder5(6) # 相當于 wrapper(6) = 5+6=11 所以 adder5(6) =11 ,同理adder5(7)=12
adder5(adder5(6)) # = adder5(11) = wrapper(11) =5+11=16
二、多選題
A、foo 值為[1,2]
B、foo 值為[1,2,3]
C、foo1 值為[1,2]
D、foo1 值為[1,2,3]
foo1 = foo為淺表復制,也稱為淺拷貝,只是將foo1和foo指向相同存儲地址。
在foo中追加3后,二者都改變。
如果不想改變foo1,我們可使用deepcooy進行深拷貝,復制出一份foo表在新的內存中存儲,并由foo1指向該地址,此時再對foo進行操作,foo1不會改變。
A、a[1:-1]
B、a*3
C、a[2] = 4
D、list(a)
a[1:-1] ---->(2,)
a*3---->(1,2,3,1,2,3,1,2,3)
a是元組不可改變
list(a)----->[1,2,3]數組和列表可以相互轉換
A、2
B、3
C、4
D、5
2:if bit == 0 or bit == 1:
4:else:
A、非獨立
B、效率低
C、獨立
D、效率高
解釋性語言和編譯性語言的定義:
計算機不能直接理解高級語言,只能直接理解機器語言,所以必須要把高級語言翻譯成機器語言,計算機才能執行高級語言編寫的程序。
翻譯的方式有兩種,一個是編譯,一個是解釋。兩種方式只是翻譯的時間不同。
解釋性語言的定義:
解釋性語言的程序不需要編譯,在運行程序的時候才翻譯,每個語句都是執行的時候才翻譯。這樣解釋性語言每執行一次就需要逐行翻譯一次,效率比較低。
現代解釋性語言通常把源程序編譯成中間代碼,然后用解釋器把中間代碼一條條翻譯成目標機器代碼,一條條執行。
編譯性語言的定義:
編譯性語言寫的程序在被執行之前,需要一個專門的編譯過程,把程序編譯成為機器語言的文件,比如exe文件,以后要運行的話就不用重新翻譯了,直接使用編譯的結果就行了(exe文件),因為翻譯只做了一次,運行時不需要翻譯,所以編譯型語言的程序執行效率高。
A、函數可以賦值給一個變量
B、函數可以作為元素添加到集合對象中
C、函數可以作為參數值傳遞給其它函數
D、函數可以當做函數的返回值
https://www.cnblogs.com/smallmars/p/6936871.html
三、簡答題
(1)指定url
(2)基于requests模塊發起請求
(3)獲取響應對象中的數據
(4)數據解析
(5)持久化存儲
(1)驗證碼
爬蟲采集器優化方案:使用打碼平臺識別驗證碼。
(2)限制IP訪問頻率
分析:沒有哪個正常人可以在一秒鐘內能訪問相同網站數十次次,除非是程序訪問,也就是搜索引擎爬蟲和爬蟲采集器。
弊端:一刀切,這同樣會阻止搜索引擎對網站的收錄
適用網站:不太依靠搜索引擎的網站
爬蟲采集器優化方案:減少單位時間的訪問次數,減低采集效率
(3)UA校驗
分析:服務器端通過檢驗請求的User-Agent來判斷是瀏覽器還是爬蟲程序。
爬蟲采集器優化方案:制作UA偽裝
(4)登錄校驗
分析:搜索引擎爬蟲不會對每個需要登錄的網站設計登錄程序,但爬蟲采集器可以針對某個網站設計模擬用戶登錄提交表單行為。
適用網站:極度討厭搜索引擎,且想阻止大部分采集器的網站
爬蟲采集器優化方案:制作擬用戶登錄提交表單行為的模塊
(5)動態加載頁面
分析:有一部分網站,需要爬取的數據是通過Ajax請求得到的,根據不同的情況動態加載數據。
爬蟲采集器優化方案:基于Selenium+PhantomJS模擬瀏覽器請求。
(6)數據加密
對部分數據進行加密的,可以使用selenium進行截圖,使用python自帶的pytesseract庫進行識別,但是比較慢,最直接的方法是找到加密的方法進行逆向推理。
四、編程題
【問題描述】
一個正整數如果任何一個數位不大于右邊相鄰的數位,則稱為一個數位遞增的數,例如1135是一個數位遞增的數,而1024不是一個數位遞增的數。
給定正整數 n,請問在整數 1 至 n 中有多少個數位遞增的數?
【輸入格式】
輸入的第一行包含一個整數 n。
【輸出格式】
輸出一行包含一個整數,表示答案。
【樣例輸入】
30
【樣例輸出】
26
【評測用例規模與約定】
對于 40% 的評測用例,1 <= n <= 1000。
對于 80% 的評測用例,1 <= n <= 100000。
對于所有評測用例,1 <= n <= 1000000。
計算給定二叉樹的所有左葉子之和。
示例:
3/ \9 20/ \15 7在這個二叉樹中,有兩個左葉子,分別是 9 和 15,所以返回 24
def sumOfLeftLeaves(self, root: TreeNode) -> int:isLeafNode = lambda node: not node.left and not node.rightdef dfs(node: TreeNode) -> int:ans = 0if node.left:ans += node.left.val if isLeafNode(node.left) else dfs(node.left)if node.right and not isLeafNode(node.right):ans += dfs(node.right)return ansreturn dfs(root) if root else 0總結
以上是生活随笔為你收集整理的Matrix工作室第六届纳新AI组考核题(B卷)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows下直接输入nvidia-s
- 下一篇: Matrix工作室第六届纳新AI组考核题