Python - problema con mi codigo

 
Vista:

problema con mi codigo

Publicado por luis b (1 intervención) el 28/06/2021 00:24:29
Tengo un problema con este codigo es un ejercicio en python y quisiera saber si me pueden ayudar el enunciado es el siguiente.

Uno de los profesores de programación de la Universidad está comenzando a perder su memoria. Hace algún tiempo, cuando comenzó a trabajar como docente, no únicamente conocía perfectamente todos los nombres y apellidos de sus estudiantes, sino que además contaba con una habilidad increíble para detectar copia en los exámenes.

Debido a estas circunstancias, el profesor ha decidido solicitar ayuda para construir un programa en Python que le permita comprobar si la perdida de su memoria fotográfica podría tener como consecuencia una disminución en la cantidad de copias que se detectan durante los exámenes.

Entrada La entrada estará formada por dos líneas:
La primera línea aparecerán dos números N: indican el número de exámenes a calificar y K : el número de exámenes que el profesor es capaz de recordar (1≤N≤100,1≤K≤100).
La segunda línea contiene N números (entre 1 y 10) 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.
Salida El programa imprimirá dos números separados por un espacio.

El primero representará el número total de exámenes con similitudes.
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.

Entrada 5 1
1 2 3 1 2
5 2
1 2 3 1 2
5 3
1 2 3 1 2
5 1
1 1 1 1 1
Salida 2 0
2 0
2 2
4 4

las salidas de el numero de copias detectadas no me da y no se porque alguien me puede dar una mano se lo agradeceria

numex=input()
respuestas=input()

def copia(numex =[], respuestas=[]):
try:
numex=numex.split()
numex=[int(s)for s in numex]
respuestas=respuestas.split()
respuestas=[int(s)for s in respuestas]
copy=[]
detected=0
numcopy=0
for i in range(0,numex[0]):
if respuestas[i]not in copy:
copy.append(respuestas[i])
else:
numcopy+=1
for j in range (1,numex[1]+1):
if i-j >=0:
if respuestas[i]== respuestas[i-j]:
detected+=1
else:
break

finally:
print(str(numcopy), str(detected),end=" ")

copia(numex, respuestas)
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 Francisco Javier
Val: 249
Ha aumentado su posición en 29 puestos en Python (en relación al último mes)
Gráfica de Python

problema con mi codigo

Publicado por Francisco Javier (313 intervenciones) el 28/06/2021 09:24:30
Buenas si lo que quieras que te devuelva los exámenes copiados reales y al lado los que el profesor recordó solo has de terminar así:
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
numex=input()
respuestas=input()
 
def copia(numex =[], respuestas=[]):
try:
numex=numex.split()
numex=[int(s)for s in numex]
respuestas=respuestas.split()
respuestas=[int(s)for s in respuestas]
copy=[]
detected=0
numcopy=0
for i in range(0,numex[0]):
if respuestas[i]not in copy:
copy.append(respuestas[i])
else:
numcopy+=1
for j in range (1,numex[1]+1):
if i-j >=0:
if respuestas[i]== respuestas[i-j]:
detected+=1
else:
break
 
finally:
print(str(numcopy), numex[1],end=" ")
 
copia(numex, respuestas)
En este caso podríamos de prescindir de algunas parte del código.
Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar