Sociedad de Electrónica de China Mayo de 2023 Programación de software para jóvenes Prueba de examen de nivel Python Nivel 4 Preguntas reales (incluidas las respuestas)

2023-05 Preguntas reales del examen de nivel 4 de Python

Puntuación: 100

Número de preguntas: 38

Duración de la prueba: 60min

1. Preguntas de opción múltiple (25 preguntas en total, 50 puntos en total)

1. ¿Cuál es el resultado del siguiente segmento del programa? (A) (2 puntos)

def s(n):
    if n==0:
        return 1
    else:
        return n +s(n-1)
print(s(7))

R. 29

B.27

c.1

D. 0

2. Cuando n es 6, ¿cuál es el resultado de ejecutar el siguiente programa Python? (B) (2 puntos)

def f(n):
    if n<=2:
        return 1
    else:
        return f(n-1)+f(n-2)
n=int(input("请输入一个正整数:"))
print(f(n))

R.5

B.8

C.11

D.13

3. Hay una vaca que al principio de cada año da a luz una novilla. Cada novilla da a luz una novilla al inicio de cada año a partir del cuarto año. ¿Cuántas vacas hay en el enésimo año? Del método recursivo se puede inferir que cuando el número de años es menor o igual a 4, hay varias vacas en ese año, es decir, a[1]=1; a[2]=2; a[3 ]=3;a[4] =4. Cuando n es mayor que 4, la novilla nacida en el primer año también puede dar a luz una novilla, es decir, es hora de considerar si la novilla puede dar a luz, entonces cuando n>4, a [n] =? (A) (2 puntos)

A. un[n-1]+un[n-3]

B. un[n-1]+un[n-4]

C. a[1]+a[3]

D. un[-1]+un[-3]

Análisis de respuesta: Hubo cuatro en los primeros cuatro años. A partir del quinto año, la novilla nacida en el segundo año también dará a luz una vaca (y de ahora en adelante habrá una vaca al comienzo de cada año), más las novillas nacidas en el primer año. Las novillas nacidas de una vaca hacen un total de seis vacas; al sexto año se deben sumar las novillas nacidas de la misma vaca en el tercer año, haciendo un total de nueve vacas; y pronto.

4. La búsqueda binaria también se denomina media búsqueda. ¿Cuál de las siguientes secuencias es adecuada para el algoritmo de búsqueda binaria? (D) (2 puntos)

R. 11 99 4 25 3 39

B. 43 71 78 81 6 55

C 67 62 68 4 1 17

D. 85 78 59 53 19 18

Análisis de respuesta: De acuerdo con el principio de implementación de la búsqueda binaria, primero los elementos de la secuencia deben estar en orden.

5. Entre las 32 monedas de oro nuevas, hay una moneda falsa que se parece exactamente a una moneda de oro real (con una masa más pequeña). Ahora solo queda un saldo. ¿Cuántas veces se puede descubrir la moneda falsa usando el ¿método de dicotomía? (B) (2 puntos)

R.4

B.5

C.6

D.7

Análisis de respuesta: método de búsqueda binaria, cada vez que se compara con el elemento medio del intervalo, el intervalo a buscar se reduce a la mitad del anterior, hasta que se encuentra el elemento a buscar, o el intervalo se reduce a 0 .

6. Se sabe que en cierto programa hay una variable global llamada a. En una función del programa, se vuelve a definir una variable a y la variable no es una variable de tipo combinado.

¿Cuál de las siguientes afirmaciones es correcta? (B) (2 puntos)

R. Si a se declara como global en esta función, la operación en a no tiene nada que ver con la variable global a.

B. Si a no se declara como global en esta función, la operación en a no tiene nada que ver con la variable global a.

C. Si a no se declara como global en esta función, la operación en a es la operación en la variable global a.

D. Independientemente de si a se declara como global en esta función, las operaciones en a son operaciones en la variable global a.

Análisis de respuesta: Si no se declara como global, es una variable local, por lo que no tiene nada que ver con la variable global a.

7. Para la lista del programa, ¿qué opción tiene los parámetros completados en la línea horizontal en range() y tiene la mayor eficiencia de ejecución del algoritmo? (C) (2 puntos)

a=[1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1]
for i in range _____:
    if a[i]==1:
        print(i)

R. (0,16,1)

B. (0,16,2)

C. (0,16,3)

D. (0,16,4)

8. ¿Cuál de las siguientes funciones no se puede llamar directamente? (B) (2 puntos)

Una impresión( )

B. raíz cuadrada ()

C. cadena ()

D. dictar ()

Análisis de respuesta: La función sqrt () es una función en el módulo matemático y no se puede llamar directamente. El módulo matemático debe importarse primero.

9. Respecto a la declaración de devolución, ¿cuál de las siguientes afirmaciones es correcta? (A) (2 puntos)

A. El tipo de datos del valor de retorno en la declaración de devolución puede ser una lista

B. No puede haber expresiones en la declaración de devolución.

C. Una función tiene al menos una declaración de devolución.

D. return solo puede devolver un valor

Análisis de respuesta: la declaración de devolución puede contener expresiones y también puede devolver múltiples valores. Una función puede tener un valor de retorno o ningún valor de retorno.

10. Respecto a la descripción de funciones, ¿cuál es incorrecta? (C) (2 puntos)

A. Devolver el resultado a través de la declaración de devolución en la función

B. Las funciones pueden mejorar la reutilización del código.

C. Las variables globales no se pueden utilizar dentro de una función

D. La definición de la función debe estar antes de la declaración de llamada de la función del programa principal.

11. Xiaofang escribe una función anónima para calcular el área de un rectángulo ¿Cuál de las siguientes afirmaciones es correcta? (A) (2 puntos)

A. primero = lambda a,b : a * b

B. lambda a,b:a*b

C. lambda a,b,a*b

D. primero = lambda a,b,a*b

Análisis de respuesta: la palabra clave lambda representa una función anónima. Los parámetros antes de los dos puntos representan los parámetros de la función y el valor de retorno después de los dos puntos representa el valor de retorno. Al definir una función anónima, debe asignarla a una variable.

12. Ejecute el siguiente programa, ¿cuál es el resultado? (A) (2 puntos)

s = 1
def sums(n):
    global s
    s = 0
    s = s + n
    print(s)
sums(5)
print(s)

R. 5 5

B.5 1

C.1 1

D.1 5

Análisis de respuesta: si desea operar variables fuera de la función dentro de la función, debe declararlas como globales dentro de la función. En esta pregunta, s se declara como global dentro de la función, por lo que los cambios dentro de la función afectarán fuera de la función. , por lo que los resultados de salida son 5.

13. Xiao Ming ayuda al maestro a contar el número de estudiantes de 10 años. El maestro tiene el número de identificación y otra información de cada estudiante del grado. Escribió el programa de la siguiente manera.

#列表stud存储每位学生的身份证号码,如
stud = ['110726201205261117','120718201209011101']
def cj(xs):
    c = 0
    for s in xs:
        age = int(   ①   )
        if 2023 - age == 10:
            c += 1
    return c
print(cj(stud) )

Entre los siguientes códigos, ¿qué código subrayado ① no se puede seleccionar para implementar la función estadística? (D) (2 puntos)

R. s[6:10]

B.s[6:-8]

C. v[-12:-8]

D.s[-12:11]

Análisis de respuesta: corte el código del año de nacimiento del número de identificación. Los códigos de las tres opciones A, B y C son todos correctos.

14. ¿Cuál de las siguientes descripciones de recursividad es correcta? (C) (2 puntos)

A. Debe haber una estructura de bucle en la función recursiva.

B. La recursividad no refleja la idea de "reducir cosas grandes a cosas pequeñas"

C. La recursividad tiene condiciones límite claras para finalizar la recursividad.

D. La ejecución recursiva es más eficiente

Análisis de respuesta: La recursividad tiene condiciones límite claras para finalizar la recursividad y el valor límite al final. La recursividad encarna la idea de "reducir cosas grandes a cosas pequeñas".

15. La madre de Xiaofang divide las manzanas de la siguiente manera: divide la mitad y agrega una manzana el primer día, divide la mitad restante y agrega una manzana el segundo día, y divide la mitad restante y agrega una manzana todos los días a partir de entonces. Al octavo día, mi madre descubrió que solo quedaba una manzana. ¿Cuántas manzanas tenía la madre de Xiaofang al principio? ¿Cuál de los siguientes algoritmos podemos utilizar para resolver este problema? (B) (2 puntos)

Un descubrimiento

B. recursividad

C. Enumeración

D. ordenar

Análisis de respuesta: Calcule la cantidad de manzanas restantes en el séptimo día a partir del octavo día en adelante, luego calcule la cantidad de manzanas en el sexto día y resuelva el problema en secuencia. Este es un problema de recursividad.

16. Las leyes de la naturaleza: el número de pétalos.

El número de pétalos en la mayoría de los pétalos es 1, 1, 2, 3, 5, 8, 13, 21,... Si observas cuidadosamente el orden de estos números, encontrarás que la disposición de estos números es regular, que es, la secuencia de Bonacci. El estudiante Xiao Li escribe un programa para encontrar el valor del enésimo elemento de la secuencia.

 

El código en el cuadro consta de las siguientes tres partes: ① a=b ② b=c ③ c=a+b ¿Cuál de las siguientes opciones tiene el orden correcto de códigos? (D) (2 puntos)

R. ①②③

B. ①③②

C.③②①

D. ③①②

17. Un estudiante utiliza la búsqueda de bisección y la búsqueda secuencial para encontrar el número 15 en la secuencia numérica "1, 3, 5, 8, 15, 21, 35, 65". ¿A cuál de los siguientes números se puede acceder mediante ambos métodos? (C) (2 puntos)

R.3

B.5

C.8

D.34

Análisis de respuesta: Para buscar el número 15 secuencialmente, los números a los que se accede son 1, 3, 5, 8 y 15; para utilizar la búsqueda binaria del número 15, los números a los que se accede son 8, 21 y 15 en orden; el número 8 se accede por ambos métodos. Por lo tanto elige C.

18. Xiao Li verifica la biblioteca Python instalada en la computadora. ¿Cuál de los siguientes comandos es factible? (B) (2 puntos)

A. instalación de pip

B. lista de pips

C. espectáculo de pip

D. ayuda pip

19. Ejecute el siguiente programa, ¿cuál es el resultado? (A) (2 puntos)

a = [0] * 10
def tj(n):
    while n>0:
        a[n%10] += 1
        n //= 10        
    return sum(a)
print(tj(20230113))

R.8

B.12

C.4

D.6

Análisis de respuesta: la función tj cuenta el número de veces que aparece cada dígito en el número entero n. Cuando n = 20230113, 0 aparece 2 veces, 1 aparece 2 veces, 2 aparece 2 veces y 3 aparece 2 veces, por lo que la respuesta es A. .

20. Normalmente, al definir una función, ¿cuántos parámetros contiene como máximo? (D) (2 puntos)

R.3

B.4

C.5

D. tantos como quieras

21. ¿Cuál de las siguientes funciones se puede llamar para ver la documentación? (A) (2 puntos)

Una ayuda()

B. rango()

C. sólo()

D. imprimir()

Análisis de respuesta: la función ayuda () puede ver la documentación.

22. ¿Cuál es el resultado del siguiente código? (C) (2 puntos)

def sum(a):
    a+=1
a=6
sum(a)
print(a)

R.8

B.7

C.6

D.2

23. ¿Cuál es el resultado del siguiente código? (B) (2 puntos)

def py(a,b=2):
  a=a%b
  return(a)
print(py(7))

R.1,2

B.1

C.3,2

D.3

24. ¿Cuál es el resultado del siguiente código? (B) (2 puntos)

def py(b):
    b+=3
    return(b)
print(py(3))

R.3

B.6

C. 0

D.9

25. ¿Cuál de las siguientes es una biblioteca de terceros para la segmentación de palabras chinas en Python? (D) (2 puntos)

A.  pandas

B. hermosa sopa4

C.python-docx

D. jieba

Análisis de respuesta: jieba pertenece a la biblioteca de terceros de la dirección de segmentación de palabras chinas de Python

2. Preguntas de Verdadero o Falso (10 preguntas en total, 20 puntos en total)

26. Cada vez que ingresa a un nivel más profundo de recursividad, el tamaño del problema debería aumentar en comparación con la recursividad anterior. ( equivocado)

Análisis de respuesta: cada vez que ingresa a un nivel de recursividad más profundo, el tamaño del problema debe reducirse en comparación con la última recursividad.

27. Los parámetros posicionales y los parámetros de palabras clave son conceptos al llamar a funciones. Cuando coexisten, los parámetros de palabras clave deben escribirse antes que los parámetros desconocidos, de lo contrario se producirán errores de sintaxis. (equivocado)

correcto incorrecto

Análisis de respuesta: cuando los dos coexisten, los parámetros de palabras clave deben escribirse después de los parámetros posicionales; de lo contrario, se producirá un error de sintaxis.

28. Una función puede no tener parámetros o tener múltiples parámetros, pero se debe determinar el número de parámetros. (equivocado)

Análisis de respuesta: El número de parámetros de una función puede ser incierto.

29. No hay forma de utilizar esta función sin comprender los detalles de su implementación interna. ( equivocado)

Análisis de respuesta: al llamar a una función, solo necesita conocer el nombre de la función y su entrada y salida, no necesita conocer los detalles de implementación de la función.

30. Xiao Ming escribe la siguiente función:

def jiafa(x,y=0): 
    return x+y 

Llama a la función usando la declaración jiafa(10) y el programa generará un error de ejecución. (equivocado)

Análisis de respuesta: cuando se llama a la función, no es necesario pasar un valor al parámetro predeterminado en el parámetro de la función, por lo tanto, cuando se llama a la función, se devuelve el resultado 10 y no se genera ningún error de ejecución.

31. Ejecute el siguiente programa, el resultado de salida es 4. (equivocado)

def fun(n):
    if n == 1:
        return 1
    else:
        fun(n-1) * 2
print(fun(3))

Análisis de respuesta: las funciones recursivas deben tener una declaración de retorno para devolver, es decir, devolver diversión (n-1) *2.

32. La complejidad del espacio se refiere a la medición del espacio de almacenamiento necesario cuando un algoritmo se escribe en un programa y se ejecuta en una computadora. Se registra como S(n), donde n es la escala o tamaño del problema. ( bien)

Análisis de respuesta: La complejidad del espacio se refiere a la medición del espacio de almacenamiento requerido cuando un algoritmo se escribe en un programa y se ejecuta en una computadora, registrado como S (n), donde n es la escala o tamaño del problema.

33. Las funciones personalizadas no pueden tener parámetros. ( bien)

34. El algoritmo de divide y vencerás definitivamente utilizará la recursividad. ( equivocado)

Análisis de respuesta: el algoritmo de divide y vencerás no utiliza necesariamente la recursividad. Por ejemplo, la búsqueda bifurcada también pertenece a divide y vencerás, pero no utiliza recursividad.

35. Para facilitar la escritura de código posterior al llamar a la biblioteca, puede darle un alias, como nombrar matplotlib plt. ( bien)

3. Preguntas de programación (3 preguntas en total, 30 puntos en total)

36. Se sabe que los pasos de cálculo para el enésimo término de un determinado c son los siguientes:

 

Xiao Ming escribe un programa para calcular el resultado del enésimo elemento. Primero ingrese n desde el teclado y luego use la relación de recursividad anterior para calcular el resultado. Mejore el código subrayado.

def fc(n):
    if n ==1:
                 ①        
    else:
        a=6*n-1
        b=8*n+3
        return          ②        
m=int(input("请输入一个整数:"))
if not isinstance(m,int):     #判断输入的m是否为整数
    print('请输入一个整数')
else:
    print(        ③        )

Procedimiento de referencia:

def fc(n):
    if n ==1:
        return 1 
    else:
        a=6*n-1
        b=8*n+3
        return  a*fc(n-1)/b
m=int(input("请输入一个整数:"))
if not isinstance(m,int):     #判断输入的m是否为整数
    print('请输入一个整数')
else:
    print(fc(m))

Nota: En esta pregunta, se conoce la fórmula de cálculo para el enésimo elemento de c. El valor de c es 1 para el primer elemento. El segundo elemento se puede calcular basándose en la fórmula del primer elemento. La función fc está escrita en el programa para realizar el resultado del cálculo de c., en la función fc, el primer elemento devuelve 1, por lo que el código en ① devuelve 1; el código en ② en la función fc es para calcular el enésimo dato. De la fórmula de recursividad, tenemos Se puede saber que el código es a*fc(n-1)/b, el código en ③ es llamar a la función fc para calcular el elemento de entrada m, por lo que el código allí es fc(m).

Calificación:

(1) devolver 1; (3 puntos)

(2)a*fc(n-1)/b;(3分)

(3) fc(m). (2 minutos)

37. Complete el siguiente código y programa para generar la tabla de multiplicar de forma recursiva.

  

 

def get_result(num):
    if num == 1: 
        print("        ①        ") 
     else: 
        get_result(        ②        ) 
        for i in range(1,        ③        ): 
            print("%d * %d = %d" % (i, num, i * num), end="  ") 
        print()
get_result(        ④        )

Procedimiento de referencia:

def get_result(num): 
    if num == 1:
        print("1 * 1 = 1") 
    else:
        get_result(num - 1)
        for i in range(1,num + 1): 
            print("%d * %d = %d" % (i, num, i * num), end="  ")
        print()
get_result(9)

Calificación:

(1)1*1=1; (3 puntos)

(2)num-1; (3 puntos)

(3) número+1; (2 puntos)

(4)9. (2 minutos)

   

38. Hay un caracol en el fondo de un pozo de n metros de profundidad. El caracol sube cada día un metro y retrocede b metros.

Reciba los números enteros n, a, b del teclado, separados por espacios.

Y completa el siguiente procedimiento para calcular cuántos días tardará el caracol en salir del pozo.

n,a,b=input("请输入井深,蜗牛每天往上爬几米,蜗牛滑下几米:").        ①        
n,a,b=        ②        
pos=0
i=0
while        ③        :
             ④        
             ⑤        
print("第%d天,蜗牛距离井口%d米;"%(i,n-pos))
print("第%d天,蜗牛成功离开了深井!!"%(        ⑥        ))

Procedimiento de referencia:

n,a,b=input("请输入井深,蜗牛每天往上爬几米,蜗牛滑下几米:").split()
n,a,b=int(n),int(a),int(b)
pos=0
i=0
while pos+a<n:
    i+=1
    pos+=(a-b)
print("第%d天,蜗牛距离井口%d米;"%(i,n-pos))
print("第%d天,蜗牛成功离开了深井!!"%(i+1))

Calificación:

(1) dividir(); (2 minutos)

(2)int(n),int(a),int(b);(2分)

(3)pos+a<n;(2分)

(4) i+=1; (2 minutos)

(5) pos+=(ab); (2 puntos)

(6) i+1. (2 minutos)

   

Supongo que te gusta

Origin blog.csdn.net/m0_46227121/article/details/131207814
Recomendado
Clasificación