溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

關(guān)于Python基礎(chǔ)的面試題及解決方法

發(fā)布時間:2020-08-05 17:23:09 來源:億速云 閱讀:144 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關(guān)關(guān)于Python基礎(chǔ)的面試題及解決方法的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。

=

1、python遞歸的最大層數(shù)?

998

2、求結(jié)果(and or or)

1. 求結(jié)果:1 or 3
print(1 or 3)  # 1
2. 求結(jié)果:1 and 3
print(1 and 3)  # 3
3. 求結(jié)果:0 and 2 and 1
print(0 and 2 and 1)  # 0
4. 求結(jié)果:0 and 2 or 1
print(0 and 2 or 1)  # 1
5. 求結(jié)果:0 and 2 or 1 or 4
print(0 and 2 or 1 or 4)  # 1
6. 求結(jié)果:0 or Flase and 1
print(0 or False and 1)  # Flase
總結(jié):
  # x or y 如果 x為真,則值為x,   否則為y
  # x and y 如果 x 為真,則值為 y,否則為 x

運(yùn)算符

1. 求結(jié)果:2 & 5

print(2 & 5)  # 10 & 101 => 000 => 0

2. 求結(jié)果:2 ^ 5

print(2 ^ 5)  # 10 ^ 101 => 111 => 1*2**0+1*2**1+1*2**2=1+2+4=7

13、ascii、unicode、utf-8、gbk 區(qū)別

python2內(nèi)容進(jìn)行編碼(默認(rèn)ascii),而python3對內(nèi)容進(jìn)行編碼的默認(rèn)為utf-8。
ascii   最多只能用8位來表示(一個字節(jié)),即:2**8 = 256,所以,ASCII碼最多只能表示 256 個符號。
unicode  萬國碼,任何一個字符==兩個字節(jié)
utf-8    萬國碼的升級版  一個中文字符==三個字節(jié)   英文是一個字節(jié)  歐洲的是 2個字節(jié)
gbk      國內(nèi)版本  一個中文字符==2個字節(jié)   英文是一個字節(jié)
gbk 轉(zhuǎn) utf-8  需通過媒介 unicode

4、字節(jié)碼和機(jī)器碼的區(qū)別

機(jī)器碼,學(xué)名機(jī)器語言指令,有時也被稱為原生碼,是電腦的CPU可直接解讀的數(shù)據(jù)。
字節(jié)碼是一種中間狀態(tài)(中間碼)的二進(jìn)制代碼(文件)。需要直譯器轉(zhuǎn)譯后才能成為機(jī)器碼。
什么是機(jī)器碼
機(jī)器碼(machine code),學(xué)名機(jī)器語言指令,有時也被稱為原生碼(Native Code),是電腦的CPU可直接解讀的數(shù)據(jù)。
通常意義上來理解的話,機(jī)器碼就是計(jì)算機(jī)可以直接執(zhí)行,并且執(zhí)行速度最快的代碼。
總結(jié):機(jī)器碼是電腦CPU直接讀取運(yùn)行的機(jī)器指令,運(yùn)行速度最快,但是非?;逎y懂,也比較難編寫
什么是字節(jié)碼
字節(jié)碼(Bytecode)是一種包含執(zhí)行程序、由一序列 op 代碼/數(shù)據(jù)對 組成的二進(jìn)制文件。
字節(jié)碼是一種中間碼,它比機(jī)器碼更抽象,需要直譯器轉(zhuǎn)譯后才能成為機(jī)器碼的中間代碼。
總結(jié):字節(jié)碼是一種中間狀態(tài)(中間碼)的二進(jìn)制代碼(文件)。需要直譯器轉(zhuǎn)譯后才能成為機(jī)器碼。
-----------
#is  比較的是內(nèi)存地址
#== 比較的是值
# int     具有范圍:-5---256
#對于int 小數(shù)據(jù)池
 范圍:-5----256 創(chuàng)建的相間的數(shù)字,都指向同一個內(nèi)存地址
#對于字符串 (面試)
1、小數(shù)據(jù)池 如果有空格,那指向兩個內(nèi)存地址,
2、長度不能超過 20
3、不能用特殊字符
i = 'a'*20
j = 'a'*20
print(i is j)   # True
i = "a"*21
j = "a"*21
print(i is j)   # False
關(guān)于編碼所占字節(jié)
unicode: 所有字符(無論英文、中文等)   1個字符:2個字節(jié)
gbk:一個字符,英文1個字節(jié),中文兩個字節(jié)
utf-8:英文1個字節(jié)、 歐洲:2個字節(jié), 亞洲:3個字節(jié)
在utf-8中,一個中文字符占用3個字節(jié)
在gbk中一個漢字占用2個字節(jié)
黎詩 = utf-8(6字節(jié))=48
黎詩 = gbk(4字節(jié))=32
字節(jié)和位的關(guān)系。
  #一個字節(jié)(byte) = 8 位(bit)
  # 位為最小的單位
簡述變量命名規(guī)范
  #1、以字母,數(shù)字,下劃線任由結(jié)合
  #2、不能以命名太長,不使用拼音,中文
  #3、不能以數(shù)字開頭
  #4、不能用關(guān)鍵詞

5、三元運(yùn)算寫法和應(yīng)用場景?

應(yīng)用場景:簡化if語句
# 關(guān)于三元運(yùn)算
# 結(jié)果+ if  + 條件  + else + 結(jié)果
result='gt' if 1>3 else 'lt'
print(result)       # lt
# 理解:如果條件為真,把if前面的值賦值給變量,否則把else后面的值賦值給變量。
lambda 表達(dá)式
temp = lambda x,y:x+y
print(temp(4,10))   # 14
可替代:
def foo(x,y):
    return x+y
print(foo(4,10))    # 14

6、Python3和Python2的區(qū)別?

1:打印時,py2需要可以不需要加括號,py3 需要
python 2 :print ('lili')   ,   print 'lili'
python 3 : print ('lili')   
python3 必須加括號
exec語句被python3廢棄,統(tǒng)一使用exec函數(shù)
2:內(nèi)涵
Python2:1,臃腫,源碼的重復(fù)量很多。
      2,語法不清晰,摻雜著C,php,Java,的一些陋習(xí)。
Python3:幾乎是重構(gòu)后的源碼,規(guī)范,清晰,優(yōu)美。
3、輸出中文的區(qū)別
python2:要輸出中文 需加 # -*- encoding:utf-8 -*-
Python3 : 直接搞
4:input不同
python2 :raw_input
python3 :input 統(tǒng)一使用input函數(shù)
5:指定字節(jié)
python2在編譯安裝時,可以通過參數(shù)-----enable-unicode=ucs2 或-----enable-unicode=ucs4分別用于指定使用2個字節(jié)、4個字節(jié)
表示一個unicode;
python3無法進(jìn)行選擇,默認(rèn)使用 ucs4
查看當(dāng)前python中表示unicode字符串時占用的空間:
impor sys
print(sys.maxunicode)
#如果值是65535,則表示使用usc2標(biāo)準(zhǔn),即:2個字節(jié)表示
#如果值是1114111,則表示使用usc4標(biāo)準(zhǔn),即:4個字節(jié)表示
6:
py2:xrange
    range
py3:range  統(tǒng)一使用range,Python3中range的機(jī)制也進(jìn)行修改并提高了大數(shù)據(jù)集生成效率
7:在包的知識點(diǎn)里
包:一群模塊文件的集合 + __init__
區(qū)別:py2 : 必須有__init__
   py3:不是必須的了
8:不相等操作符"<>"被Python3廢棄,統(tǒng)一使用"!="
9:long整數(shù)類型被Python3廢棄,統(tǒng)一使用int
10:迭代器iterator的next()函數(shù)被Python3廢棄,統(tǒng)一使用next(iterator)
11:異常StandardError 被Python3廢棄,統(tǒng)一使用Exception
12:字典變量的has_key函數(shù)被Python廢棄,統(tǒng)一使用in關(guān)鍵詞
13:file函數(shù)被Python3廢棄,統(tǒng)一使用open來處理文件,可以通過io.IOBase檢查文件類型

7、用一行代碼實(shí)現(xiàn)數(shù)值交換

a = 1 
b = 2
a, b = b, a

8、Python3和Python2中int和long區(qū)別

在python3里,只有一種整數(shù)類型int,大多數(shù)情況下,和python2中的長整型類似。

9、xrange和range的區(qū)別

都在循環(huán)時使用,xrange內(nèi)存性能更好,xrange用法與range完全相同,range一個生成list對象,xrange是生成器。

要生成很大的數(shù)字序列的時候,用xrange會比range性能優(yōu)很多,因?yàn)椴恍枰簧蟻砭烷_辟一塊很大的內(nèi)存空間。

在python2中:

range([start,] stop[, step]),根據(jù)start與stop指定的范圍以及step設(shè)定的步長,生成一個序列。

例子:

xrange用法與range完全相同,所不同的是生成的不是一個數(shù)組,而是一個生成器。

例子:

由上面的示例可以知道:要生成很大的數(shù)字序列的時候,用xrange會比range性能優(yōu)很多,因?yàn)椴恍枰簧蟻砭烷_辟一塊很大的內(nèi)存空間,這兩個基本上都是在循環(huán)的時候用。

在 Python 3 中,range() 是像 xrange() 那樣實(shí)現(xiàn),xrange()被拋棄。

10、文件操作時:xreadlines和readlines的區(qū)別?

readlines     返回一個列表
xreadlines   返回一個生成器

感謝各位的閱讀!關(guān)于關(guān)于Python基礎(chǔ)的面試題及解決方法就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI