万卷网> 电子学会考级 >Python等级考试 > 2023年12月电子学会青少年软件编程(Python四级)等级考试试卷

2023年12月电子学会青少年软件编程(Python四级)等级考试试卷
操作/编程 四级 2023 2024-01-06 14:43:54 98

一、编程题

1.

比岁数问题

有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。

最后问第一个人,他说是10岁。请问第五个人多大?

请运用递归算法完成以下代码。

def age(n):

    if         ①        :

        c = 10

    else:

        c =        ②        

    return c

print(age(        ③        ))

2.

统计高分问题

小张在学习对分查找后,想利用该思路来实践一下,加深对该算法的理解。于是他按老师的要求,统计期末考试成绩,总分比他高的同学有多少个?

他的思路是,首先将全区所有学生的成绩降序排序,然后利用对分查找思想解决。他编写的代码如下,请完善划线处的代码。

cj =[654,643,621,612,609,606,...]#学生成绩存列表cj并已经降序排序

def dfsearch(key):

       i =0; j=len(cj)-1

      while i<=j:

             m =(i+j)//2

             if cj[m]>key:

                        ①        

              else:

                    j-= 1

      return           ②        

key = int(input('输入待查找的成绩'))

pos =        ③        

print('高于',key,'分的人数有',pos)

3.

数学证明问题

上世纪中期,校园里流行一种数学游戏,其规则十分简单:任意取一个自然数,若它是奇数,则把它乘以3加上1,若它是偶数,则除以2。按此规则进行下去,经过若干步的计算就能得到自然数1。这个数学现象至今都没有得到完全的证明,但是可以编程来验证它的正确性。

实现上述功能的部分程序代码如下,请补充完成空白处的内容。

step = 1

midlist = []

 

def subwork(n):

    global step

    if n == 1:

        return step

    elif n % 2 == 0:                                                                                               

        n =         ①          

        midlist. append(n)    

        step +=  1

        subwork(        ②        ) 

        return step

    elif n % 2 != 0:

        n =         ③              

        midlist.        ④         

        step +=  1

        subwork(        ⑤        )  

        return step

   

cur_num = int(input("请输入一个数字:"))

subwork(cur_num)

print(midlist)

print(step)

公众号
客服 反馈
顶部