Bootstrap

Python程序设计第三章测验总结

第三章 顺序和分支程序应用

3.1 猜数字与二分法

1.如果需要提前结束循环,可以使用:

A.break

B.continue

C.else

D.if

解:A

2.语句x=input()执行时,如果从键盘输入12并按回车键,则x的值是

A.12

B.12.0

C.1e2

D.‘12’

解:D

input得到的结果是str类型

3.将数学式2<x≤10表示成正确的Python表达式为

A.2<x≤10

B.2<x and x<=10

C.2<x && x<=10

D.x>2 or x<=10

解:B

4.Python中可以使用while循环和for循环,利用while构造循环的循环体至少会被执行1次。

解:错误

至少被执行0次。

5.如果while循环的循环条件是整型常量,那么就构成死循环。

解:错误

可以使用break跳出循环。

6.Python 中, while 循环其后都可以紧跟着一个 else 代码块,只有循环非正常结束,才会执行该代码块。

解:错误

7.python中enumerate函数返回元组。

解:错误

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

注意,索引从0开始。

8.python程序中使用随机数,需要用import语句引入模块,引入语句为:

解:import random

9.下列代码中,循环体执行__次

for i in range(5):   
	print(i)

解:5

10.下列代码中,循环体执行__次

for i in range(1,5,2):   
	print(i)

解:2

range(start, end, step),range的第三个参数是步长

11.下列程序的输出结果为

i=1 
sum=0 
while i<=5:   
	sum += i   
	i += 2 
print(sum)

解:9

12.下列程序的输出结果为

seq = ['one'] 
for i, element in enumerate(seq):   
	print i, element

解:0 one

3.2 X年X月X日是星期几

1.如下程序的输出结果是___

num=1 
while num<=10:   
	num+=1 
print(num)

A.1

B.10

C.11

D.12

解:C

2.如下程序的输出结果是__

num=1 
while num<=10:   
	num+=1   
	if num>5: 
		break 
print(num)

A.11

B.5

C.6

D.10

解:C

3.如下程序的输出结果是_

num=1 
while num<10:   
	num+=1   
	if num>5: 
		continue 
print(num)

A.11

B.5

C.6

D.10

解:D

4.如下程序的运行结果是__

num=1 for i in range(1,10,2):   
    num+=1 
print(num)

A.11

B.5

C.6

D.10

解:C

5.如下程序的运行结果是__

num=1 
for i in range(10,1,-2):
	num+=1 
print(num)

A.11

B.5

C.6

D.10

解:C

6.关于while和for的区别,下列叙述中正确的是

A.while语句的循环体至少无条件执行一次,for语句的循环体可能一次都不执行

B.while语句只能用于循环次数未知的循环,for语句只能用于循环次数已知的循环

C.在很多时候,while和for可以等价使用

D.while语句只能用于可迭代变量,for语句可以用任意表达式表示条件

解:C

7.设有程序段

k=10 
while k:   
	k=k-1   
	print(k)

则下面描述中正确的是

A.while循环体执行10次

B.循环是无限循环

C.循环体语句一次也不执行

D.循环体语句执行一次

解:A

8.假设E为整型变量,则以下while语句中的表达式“not E”等价于

while not E:   
	pass

A.E==0

B.E!=1

C.E!=0

D.E==1

解:A

9.有以下程序段:

n=0 
p=0 
while p!=100 and n<3:   
	p=int(input())   
	n+=1

while循环结束的条件是

A.p的值不等于100并且n的值小于3

B.p的值等于100并且n的值大于等于3

C.p的值不等于100或者n的值小于3

D.p的值等于100或者n的值大于等于3

解:D

10.以下for语句中,不能完成1~10的累加功能的是

A.for i in range(10,0):

sum += i

B.for i in range(1, 11):

sum += i

C.for i in range(10, 0, -1):

sum += i

Dfor i in (10, 9, 8, 7, 6, 5, 4, 3, 2, 1):

sum += i

解:A

11.如果条件为真,想要程序无限执行直到人为停止的话,可以需要下列哪个选项():

A.for

B.if

C.continue

D.while

解:D

12.如下程序的输出结果是

num=1 
if num:   
	for i in range(1):    
    	num = num+i   
        print(num)

解:1

3.3 谁是罪犯?-简单逻辑分析

1.num是一个整型变量,和下面if逻辑相同的是

if num>=0 and num<=100:

A.if not(num<0 or num>100):

B.if not(num>=0 or num<=100):

C.if not(num<0 and num>100):

D.if not(num>=0 and num<=100):

解:A

离散数学中关于命题取非的操作

2.以下选项中,不是 Python 语言保留字的是 ____

A.do

B.pass

C.for

D.while

解:A

3.num是一个整型变量,关于Python语句num = -num,以下选项中描述正确的是__

A.num和num的负数相等

B.num和num的绝对值数相等

C.给num赋值它的负数

D.num的值为0

解:C

一个等号是赋值,两个等号是判断是否相等。

4.下面Python循环体执行次数与其他不同的是

A.

i=0
while i<=10:
	print(i)   
	i+=1

B.

i=10 
while i>0:   
	print(i)   
	i-=1

C.

for i in range(10):   
	print(i)

D.

for i in range(10, 0, -1):  
	print(i)

解:A

A运行11次,BCD都是10次

5.下列for 循环执行后,输出结果的最后一行是

for i in range(1,3):   
	for j in range(2,5):     
		print(i*j)

A.2

B.6

C.8

D.15

解:C

range的区间是左闭右开的,根据这一原则,答案为2*4=8。

6.关于下列for循环,叙述正确的是

for t in range(1, 11):   
	x = int(input())   
	if x>=0:     
		print(x)

A.当x小于0时整个循环结束

B.x大于等于0时什么也不输出

C.程序最多能输出11个数

D.程序可能什么都不会输出

解:D

当用户的输入都小于0的时候,就不会输出。

7.与关系表达式x==0等价的表达式是

A.x=0

B.not x

C.x

D.x!=1

解:B

注意,int转为bool时,0转为False,其余的值均为True

8.如下程序的运行结果是_____

num = 1 
while num <= 3:   
	if num != 3:     
		print(num,end=" ")   
	num += 1

解:1 2 (注意,这里还有一个空格)

9.num是一个整型变量值为5,执行Python语句num -= num,执行后的num的值是_____

解:0

10.下面程序输出的最大数为

for i in range(1, 5):   	
    print(i)

解:4

11.下面程序输出的最大数为

for i,num in enumerate([1,5]):   	
    print(i)

解:1

12.下面程序输出的最小数为

for i,num in enumerate((1,5)):   	
    print(num)

解:1

3.4 打印9*9乘法表

1.下列说法中正确的是

A.break用在for语句中,而continue用在while语句中

B.break用在while语句中,而continue用在for语句中

C.continue能结束循环,而break只能结束本词循环

D.break能结束循环,而continue只能结束本词循环

解:D

2.以下while循环的次数是

i=0 
while i<10:   	
    if i<1:     		
        continue   	
    if i==5:     		
        break   	
    i += 1

A.1

B.5

C.6

D.无限次

解:D

i一直=0,一直执行continue。

3.求比10小且大于等于0的偶数,空白处应填入什么语句

x=10
while x:   	
    x = x-1   	
    if x%2 != 0:     		
        _________   	
print(x)

A.break

B.continue

C.end

D.stop

解:B

奇数直接跳过,也就是继续下一次循环。

4.下列选项中,哪项填到空白处是不符合Python语法的

for var in ___:   	
    print(i)

A.range(1, 5)

B.“ABC”

C.54

D.[5, 4]

解:C

in后面的参数必须是可迭代类型。

5.下列程序输出的最后一个数是

for i in range(9, -2, -1):   	
    if i>4 :     		
        print(i)   	
    else:     		
        print(i-1)

A.3

B.-2

C.4

D.-1

解:B

i=-1,输出i-1=-2。

6.while循环和for循环可以互相嵌套,break语句只能跳出一层循环。

解:正确

7.如下程序的运行结果是____

for i in range(3,5):   	
    sum=0   	
    for j in range(3,5):     		
        sum+=j 
print(sum)

解:7

i的每次迭代都会重置sum的值为0.

8.如下程序的运行结果是____

sum=0 
for i in range(3,5):   	
    for j in range(3,5):     		
        sum+=j 
print(sum)

解:14

9.如下程序的运行结果是____

sum=0 
for i in range(3,5):   	
    for j in range(3,i+1):     		
        sum+=j 
print(sum)

解:10

10.如下程序的运行结果是___

sum=0 
for i in range(3,5):   	
    for j in range(3,i+1):      	
        if j>3:    		
            continue         	
        sum+=j 
print(sum)

解:6

11.如下程序的运行结果是?

sum=0 
for i in range(2,101,2):   	
    sum=sum+i 
print(sum)

解:2550

等差数列,a1=2,an=100,n=(100-2)/2+1=50,使用Sn的计算公式可得和为2550

12.求5的阶乘

num=5 
res=1 
for i in range(1,6):   	
    res=res*i
print(res)

解:120

求6!=120

3.5 百钱百鸡与代码优化

1.如下程序用于找出100到1001之间的完全数,所谓完全数就是和真因子的和相等的数,例如6的真因子是1、2、3,三者的和等于6.

for i in range(100,1001):   	
    Sum=0      
    for j in range(1,i):        	
        if _______:            	
            Sum+=j     
        if Sum==i:       	
            print(i)

其中第4行的下划线处应该是_________

A.i%j==0

B.j%i==0

C.i//j==0

D.j//i==0

解:A

2.如下程序用于判断一个用户输入的正整数是否是素数,

import math 
num=int(input("请输入一个数:")) 
top=int(math.sqrt(num)) 
i=2 
while i<=top:   	
    if num%i==0:break   #修改素数标志   	
    i=i+1 
    if i==______ and num>1:   
        print(num,"是素数。")
    else:   	
        print(num,"不是素数。")

其中第8行的下划线出应该是________

A.i==top

B.i==top+1

C.i==num

D.i==num+1

解:B

素数的标志跳出去是i>top,所以此时i=top+1

3.对如下程序描述正确的是_____

x=y=0 
while True:  	
    x+=1  	
    if not(x%2):
        continue  	
    elif x>100:break       	
    else:y+=x 
print("y=",y)

A.该程序是死循环

B.该程序用于求1到100之间整数的和

C.该程序用于求1到100之间奇数的和

D.该程序用于求1到100之间偶数的和

解:C

4.如下代码用欧几里得算法求两个正整数的最大公约数。

num1,num2=eval(input("请输入两个正整数")) 
if num1<num2:   	
    num1,num2=num2,num1 #保证num1大 
while_____________:   	
    temp=num1%num2   	
    num1=num2   	
    num2=temp
print("最大公约数是:",num2)

其中第4行下划线的代码应该是_______

A.num2%num1==0

B.num2%num1!=0

C.num1%num2==0

D.num1%num2!=0

解:D

num1大于num2,当num1能被num2整除的时候,结束循环。

5.Python表达式中,可以用控制运算的优先顺序

A.圆括号()

B.方括号[]

C.花括号{}

D.尖括号<>

解:A

6.下面程序的功能是

for i in range(1, 101):   	
    if i%7 == 0 and i%5 != 0:     	
        print(i)

A.打印1到100之间能被7整除且不能被5整除的数

B.打印1到100之间能被7整除或不能被5整除的数

C.打印1到101之间能被7整除且不能被5整除的数

D.打印1到101之间能被7整除或不能被5整除的数

解:A

7.下面程序的功能是求5的阶乘

sum = 1 
for i in range(5):  	
    sum *= i

解:错误

i从0开始,这样sum最终为0。

8.下面程序的功能是输出10以内的全部奇数

i=0 
while i<10:   	
    if i%2 == 0:     	
        continue   	
    print(i)  
    i = i+1

解:错误

此程序会陷入死循环。

9.以下python程序的写法错误

print([x * x for x in range(1, 11)])

解:错误

这个是列表推导式

10.如下程序,如果运行时输入200,那么输出结果是____

num=int(input("请输入一个正整数"))res=0 
while num>0:   	
    res=res*10+num%10   	
    num=num//10 
print("res=",res)

解:2

11.下面程序输出值为

s=0 
for i in range(10):   	
    if i%2 :        	
        continue     
    s += i 
print(s)

解:20

12.下面程序的输出值是多少?

print([x * x for x in range(1, 11) if x % 2 == 0])

解:[4, 16, 36, 64, 100]或[4,16,36,64,100]

注意使用,号进行分割。

;