2021年12月青少年软件编程Python等级考试(五级)试卷
剩余时间 --:--:--
单选题 共 25 题
1.

关于列表和元组的关系,下列描述不正确的是?(

2.

有关jieba库的描述,错误的是?( )

3.

import random
lis= [0] * 6
i = 0
while i < 6:
lis[i] = random.randint(1, 100)
if lis[i] % 2 != i % 2:
i += 1
else:
break

运行该程序段,lis[0]~lis[5]各元素值可能的是?( )

4.

下列代码的运行结果是?(

def jishu(n):
    return n % 2 == 0
newlist = filter(jishu, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
n=list(newlist)
print(n)
5.

import random
fibo = [1] * 11
for i in range(2, 11):
fibo[i] = fibo[i - 1] + fibo[i - 2]
n = random.randint(1,10)
print(fibo[n])

运行该程序段,输出结果不可能是?(

6.

m=[i**2 for i in range(4) ]的结果的是?( )

7.

使用map函数可以实现列表数据元素类型的转换,而无需通过循环。则将列表l=['1','3','5','7']转换为列表[1,3,5,7]的函数写法为?( )

8.

运行下列代码,正确的结果是?(

>>>x = set('runoob')

>>> y = set('google')

>>> x | y 

9.

下列说法,正确的是?(

10.

已知字典dict={"姓名":["张三","李四","王五"],"投票数":[18001,19682,23468]},则print(dict["姓名"][1],dict["投票数"][0])的结果为?( )

11.

下列声明字典的语句,错误的是?(

12.

有如下 Python 程序段:

import random
c=0
s=0
for i in range(0,10):
    n=random.randint(1,101)
    if n%2==0:
        s+=i
        c+=1
print(i)

该程序段被执行后,下列说法不正确的是?( 

13.

下列语句的输出结果是?(

for i in range(6):
    if i%2==0:
        break
    else:
        print(i,end=',')
14.

请确认以下程序中有几处错误?(

input turtle
colors=['blue','red','green','yellow']
t=turtle.Pen()
for i in range(100)
    t.color(colors[i%5])
    w+=2
    t.forward(w)
    t.left(89)
15.

下列语句的输出结果是?(

for i in 'xyz':
    for j in range(1,3):
        print(i,end='')
        if i=='z':
            break
16.

运行下列代码,正确的结果是?(

 >>>print("{:06.2f}".format(3.1415926))

17.

求执行下列操作后的正确结果?( 

>>> url='www.lxsz.com'

>>> url.split()

18.

print('\x65')的结果是?( )

19.

赋值语句path=r'c:\abc\xyz\tag.txt',执行结果是?( )

20.

下列函数或操作,错误的为哪一项?(

21.

下列元组的声明,非法的是哪一项?(

22.

执行下列代码,正确的答案是?(

>>> l=[10,0,1,6,12,8]

>>> l.sort(key=float)

>>> l

23.

对于列表的方法pop()与remove()的区别与相同点,正确的描述是?( )

24.

以下序列对象的描述,非法的或者值为False的选项是?( )

25.

要生成如下效果的图片,用不到的是以下哪个python库?( )

判断题 共 10 题
1.

对于列表l=[(0,),1,2,3,4],all(l)的值是True。

2.

下列两个语句的功能可能是等价:

>>> l=[i*i for i in range(5)]

>>> m=list(map(lambda x:x*x,range(5)))

3.

列表、元组、字符串均可以用set()转换为集合,例如:>>>set((1,2,2,3,4)),结果是{1,2,3,4}

4.

set()函数可以用于生成集合,输入的参数可以是任意组合数据类型,返回结果是一个无重复且有序的集合。

5.

 Python 程序段如下:

s = "Errors should never pass silently."
d = {}
for ch in s:
if ch in d:
d[ch] += 1
else:
d[ch] = 1
print(d["e"])

运行该程序段,输出结果是2

6.

>>> dict(enumerate(range(3)))

返回值为{‘0’: 0, ‘1’: 1, ‘2’: 2}

7.

>>>str='nihao\nliping\nzhang san'

>>> str.split()

结果是:['nihao', 'liping', 'zhang', 'san']

8.

>>> '{0:%}'.format(3.14)返回'3.140000%'

>>>'{0:.2f}'.format(3.14)返回'3.14'

9.

>>>list(zip("abcd"range(3)))

返回出错

10.

利用日期时间模块datetime,可以获取今天的日期,方法如下:

>>> import datetime

>>> date.today().weekday()

如果今天是星期天,则返回0

问答题 共 3 题
1.

输入年月日,计算这一天是这一年的第几天。编写自定义函数完成程序功能,完善程序代码。


根据年月日,计算这一天是这一年的第几天

函数名  def getDays(year)

参数    year:表示日期;字符串类型如20211201

返回值 :整数。表示这一天是这年的第几天 

def getDays(year):
    s = 0
    y = int(year[:4])
    m = int(year[4:6])
    d = int(year[6:8])
    monthdays = (31,28,31,30,31,30,31,31,30,31,30,31)
    for i in range(  ①  ):
        s = s +    ②  
    if (y % 4 ==0 and y % 100 !=0 or y % 400 ==0) and   ③  :
        s = s + 1
    s = s + d
    return s
year = "20211201"
theday =   ④  
print(theday)
2.

素数是只能被1和本身整除的正整数,因式分解就是将一个正整数分解成若干个素数相乘的形式。用户从键盘输入小于1000的整数,对其进行因式分解,例如:10=2*5,60=2*2*3*5。完善程序代码。

#用户从键盘输入小于1000的整数,对其进行因式分解。例如:10=2*5,60=2*2*3*5。
x = input('Please input an integer less than 1000:')
x = int(x)
t = x
①  
result = []
while True:
    if t == 1:
        break
    if t % i == 0:
        result.  ②
        t = t/i
    else:
          ③
s=''
for i in result:
    s=  ④
s=  ⑤
print( x,'=',s)
3.

设计一个算法,汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。有三个单字符字符串和一个整数。三个字符表示三个杆子的编号,整数为盘子的数目。
根据上述计算规则,补全下列代码。

函数名:hannota(n,a,b,c)
参数表:n -- 正整数表示盘子数,a --a杆子,b --b杆子,c --c杆子。
返回值:移动路径。
示例:n=3,返回:
A --> C
A --> B
C --> B
A --> C
B --> A
B --> C
A --> C

def hannota(n,a,b,c):
    if n == 1:
        print(a ,"-->", c)
        return None
    if n == 2:
        print(a,"-->",b)
        Print(  ① )
        print(b,"-->",c)
        return None
    Hannota(  ②  )
    print(a,"-->",c)
    Hannota(  ③  )
a = "A"
b = "B"
c = "C"
n =int(input('请输入黄金圆盘数量n:'))
hannota(n,a,b,c)


C++ 编辑器
输入
输出