Control horari¶
Una fàbrica utilitza un sistema de marcatge horari que controla l’hora
d’entrada i de sortida dels empleats, quedant enregistrades les dades
diàriament en un fitxer. Cada entrada o sortida d’un empleat resulta en
una línia del fitxer amb les dades del NIF, nom i cognoms, l’hora
d’entrada o sortida (amb el format HH:MM) i un caràcter que indica si
l’empleat ha entrat a o sortit de treballar ('E' o 'S'). En cada
línia, les dades estan separades per ', ' (coma-espai) i les línies
estan ordenades temporalment. El fitxer conté dues primeres línies
inicials que descriuen els camps. Per exemple:
NIF, Nom/Cognoms, Hora, E/S ----------------------------------------- 11223344F, Ramon Pladevall Homs, 8:00, E 44337799P, Santiago Forns Cheng, 8:01, E 77722212M, Corneli Perez Simon, 8:33, E 11122233V, Anna Pi Fort, 9:30, E 44337799P, Santiago Forns Cheng, 10:31, S
Pots descarregar-te el fitxer exemple sencer
entradasortida.txt
Desa les següents funcions al fitxer control.py.
Dissenya la funció
suma_temps()que donats 4 enters corresponents a les hores i minuts d’un primer temps i les hores i minuts d’un segon temps, retorna dos enters corresponents a les hores i minuts del temps suma dels dos donats. Exemples:>>> suma_temps(2, 45, 3, 35) (6, 20) >>> suma_temps(1, 20, 4, 15) (5, 35) >>> suma_temps(3, 50, 1, 55) (5, 45)
Nota
Podeu descarregar el fitxer amb tests
suma_temps.txtDissenya la funció
resta_temps()que donats 4 enters corresponents a les hores i minuts d’un primer temps i les hores i minuts d’un segon temps, retorna dos enters corresponents a les hores i minuts de la diferència entre el primer temps i el segon. Exemples:>>> resta_temps(3, 45, 2, 35) (1, 10) >>> resta_temps(2, 20, 2, 15) (0, 5) >>> resta_temps(3, 5, 1, 55) (1, 10) >>> resta_temps(5, 15, 2, 35) (2, 40)
Nota
Podeu descarregar el fitxer amb tests
resta_temps.txtDissenyeu la funció
control_1()que, donat el nom d’un fitxer que conté dades en el format descrit i el NIF d’un treballador de l’empresa, calculi et temps que aquest ha estat treballant. La funció ha de retornar dos enters corresponents a les hores i els minuts. Aquesta funció ha d’usar les dues anteriors. Un treballador pot haver entrat i sortit més d’un cop. Exemples:>>> control_1 ('entradasortida.txt', '11223344F') (8, 15) >>> control_1 ('entradasortida.txt', '44337799P') (5, 19) >>> control_1 ('entradasortida.txt', '77722212M') (7, 16) >>> control_1 ('entradasortida.txt', '11122233V') (6, 5)
Nota
Podeu descarregar el fitxer amb tests
control_1.txtDissenyeu la funció
control_2()que, donat el nom d’un fitxer que conté dades en el format descrit i el NIF del director de la fàbrica, retorniTruesi, i només si, el director ha estat el darrer d’entrar a treballar. Si el director aquell dia no ha treballat, la funció també ha de retornarTrue. Amb les dades de l’exemple, si la directora és la Maria Sans, la funció ha de retornarTrue; en canvi, si el director és qualsevol dels altres quatre empleats, la funció ha de retornarFalse. Suggeriment: construiu primer un diccionari on la clau sigui el NIF i el valor el primer temps en què el treballador ha entrat a treballar. Exemples:>>> control_2 ('entradasortida.txt', '11223344F') False >>> control_2 ('entradasortida.txt', '44337799P') False >>> control_2 ('entradasortida.txt', '77722212M') False >>> control_2 ('entradasortida.txt', '11122233V') False >>> control_2 ('entradasortida.txt', '52458425H') True >>> control_2 ('entradasortida.txt', '12345678X') True
Nota
Podeu descarregar el fitxer amb tests
control_2.txt
Solucions
Disposeu de solucions al fitxer control.py