Python - Ejercicio calificación de exámenes

 
Vista:
Imágen de perfil de Ivan
Val: 16
Ha aumentado su posición en 212 puestos en Python (en relación al último mes)
Gráfica de Python

Ejercicio calificación de exámenes

Publicado por Ivan (4 intervenciones) el 17/06/2021 23:50:32
Hola a todos.
Soy bastante nuevo en la programación con python, estoy desarrollando varios problemas y me encontré con este, y de verdad les agradecería si me pueden ayudar guiándome en el como desarrollarlo:
Entradas:
La entrada estará formada por dos líneas:
La primera línea aparecerán dos números N y K que indican el número de exámenes a calificar y el número de exámenes que el profesor es capaz de recordar (1≤N≤10000,1≤K≤1000).
La segunda línea contiene N números (entre 1 y 100) separados por espacios que representan las respuestas de cada uno de los exámenes.
Dos exámenes se consideran copiados si están representados por el mismo número.
Salidas:
El programa imprimirá dos números separados por un espacio.
El primero representará el número total de exámenes copiados.
El segundo representará la cantidad de copias detectadas por el profesor considerando que al calificar un examen solo es capaz de recordar los K exámenes anteriores.

Ejemplo 1:
Entradas
5 1
1 2 3 1 2
Salidas
2 0

Ejemplo 2:
Entradas
5 3
1 2 3 1 2
Salidas
2 2

Muchas gracias de antemano por cualquier ayuda que puedan brindarme
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Ivan
Val: 16
Ha aumentado su posición en 212 puestos en Python (en relación al último mes)
Gráfica de Python

Ejercicio calificación de exámenes

Publicado por Ivan (4 intervenciones) el 18/06/2021 01:35:57
Ya lo resolví, el código es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
def f_sublistas(longitud, lista):
 
    listas = []
    for i in range(len(lista)-longitud):
        listas.append(lista[i:i+longitud+1])
    return listas
 
def f_repetidos_sublistas(sublistas, repetidos):
    respuesta = 0
    for lista in sublistas:
        for x in repetidos:
 
          if lista.count(x) >= 2:
                respuesta += lista.count(x) - 1
 
    return respuesta
 
if __name__ == '__main__':
    repetidos = []
    copias_totales = 0
    copias_profesor = 0
    n, k = [int(x) for x in list(input().split())]
    examenes = [int(x) for x in list(input().split())]
    if 1 <= n <= 1000000 \
        and 1 <= k <= 10000 \
        and n == len(examenes):
        for x in examenes:
           if x in repetidos:
            copias_totales += 1
           else :
            repetidos.append(x)
        sublistas = f_sublistas(k, examenes)
        copias_profesor = f_repetidos_sublistas(sublistas, repetidos)
        print('%d %d' % (copias_totales, copias_profesor))
    else:
        None

Pero ahora tengo este problema:
Cuando la entrada es:
7 2
1 1 1 1 1 1 1

La salida es:
6 10
Cuando debería ser:
6 6
No debería contabilizar todas las repeticiones, no se si alguien me podría ayuda, gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar