Skip to content

Instantly share code, notes, and snippets.

@dasosjt
Created March 31, 2022 23:20
Show Gist options
  • Save dasosjt/241a7bfe8ac6ce967403cbc9a037db63 to your computer and use it in GitHub Desktop.
Save dasosjt/241a7bfe8ac6ce967403cbc9a037db63 to your computer and use it in GitHub Desktop.
ex3
#Diego Javier Sosa Torres
#sos14735
#ejercicio3 seccion1
#logica principal del programa
def main() -> None:
persons_dict_list = []
selected_option = None
while True:
try:
print("Menu\n 1. Insert person\n 2. Calculate statistics\n 3. Close")
selected_option = int(input("selected option: "))
if selected_option == 1:
persons_dict_list = new_person(input("insert person: "), persons_dict_list)
if selected_option == 2:
persons_dict_list = calculate_statistics(persons_dict_list)
if selected_option == 3:
print("closing.. ")
break
except:
print("incorrect selected option")
break
#flujo de ingreso nueva persona a la lista
def new_person(person, persons_dict_list) -> list:
months_dict = {
'enero': 1,
'febrero': 2,
'marzo': 3,
'abril': 4,
'mayo': 5,
'junio': 6,
'julio': 7,
'agosto': 8,
'septiembre': 9,
'octubre': 10,
'noviembre': 11,
'diciembre': 12
}
person_parts = person.split(',') if person and person != "" else []
if len(person_parts) > 1 and person_parts[0] != "" and person_parts[1] != "":
date = person_parts[1]
date_split = date.split('-')
if '-' in date and len(date_split) == 3 and date_split[1] != "" and date_split[1] in months_dict and len(list(date_split[2])) == 4:
date_number = calculate_date_number(
int(date_split[0]),
int(months_dict[date_split[1]]),
sum(list(map(lambda digit: int(digit), date_split[2])))
)
persons_dict_list.append({ 'person': person_parts[0], 'date_number': date_number })
else:
print('bad format')
else:
print('bad format')
return persons_dict_list
#calcular la fecha resultante
def calculate_date_number(day, month, sum_of_digits):
return day + month + sum_of_digits
#flujo de impresion de estadisticas y ordernar la lista
def calculate_statistics(persons_dict_list):
persons_dict_list = sorted(persons_dict_list, key=lambda a: a['date_number'], reverse=False)
if len(persons_dict_list) > 0:
print("highest number: ", persons_dict_list[0])
if len(persons_dict_list) > 1:
print("second highest number: ", persons_dict_list[1])
if len(persons_dict_list) > 2:
print("third highest number: ", persons_dict_list[2])
return persons_dict_list
main()
@dasosjt
Copy link
Author

dasosjt commented Mar 31, 2022

This part sum(list(map(lambda digit: int(digit), date_split[2]))) can be written like sum([int(date_digit) for date_digit in date_split[2]]) with list comprehension

or something like
list_date_digit = [] for date_digit in date_split[2]: list_date_digit.append(int(date_digit)) sum(list_date_digit)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment