您好,登錄后才能下訂單哦!
雖然明天就是中秋節了,而我依然在電腦面前碼字,寫總結。多寫一些,你們中秋就多學一點,哈哈哈!Python面試題又來咯!找工作的你,還不趕緊看。
一 .反轉一個整數,例如-123 --> -321
class Solution(object): def reverse(self,x): if -10<x<10: return x str_x = str(x) if str_x[0] !="-": str_x = str_x[::-1] x = int(str_x) else: str_x = str_x[1:][::-1] x = int(str_x) x = -x return x if -2147483648<x<2147483647 else 0 if __name__ == '__main__': s = Solution() reverse_int = s.reverse(-120) print(reverse_int)
二 .設計實現遍歷目錄與子目錄,抓取.pyc文件?
第一種方法:
import os def get_files(dir,suffix): res = [] for root,dirs,files in os.walk(dir): for filename in files: name,suf = os.path.splitext(filename) if suf == suffix: res.append(os.path.join(root,filename)) print(res) get_files("./",'.pyc')
第二種方法:
import os def pick(obj): if ob.endswith(".pyc"): print(obj) def scan_path(ph): file_list = os.listdir(ph) for obj in file_list: if os.path.isfile(obj): pick(obj) elif os.path.isdir(obj): scan_path(obj) if __name__=='__main__': path = input('輸入目錄') scan_path(path)
第三種方法
from glob import iglob def func(fp, postfix): for i in iglob(f"{fp}/**/*{postfix}", recursive=True): print(i) if __name__ == "__main__": postfix = ".pyc" func("K:\Python_script", postfix)
三 .Python-遍歷列表時刪除元素的正確做法
遍歷在新在列表操作,刪除時在原來的列表操作
a = [1,2,3,4,5,6,7,8] print(id(a)) print(id(a[:])) for i in a[:]: if i>5: pass else: a.remove(i) print(a) print('-----------') print(id(a)) #filter a=[1,2,3,4,5,6,7,8] b = filter(lambda x: x>5,a) print(list(b))
列表解析
a=[1,2,3,4,5,6,7,8] b = [i for i in a if i>5] print(b)
倒序刪除
因為列表總是‘向前移’,所以可以倒序遍歷,即使后面的元素被修改了,還沒有被遍歷的元素和其坐標還是保持不變的
a=[1,2,3,4,5,6,7,8] print(id(a)) for i in range(len(a)-1,-1,-1): if a[i]>5: pass else: a.remove(a[i]) print(id(a)) print('-----------') print(a)
四 .字符串的操作題目
全字母短句 PANGRAM 是包含所有英文字母的句子,比如:A QUICK BROWN FOX JUMPS OVER THE LAZY DOG. 定義并實現一個方法 get_missing_letter, 傳入一個字符串采納數,返回參數字符串變成一個 PANGRAM 中所缺失的字符。應該忽略傳入字符串參數中的大小寫,返回應該都是小寫字符并按字母順序排序(請忽略所有非 ACSII 字符)
下面示例是用來解釋,雙引號不需要考慮:
(0)輸入: “A quick brown for jumps over the lazy dog”
返回: “”
(1)輸入: “A slow yellow fox crawls under the proactive dog”
返回: “bjkmqz”
(2)輸入: “Lions, and tigers, and bears, oh my!”
返回: “cfjkpquvwxz”
(3)輸入: “”
返回:“abcdefghijklmnopqrstuvwxyz”
def get_missing_letter(a): s1 = set("abcdefghijklmnopqrstuvwxyz") s2 = set(a) ret = "".join(sorted(s1-s2)) return ret print(get_missing_letter("python"))
五 .可變類型和不可變類型
1,可變類型有list,dict.不可變類型有string,number,tuple.
2,當進行修改操作時,可變類型傳遞的是內存中的地址,也就是說,直接修改內存中的值,并沒有開辟新的內存。
3,不可變類型被改變時,并沒有改變原內存地址中的值,而是開辟一塊新的內存,將原地址中的值復制過去,對這塊新開辟的內存中的值進行操作。
六 .is和==有什么區別?
is:比較的是兩個對象的id值是否相等,也就是比較倆對象是否為同一個實例對象。是否指向同一個內存地址
== : 比較的兩個對象的內容/值是否相等,默認會調用對象的eq()方法
七 .求出列表所有奇數并構造新列表
a = [1,2,3,4,5,6,7,8,9,10] res = [ i for i in a if i%2==1] print(res)
八 .用一行python代碼寫出1+2+3+10248
from functools import reduce #1.使用sum內置求和函數 num = sum([1,2,3,10248]) print(num) #2.reduce 函數 num1 = reduce(lambda x,y :x+y,[1,2,3,10248]) print(num1)
九 .Python中變量的作用域?(變量查找順序)
函數作用域的LEGB順序
1.什么是LEGB?
L: local 函數內部作用域
E: enclosing 函數內部與內嵌函數之間
G: global 全局作用域
B: build-in 內置作用
python在函數里面的查找分為4種,稱之為LEGB,也正是按照這是順序來查找的
十 .字符串 "123" 轉換成 123,不使用內置api,例如 int()
方法一: 利用 str 函數
def atoi(s): num = 0 for v in s: for j in range(10): if v == str(j): num = num * 10 + j return num
方法二: 利用 ord 函數
def atoi(s): num = 0 for v in s: num = num * 10 + ord(v) - ord('0') return num
方法三: 利用 eval 函數
def atoi(s): num = 0 for v in s: t = "%s * 1" % v n = eval(t) num = num * 10 + n return num
方法四: 結合方法二,使用 reduce,一行解決
from functools import reduce def atoi(s): return reduce(lambda num, v: num * 10 + ord(v) - ord('0'), s, 0)
我依然會堅守崗位,繼續更新我的Python面試題。也祝愿大家中秋節快樂啊!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。