Está en la página 1de 2

Universidad de O’Higgins

Instituto de Ciencias de la Ingeniería


IN1007 – Programación

Ejercicio Recuperativo
7 de Enero 2021

P1. La empresa de videojuegos Xmart maneja los juegos en venta y preventa en dos archivos
diferentes con la siguiente estructura: titulo;empresa, como por ejemplo los siguientes:
venta.txt
1 starcraft i i ; blizzard
2 t h e l a s t o f us ; naughty dog
3 ...

preventa.txt
1 u n c h a r t e d 4 ; naughty dog
2 t h e w i t c h e r 3 ; cd p r o j e k t RED
3 s i m s 4 ;EA
4 ...

Los archivos anteriores son ejemplos, pueden contener más juegos y no necesariamente se llaman
venta.txt y preventa.txt.

a Desarrolle la función agregar_venta(nombre_archivo, datos), que reciba como parametro


una variable de tipo string con el nombre del archivo de ventas y los datos del juego como
una lista. Debe agregar al final del archivo el juego ingresado, retornando True. En caso de
que el nombre del juego ya se encuentre en el archivo, no lo guarda y simplemente retorna
False.
1 >>> a g r e g a r _ v e n t a ( ' venta . txt ' , [ ' assasins creed iv ' , ' ubisoft ' ] )
2 True

venta.txt
1 starcraft i i ; blizzard
2 t h e l a s t o f us ; naughty dog
3 assasins creed iv ; ubisoft

b Desarrolle la función preventa_a_venta(archivo_venta, archivo_preventa, titulo)


que reciba como parámetro tres variables de tipo string, una con el nombre del archivo con las
ventas, otra con las preventas y la última con el titulo de un juego. La función crea un nuevo
archivo de preventas (a cuyo nombre original se le antepone la palabra nueva), eliminando el
juego y agregándolo en el archivo venta, retornando True. En caso de no existir en preventa,
no lo guarda y simplemente retorna False.
1 >>> preventa_a_venta ( ' venta . txt ' , ' preventa . txt ' , ' sims 4' )
2 True

venta.txt
1 starcraft i i ; blizzard
2 t h e l a s t o f us ; naughty dog
3 assasins creed iv ; ubisoft
4 s i m s 4 ;EA

1
Universidad de O’Higgins
Instituto de Ciencias de la Ingeniería
IN1007 – Programación

nuevapreventa.txt
1 u n c h a r t e d 4 ; naughty dog
2 t h e w i t c h e r 3 ; cd p r o j e k t RED

c Desarrolle la función buscar_juegos(archivo_venta, archivo_preventa, empresa) que


recibe el nombre del archivo de ventas, de preventas y el nombre de una empresa de juegos.
La función retorna una lista de tuplas, donde la tupla posee la siguiente estructura (nombre
del juego, archivo donde se encuentra). Guíese por el ejemplo.
1 >>>b u s c a r _ j u e g o s ( ' venta . txt ' , ' preventa . txt ' , ' naughty dog ' )
2 [ ( ' the last of us ' , ' venta ' ) , ( ' uncharted 4' , ' preventa ' ) ]

P2. Escribir una función que calcule la persistencia multiplicativa de un entero positivo utilizando
la técnica de recursividad. La persistencia multiplicativa es el número de veces que se deben
multiplicar los dígitos del entero positivo hasta que se obtenga un sólo dígito. Por ejemplo:

persistencia(39) => 3 Porque 3*9 = 27, 2*7 = 14, 1*4=4 y 4 tiene un sólo dígito.
persistencia(999) => 4 Porque 9*9*9 = 729, 7*2*9 = 126, 1*2*6 = 12, y finalmente 1*2 = 2.
persistencia(4) => 0 Porque 4 es un entero positivo de un sólo dígito

Sugerencia: Utilice un contador para determinar la persistencia del entero positivo. Para esto,
considere el siguiente ejemplo donde se utiliza un contador:

1 def E j e m p l o R e c u r s i o n ( x , count = 0 ) :
2
3 # Caso b a s e
4 i f x <= 1 0 :
5 return count
6
7 # Recursion
8 x −= 2 # d i s m i n u i r x nos l l e v a h a c i a e l c a s o b a s e
9 return E j e m p l o R e c u r s i o n ( x , count+1 ) # c o n t a d o r u t i l i z a d o como argumento
10
11 print ( E j e m p l o R e c u r s i o n ( 2 0 ) ) # −−> imprime 5

También podría gustarte