第三章 顺序和分支程序应用
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]
注意使用,号进行分割。