单项选择题
2-1 假设a=10 这个程序的输出结果为:
a=10
while a<4:
a=5
print(a)
请问程序的输出结果为:
A. 10 B. 4 C. 5 D. 15
答案:A
2-2 下面这段代码的运行结果为: 下面这段代码的运行结果为:
number=12345
sum=number%10
while number:
number=number//10
sum=sum+number%10
print(sum)
A. 6 B. 3 C. 10 D. 15
答案:D
2-3 有两个人做猜数字游戏,只有7次猜的机会,如果其中一个人猜的数字比另一个人预设的数字大,则会得到反馈“猜大了”,如果猜的数字比预设 有两个人做猜数字游戏,只有7次猜的机会,如果其中一个人猜的数字比另一个人预设的数字大,则会得到反馈“猜大了”,如果猜的数字比预设数字小,则会得到反馈“猜小了”,猜中了会得到反馈“你赢了“,如果7次都没有猜中,则会得到反馈“你输了”。仔细阅读下面这段代码,小明猜的数字分别为:35 10 14 16 28 25 23,请问小明共有几次猜大,几次猜小,最终有没有猜对?
count =1
a=2
b=4
while True:
number=a**2+b**2+a*b/2+a*b%2
guess=int(input())
if guess>number:
print("猜大了")
elif guess<number:
print("猜小了")
elif guess==number:
print("你赢了")
break
count=count+1
if count>10:
print("你输了")
break
A. 没有猜对,猜大了3次,猜小了4次
B. 猜对了,猜大了2次,猜小了3次
C. 没有猜对,猜大了5次,猜小了2次
D. 猜对了,猜大了1次,猜小了1次
答案:A
2-4 这个程序的输出结果为: 这个程序的输出结果为:
t=0
while True:
t=t+1
print(t)
A. 10 B. 20 C. while循环内没有退出选项,程序陷入死循环
D. 0
答案:C
2-5 请问这个代码的输出结果为: 请问这个代码的输出结果为:
number=3250
count=0
while number==0:
number=number//10
count=count+1
print(count)
A. 3 B. 2 C. 10 D. 0
答案:D
2-6 在一次聚会上,有10个人围成一圈做报数游戏,10个人分别按照1~10的顺序编号,已知小明的编号的为7,下面的代码为报数的规则,那 在一次聚会上,有10个人围成一圈做报数游戏,10个人分别按照1~10的顺序编号,已知小明的编号为7,下面的代码为报数的规则,那么当轮到小明报数时,小明需要说什么?
number=7
while True:
number=number%6
if number==1:
print("我喝茶")
break
else:
print(number)
break
A. 我喝茶 B. 7 C. 6 D. 1
答案:A
2-7 以下哪一项不是无限循环语句? 以下哪一项不是无限循环语句?
A.
while True:
print("hello")
B.
while "123"==123:
print("hello")
C.
while "abc">"ABC":
print("hello")
D.
while 1<2:
print("hello")
答案:B
2-8 以下程序执行后,从键盘输入90<回车>80<回车>60<回车>105<回车>50<回车>-1<回车>后输出( ) 以下程序执行后,从键盘输入90<回车>80<回车>60<回车>105<回车>50<回车>-1<回车>后输出( )
sum,count=0,0
while True:
score=int(input())
if score==-1:
break
if score<0 or score>100:
continue
sum=sum+score
count=count+1
if count>0:
print(sum/count)
A. 64 B. 64.0 C. 70 D. 70.0
答案:D
2-9 如下语句执行后会输出( )行 "I love python" 如下语句执行后会输出( )行 "I love python"
i=10
while i>=0:
print ("I love python")
i=i-1
A. 1 B. 10 C. 11 D. 12
答案:C
2-10 以下程序执行后,从键盘输入86 27<回车>,则输出结果为( ) 以下程序执行后,从键盘输入86 27<回车>,则输出结果为( )
a,b=input().split()
a=int(a)
b=int(b)
while a>b:
a=a-1
if a>b:
b=b+1
print(a)
A. 55 B. 56 C. 57 D. 58
答案:B
2-11 执行如下语句后k和s的值分别是( ) 执行如下语句后k和s的值分别是( )
k,s=5,0
while k!=0:
k=k-1
s=s+k
A. 0、 15 B. 15、 0 C. 10、 0 D. 0、 10
答案:D
2-12 如下语句中,共执行几次循环体 如下语句中,共执行几次循环体
i=1000
while (i>0):
i=i-1
A. 0 B. 1 C. 999 D. 1000
答案:D
2-13
score = int(input("请输入分数"))
if score > 60:
print("你考试及格了")
print("你的考试不及格")
希望通过此程序判断是否及格。以下描述错误的是:
A. 无论输入什么分数,输出结果都是
”你考试及格了“
”你的考试不及格“
B. 如果希望达到程序效果,需要在if语句后,第3行代码需要缩进4个空格
C. 此程序输入分数后,能正常判断并输出此人是否考试及格。
D. if判断后,无论是TRUE或FALSE,都没有子语句块需要执行,程序直接执行下一行。这个属于逻辑错误。
答案:C
2-15 if程序判断数字大小
x = input("请输入一个整数")
if x > 5 :
print("你输入的数字太大了")
print("程序结束了")
请问如果你输入数字8,程序执行结果是什么?
A. 你输入的数字太大了 B. 程序结束了 C. 程序报错,执行不成功 D. 8
答案:C
填空题
4-1 try except异常处理3 (高教社,《Python编程基础及应用》习题12-3)
请写出下述程序的执行结果:
x=5
y=2
for i in range(3):
try:
x = x - 2
z = y / x
print("%.1f" % z)
except Exception:
print("error!")
else:
print("正常运行")
finally:
print("finally")
执行结果第1行:( )
执行结果第2行:( )
执行结果第3行:( )
执行结果第4行:( )
执行结果第5行:( )
执行结果第6行:( )
执行结果第7行:( )
执行结果第8行:( )
执行结果第9行:( )
答案
第1空:0.7
,第2空:正常运行
,第3空:finally
,第4空:2.0
,第5空:正常运行
,第6空:finally
,第7空:-2.0
,第8空:正常运行
,第9空:finally
4-2 try except异常处理2 (高教社,《Python编程基础及应用》习题12-2)
请写出下述程序的执行结果:
x=4
y=2
for i in range(4):
try:
x = x - 1
z = y / x
print("{:.2f}".format(z))
except Exception:
print("error!")
else:
print("正常运行")
执行结果第1行:( )
执行结果第2行:( )
执行结果第3行:( )
执行结果第4行:( )
执行结果第5行:( )
执行结果第6行:( )
执行结果第7行:( )
答案
第1空:0.67
,第2空:正常运行
,第3空:1.00
,第4空:正常运行
,第5空:2.00
,第6空:正常运行
,第7空:error!
4-3 字符串的upper()函数(高教社《Python编程基础及应用》习题2-2)
写出下述程序的执行结果。
sName1 = "john miller"
print("1:",sName1.upper())
print("2:",sName1)
执行结果第1行:( )。
执行结果第2行:( )。
提示:print( )函数会自动在每个输出参数之间加上一个空格。
答案
第1空:1: JOHN MILLER
,第2空:2: john miller
程序填空题
5-1
以0为随机数种子,随机生成n个1(包含)到97(包含)之间的随机数,计算这n个随机数的总和。 从键盘输入一个整数,屏幕输出一个数值。(注意,在输入时无任何提示)
import random
random.seed(0)
n=int(input())
s=0
for i in range(n):
s+=random.randint(1,97)
print(s)
参考答案
答案1:
int(input())
答案2:
random.randint(1,97)
编程题
7-1 大菲波数 (10 分)
斐波那契数列是这样定义的:f(1)=1;f(2)=1;f(n)=f(n-1)+f(n-2)(n>=3)。所以1,1,2,3,5,8,13……就是斐波那契数列。输入一个整数n,求斐波那契数列的第n项。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后输入T组测试数据。每组测试数据输入一个整数n(1≤n≤1000)。
输出格式:
对于每组测试,在一行上输出斐波那契数列的第n项f(n)。
输入样例:
2
105
4
输出样例:
3928413764606871165730
3
出处:
HDOJ 1715
参考答案
更简洁的写法:
def fibonacci(n):
a, b = 1, 1
for i in range(n - 1):
a, b = b, a + b
return a
cycles = int(input())
for times in range(cycles):
print(fibonacci(int(input())))
旧写法:
def fibonacci(number):
if number < 3:
return "1"
else:
num1, num2 = 1, 1
for i in range(number - 2):
if i % 2 == 0:
num2 += num1
else:
num1 += num2
return num1 if number % 2 == 0 else num2
cycles = int(input())
for times in range(cycles):
print(fibonacci(int(input())))
7-2 素数判断 (10 分)
输入一个正整数m,判断该数是否为素数。
输入格式:
首先输入测试组数T,然后输入T组测试数据。每组测试输入一个正整数m。
输出格式:
对于每组测试,若m为素数则输出“yes”;反之输出“no”。注意:引号不必输出。
输入样例:
3
9
3
7
输出样例:
no
yes
yes
参考答案
import math
def is_prime(number):
result = False
if number > 1:
for i in range(2, int(math.sqrt(number)) + 1):
if (number % i) == 0:
break
else:
result = True
return result
cycles = int(input())
for times in range(cycles):
if is_prime(int(input())):
print("yes")
else:
print("no")
7-3 列出完数 (10 分)
输入一个整数n,要求输出[1,n]范围内的所有完数。完数是一个正整数,该数恰好等于其所有不同真因子之和。例如,6、28是完数,因为6=1+2+3,28=1+2+4+7+14;而24不是完数,因为24≠1+2+3+4+6+8+12=36。
输入格式:
测试数据有多组,处理到文件尾。每组测试数据输入一个整数n(1≤n≤10000)。
输出格式:
对于每组测试,首先输出n和一个冒号“:”;然后输出所有不大于n的完数(每个数据之前留一个空格);若[1,n]范围内不存在完数,则输出“NULL”。引号不必输出。具体输出格式参考输出样例。
输入样例:
100
5000
5
输出样例:
100: 6 28
5000: 6 28 496
5: NULL