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'