Diferència entre revisions de la pàgina «ASIX-M3-UF3-A2.1- Solucions Exercicis fitxers de text»
De wikiserver
(Es crea la pàgina amb «1. Fes un programa que crei un diccionari en les dades dels empleats del fitxer de text empleats.txt. Y a continuació, el recorri mostrant les seves dades. <source la...».) |
|||
Línia 34: | Línia 34: | ||
for id, data in empleados.items(): | for id, data in empleados.items(): | ||
print("{:<4} {:<10} {:<11} {:<8}".format(id, data[0], data[1], data[2])) | print("{:<4} {:<10} {:<11} {:<8}".format(id, data[0], data[1], data[2])) | ||
+ | </source> | ||
+ | |||
+ | 2. Per aquest exercici, crea prèviament un fitxer de text, que contingui només un número. Fes un mètode que pugui rebre 0, 1 o 2 paràmetres. | ||
+ | |||
+ | <source lang="python"> | ||
+ | import sys | ||
+ | |||
+ | print("Un programa con parámetros.\n") | ||
+ | |||
+ | file = "UF3-A2.1-02.txt" | ||
+ | |||
+ | # Obtener una lista de argumentos (el primer argumento es el nombre del propio script, no hace falta) | ||
+ | args = sys.argv[1:] | ||
+ | |||
+ | # Contar el número de argumentos | ||
+ | num_args = len(args) | ||
+ | |||
+ | # Abrir fichero para escribir | ||
+ | fichero = open(file, "r+") | ||
+ | # Leer primer linea | ||
+ | primera_linea = fichero.readline() | ||
+ | # Volver a principio del fichero | ||
+ | fichero.seek(0) | ||
+ | try: | ||
+ | numero = int(primera_linea) | ||
+ | except ValueError: | ||
+ | print("La primera línea del fichero no contiene ningún número.") | ||
+ | exit() | ||
+ | |||
+ | # Procesar el resultado según los argumentos | ||
+ | if num_args == 0: | ||
+ | # Si no se dan argumentos | ||
+ | print(f"En el archivo {file} hay un número: {numero}.") | ||
+ | elif num_args == 1: | ||
+ | # Si solo se da 1 argumento | ||
+ | if args[0] == "inc": | ||
+ | print(f"El valor aumentado es ahora: {numero + 1}") | ||
+ | fichero.writelines(str(numero + 1)) | ||
+ | elif args[0] == "dec": | ||
+ | print(f"El valor reducido es ahora: {numero - 1}") | ||
+ | fichero.writelines(str(numero - 1)) | ||
+ | else: | ||
+ | print(f"Argumento {args[0]} desconocido.") | ||
+ | elif num_args == 2: | ||
+ | # Si solo se da 2 argumentos | ||
+ | try: | ||
+ | # Convertir args[1] a entero | ||
+ | arg1_numero = int(args[1]) | ||
+ | if args[0] == "inc": | ||
+ | print(f"El valor aumentado es ahora: {numero + arg1_numero}") | ||
+ | fichero.writelines(str(numero + arg1_numero)) | ||
+ | elif args[0] == "dec": | ||
+ | print(f"El valor reducido es ahora: {numero - arg1_numero}") | ||
+ | fichero.writelines(str(numero - arg1_numero)) | ||
+ | else: | ||
+ | print(f"Argumento {args[0]} desconocido.") | ||
+ | except ValueError: | ||
+ | # Si la conversión falló, entonces no es un número entero. | ||
+ | print(f"El argumento {args[1]} no es un número entero.") | ||
+ | else: | ||
+ | print("Demasiados argumentos.") | ||
+ | |||
+ | # Cerrar el fichero | ||
+ | fichero.close() | ||
</source> | </source> |
Revisió del 16:57, 27 abr 2023
1. Fes un programa que crei un diccionari en les dades dels empleats del fitxer de text empleats.txt. Y a continuació, el recorri mostrant les seves dades.
print("Un programa que cree un diccionario en los datos de los empleados del archivo de texto.\n")
# Crear un diccionario vacío para almacenar los datos de los empleados
empleados = {}
# Abrir el fichero para leer
fichero = open("empleats.txt", "r")
# Leer cada linea en el fichero
for i in fichero:
# Dividir la línea (i) en campos utilizando el punto y coma como separador
entrada = i.strip().split(';')
# Extraer el id, nombre, apellidos y sueldo de los campos
id = entrada[0]
nombre = entrada[1]
apellidos = entrada[2]
sueldo = int(entrada[3])
# Crear un list con nombre, apellidos y sueldo para cada entrada
empleado_list = [nombre, apellidos, sueldo]
# Añadir una lista al diccionario
empleados[id] = empleado_list
# Cerrar el fichero
fichero.close()
# Imprimir el diccionario
print("{:<4} {:<10} {:<11} {:<8}".format("Id", "Nombre", "Apellidos", "Sueldo"))
print("-" * 34)
for id, data in empleados.items():
print("{:<4} {:<10} {:<11} {:<8}".format(id, data[0], data[1], data[2]))
2. Per aquest exercici, crea prèviament un fitxer de text, que contingui només un número. Fes un mètode que pugui rebre 0, 1 o 2 paràmetres.
import sys
print("Un programa con parámetros.\n")
file = "UF3-A2.1-02.txt"
# Obtener una lista de argumentos (el primer argumento es el nombre del propio script, no hace falta)
args = sys.argv[1:]
# Contar el número de argumentos
num_args = len(args)
# Abrir fichero para escribir
fichero = open(file, "r+")
# Leer primer linea
primera_linea = fichero.readline()
# Volver a principio del fichero
fichero.seek(0)
try:
numero = int(primera_linea)
except ValueError:
print("La primera línea del fichero no contiene ningún número.")
exit()
# Procesar el resultado según los argumentos
if num_args == 0:
# Si no se dan argumentos
print(f"En el archivo {file} hay un número: {numero}.")
elif num_args == 1:
# Si solo se da 1 argumento
if args[0] == "inc":
print(f"El valor aumentado es ahora: {numero + 1}")
fichero.writelines(str(numero + 1))
elif args[0] == "dec":
print(f"El valor reducido es ahora: {numero - 1}")
fichero.writelines(str(numero - 1))
else:
print(f"Argumento {args[0]} desconocido.")
elif num_args == 2:
# Si solo se da 2 argumentos
try:
# Convertir args[1] a entero
arg1_numero = int(args[1])
if args[0] == "inc":
print(f"El valor aumentado es ahora: {numero + arg1_numero}")
fichero.writelines(str(numero + arg1_numero))
elif args[0] == "dec":
print(f"El valor reducido es ahora: {numero - arg1_numero}")
fichero.writelines(str(numero - arg1_numero))
else:
print(f"Argumento {args[0]} desconocido.")
except ValueError:
# Si la conversión falló, entonces no es un número entero.
print(f"El argumento {args[1]} no es un número entero.")
else:
print("Demasiados argumentos.")
# Cerrar el fichero
fichero.close()