Objectivo
Desarrollar un programa Python que pueda almacenar hasta 1000 registros de aplicaciones de software. Para cada aplicación, se deben mantener los siguientes datos:
* Nombre
* Categoría
* Descripción
* Versión (un conjunto de 3 puntos de datos: número de versión -texto-, mes de lanzamiento -byte-, y año de lanzamiento -unsigned short-)
El programa debe permitir al usuario las siguientes operaciones:
1 - Agregar datos de una nueva aplicación (el nombre no debe estar vacío, la categoría no debe exceder las 30 letras (o debe volver a ingresarse), y para la descripción, aceptará solo las primeras 100 letras ingresadas y omitirá el resto; la versión no necesita validación).
2 - Mostrar los nombres de todas las aplicaciones almacenadas. Cada nombre debe aparecer en una línea. Si hay más de 20 aplicaciones, debe hacer una pausa después de mostrar cada bloque de 20 aplicaciones y esperar a que el usuario presione Enter antes de continuar. El usuario debe recibir una notificación si no hay datos.
3 - Ver todos los datos de una determinada aplicación (de parte de su nombre, categoría o descripción, sensible a mayúsculas y minúsculas). Si hay varias aplicaciones que contienen ese texto, el programa las mostrará todas, separadas por una línea en blanco. Se le debe avisar al usuario si no se encuentran coincidencias.
4 - Actualizar un registro (al pedirle al usuario el número, el programa mostrará el valor anterior de cada campo, y el usuario puede presionar Enter para no modificar ninguno de los datos). Se le debe avisar (pero no volver a preguntar) si ingresa un número de registro incorrecto. No es necesario validar ninguno de los campos.
5 - Borrar un registro, cuyo número será indicado por el usuario. Se le debe avisar (pero no volver a preguntar) si ingresa un número incorrecto.
6 - Ordenar los datos alfabéticamente por nombre.
7 - Corregir espacios redundantes (convertir todas las secuencias de dos o más espacios en un solo espacio, solo en el nombre, para todos los registros existentes).
X - Salir de la aplicación (como no almacenamos la información, se perderán los datos).
Ejemplo Ejercicio Python
Mostrar Código Python
class SoftwareApplication:
def __init__(self, name, category, description, version):
self.name = name
self.category = category
self.description = description
self.version = version
def __str__(self):
return f"Name: {self.name}\nCategory: {self.category}\nDescription: {self.description}\nVersion: {self.version[0]} (Month: {self.version[1]}, Year: {self.version[2]})"
applications = []
while True:
print("\nMenu:")
print("1 - Add data of a new application")
print("2 - Show all stored applications")
print("3 - View all data for a certain application")
print("4 - Update a record")
print("5 - Delete a record")
print("6 - Sort data alphabetically by name")
print("7 - Fix redundant spaces in application names")
print("X - Exit")
choice = input("Enter your choice: ").strip().lower()
if choice == '1':
name = input("Enter application name: ").strip()
if not name:
print("Name cannot be empty.")
continue
category = input("Enter category (max 30 characters): ").strip()
while len(category) > 30:
print("Category is too long. Please re-enter.")
category = input("Enter category (max 30 characters): ").strip()
description = input("Enter description (max 100 characters): ").strip()
description = description[:100]
version_number = input("Enter version number: ").strip()
launch_month = int(input("Enter launch month (1-12): ").strip())
launch_year = int(input("Enter launch year: ").strip())
applications.append(SoftwareApplication(name, category, description, (version_number, launch_month, launch_year)))
elif choice == '2':
if not applications:
print("No applications stored.")
else:
counter = 1
for app in applications:
print(f"\n{counter}. {app}")
counter += 1
if counter % 20 == 0:
input("\nPress Enter to continue...")
elif choice == '3':
search_text = input("Enter part of the name, category, or description to search: ").strip()
found = False
for app in applications:
if (search_text.lower() in app.name.lower() or
search_text.lower() in app.category.lower() or
search_text.lower() in app.description.lower()):
print(f"\n{app}")
found = True
if not found:
print("No matches found.")
elif choice == '4':
try:
record_number = int(input("Enter the record number to update: ").strip()) - 1
if record_number < 0 or record_number >= len(applications):
print("Invalid record number.")
continue
app = applications[record_number]
print(f"\nCurrent data for application {record_number + 1}:")
print(f"Name: {app.name}\nCategory: {app.category}\nDescription: {app.description}\nVersion: {app.version[0]} (Month: {app.version[1]}, Year: {app.version[2]})")
new_name = input(f"Enter new name (current: {app.name}): ").strip()
if new_name:
app.name = new_name
new_category = input(f"Enter new category (current: {app.category}): ").strip()
if new_category:
app.category = new_category
new_description = input(f"Enter new description (current: {app.description}): ").strip()
if new_description:
app.description = new_description[:100]
new_version_number = input(f"Enter new version number (current: {app.version[0]}): ").strip()
if new_version_number:
app.version = (new_version_number, app.version[1], app.version[2])
new_month = input(f"Enter new launch month (current: {app.version[1]}): ").strip()
if new_month:
app.version = (app.version[0], int(new_month), app.version[2])
new_year = input(f"Enter new launch year (current: {app.version[2]}): ").strip()
if new_year:
app.version = (app.version[0], app.version[1], int(new_year))
except ValueError:
print("Please enter a valid number.")
elif choice == '5':
try:
record_number = int(input("Enter the record number to delete: ").strip()) - 1
if record_number < 0 or record_number >= len(applications):
print("Invalid record number.")
continue
del applications[record_number]
print(f"Application {record_number + 1} deleted.")
except ValueError:
print("Please enter a valid number.")
elif choice == '6':
applications.sort(key=lambda app: app.name.lower())
print("Applications sorted alphabetically by name.")
elif choice == '7':
for app in applications:
app.name = ' '.join(app.name.split())
print("Redundant spaces fixed in application names.")
elif choice == 'x':
print("Exiting the program...")
break
else:
print("Invalid choice, please enter a valid option.")
Output
Menu:
1 - Add data of a new application
2 - Show all stored applications
3 - View all data for a certain application
4 - Update a record
5 - Delete a record
6 - Sort data alphabetically by name
7 - Fix redundant spaces
Código de Ejemplo copiado
Comparte este ejercicios Python