
1.在Python程式中,控件結構為:
A.訓示程式中語句的執行順序
B.管理控制字元的輸入和輸出
C.定義程式特定的資料結構
D.決定程式啟動之前和終止之後發生的情況
答案:A 解析:控制結構決定程式中哪些語句将被執行,以及以什麼順序執行,進而允許語句被跳過或重複執行。
2.什麼表示Python中語句塊或套件的結束?
A.縮進的行比前一行少
B.注釋
C.end
D.}
答案:A 解析:在Python中,沒有特定的标記表示塊的結束。在Python中,塊是按照越位規則通過縮進定義的。當語句出現在比前一行縮進少的行上時,它表示一個塊的結束。
3.以下代碼段的輸出是什麼:
if'bar'in{'foo':1,'bar':2,'baz':3}:
print(1)
print(2)
if'a'in'qux':
print(3)
print(4)
A.1234
B.它不會産生任何輸出。
C.4
D.124
答案:D 解析:第2行到第5行都是屬于第一個if語句的塊的一部分。因為{'foo': 1, 'bar': 2, 'baz': 3}中的'bar'為真,是以執行該塊。執行第2行和第3行上的print()語句。但是,第4行上的條件語句(' qux'中的'a')為False,是以跳過了第5行上的print()語句。第6行中的print()語句不是這兩個if語句的一部分,是以它是無條件執行的。
4.假設您定義了以下變量:a=100,b = 50
答案:
ifa
m=a
else:
m=b
這通常被認為更符合python的風格。但是這個問題特别要求使用if/else語句。
實際上,你最可能做的是使用Python的内置min()函數:
m=min(a,b)
5.下面if/ elif/ else語句會引發一個KeyError異常嗎?
d={'a':0,'b':1,'c':0}
ifd['a']>0:
print('ok') #
elifd['b']>0:
print('ok') ##
elifd['c']>0:
print('ok') ###
elifd['d']>0:
print('ok') ###
else:12
print('not ok')
A.會 B.不會
答案:B
解析:d['d']指的是一個無效的鍵。但是elif子句中的表達式從未求值。一旦第5行上的elif d['b'] >子句被發現為True,剩下的elif子句就會因為短路求值而被跳過。
6.假設x和y的定義是正确的,那麼下面哪個是Python中有效的if/else語句:
A.
ifx
elify
else:print('baz')
B.ifx
C.ifx10:print('foo')
D.ifx
答案:AD 解析:
A.為單個if指定多個分号分隔的語句在文法上是正确的,但是PEP 8不鼓勵這樣做,除非是非常簡單的情況。分号的綁定最緊密,是以如果表達式為真,則執行所有語句(在本例中是這樣),如果分号為假,則不執行任何語句。
D.您可以在同一行指定語句,就像if、elif或else一樣,緊跟在冒号後面。然而,這也不是理想的樣式。
7.假設定義了兩個變量x和y。
編寫一個存根if語句來計算x是否小于y。即使條件為true,該語句也不應執行任何操作。
答案:
ifx
pass
解析:因為代碼塊是通過Python中的縮進定義的,是以必須要縮進一些東西。塊不能為空。該pass語句用作不執行任何操作的語句,可用于定義類似于上面顯示的代碼存根。
8.下列語句得到的結果是什麼?
'a'+'x'if'123'.isdigit()else'y'+'b'
A.'axb'
B.'axyb'
C.'ab'
D.'ax'
答案:D,
解析:條件表達式的優先級低于其他運算符,是以該+運算符的綁定更為緊密。顯示的表達式與此等效:
>>> ('a'+'x')if'123'.isdigit()else('y'+'b')
'ax'
既然'123'.isdigit()是True,輸出就是'a' + 'x'或'ax'。要使條件表達式首先被求值,應将括号括起來如下:
>>> 'a'+('x'if'123'.isdigit()else'y')+'b''axb'
在這種情況下,帶括号的條件的值為'x',整個表達式為'axb'