单项选择题

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

参考答案

详细解析