Hola,ayer termine un trabajo el cual nos propusieron,lo logre terminar todo bien.
Pero ahora tenemos que hacer que cuando un archivo se abra por ejemplo en modo lectura,crear una función (def) para hacer eso mismo.
Es decir
#De hacer esto
file = open("name.txt","r")
#A esto
def open_read():
file = open("name.txt","r")
Este es mi código
import os
clear = lambda: os.system('cls')
def encontrar_alumno(num_alumno):
archivo = open(nom_archivo,"r")
alumnos = archivo.readlines()
tot_alumnos = len(alumnos)
for indice in range(tot_alumnos):
el_alumno = alumnos[indice]
alumno_leido = el_alumno.split(' ')
if alumno_leido[0]==num_alumno:
return alumno_leido
archivo.close()
return ''
def consulta_ape():
lista_ape = [] # lista a usar para agregar pertenencia
archivo = open(nom_archivo, 'r')
alumnos = archivo.readlines()
tot_alumnos = len(alumnos)
while True:
clear()
el_apellido = input('Ingrese Apellido a buscar (s para salir): ').capitalize()
if el_apellido.isalpha():
if el_apellido.lower() =='s':
break
else:
for indice in range(tot_alumnos):
el_alumno = alumnos[indice]
alumno_leido = el_alumno.split(' ')
if alumno_leido[1]==el_apellido:
lista_ape.append(alumno_leido)
archivo.close()
clear()
print (f'Alumnos con el apellido {el_apellido} encontrados')
print()
print ('Nro. Apellido Nombre Materia Grupo Nota')
print('--------------------------------------------------')
for alumno in lista_ape:
for data in alumno:
print (data, end=' ')
print()
print()
print('Pulse <Intro para volver al menu>')
input()
############
def buscar_grupo():
lista_grupo = []
archivo = open(nom_archivo, 'r')
alumnos = archivo.readlines()
tot_alumnos = len(alumnos)
while True:
clear()
nro_grupo = input('Ingrese Nro. Grupo (0 para salir): ')
if nro_grupo.isdigit():
if nro_grupo =='0':
break
else:
for indice in range(tot_alumnos):
el_alumno = alumnos[indice]
alumno_leido = el_alumno.split(' ')
if alumno_leido[4]==nro_grupo:
lista_grupo.append(alumno_leido)
archivo.close()
print ('Nro. Apellido Nombre Materia Grupo Nota')
print('------------------------------------------')
for alumno in lista_grupo:
for data in alumno:
print (data, end=' ')
print()
print()
print('Pulse <Intro para volver al menu>')
input()
def agregar():
dato_alumno = []
while True:
clear()
nro_alumno = input('Ingrese Nro. de Alumno (0 para salir): ')
if nro_alumno.isdigit():
if nro_alumno =='0':
break
else:
alumno_encontrado = encontrar_alumno(nro_alumno)
if alumno_encontrado =='':
#archivo = open(nom_archivo, 'a')
apellido = input('Ingrese Apellido : ').capitalize()
nombre = input('Ingrese Nombre : ').capitalize()
materia = input('Ingrese Materia : ').capitalize()
grupo = input('Ingrese Grupo : ')
nota = input('Ingrese Nota :')
dato_alumno.append(nro_alumno)
dato_alumno.append(apellido)
dato_alumno.append(nombre)
dato_alumno.append(materia)
dato_alumno.append(grupo)
dato_alumno.append(nota)
archivo = open(nom_archivo,"a")
for data in dato_alumno:
archivo.write(data+' ')
archivo.write('\n')
archivo.close()
dato_alumno = []
else:
print()
input ('Nro de alumno ya existe, use otro.')
else:
input ('Debe ser un numero, repita')
def lista():
clear()
archivo = open(nom_archivo,"r")
alumnos = archivo.read()
print ('Lista de Alumnos')
print ('-----------------')
print()
print (alumnos)
print()
print('Pulse <Intro para volver al menu>')
input()
archivo.close()
def consultar():
while True:
clear()
try:
num_alumno = input('Ingrese Nro de alumno a Consultar (0 para regresar): ')
if num_alumno=='0':
break
else:
alumno_encontrado = encontrar_alumno(num_alumno)
if alumno_encontrado !='':
print ('Nro Alumno: ',alumno_encontrado[0])
print ('Apellido : ',alumno_encontrado[1])
print ('Nombre : ',alumno_encontrado[2])
print ('Materia : ',alumno_encontrado[3])
print ('Nota : ',alumno_encontrado[4])
print ()
print('Pulse <Intro para volver al menu>')
input()
break
else:
print ()
print ('Alumno no encontrado')
print ()
print('Pulse <Intro para volver al menu>')
input()
break
except ValueError:
pass
def menu():
while True:
clear()
try:
print('Menu Principal')
print('------------')
print()
print('1. Agregar Alumno')
print('2. Lista de Alumnos')
print('3. Consultar Alumno x nro.')
print('4. Consultar Alumno x Apellido.')
print('5. Consultar Grupo')
print('6. Salir')
print()
opcion = int(input('Ingrese opcion: '))
if opcion == 6:
break
elif opcion == 1:
agregar()
elif opcion == 2:
lista()
elif opcion == 3:
consultar()
elif opcion == 4:
consulta_ape()
elif opcion==5:
buscar_grupo()
except ValueError:
pass
if __name__ == "__main__":
nom_archivo = 'estudiantes.txt'
menu()
Pero si remplazo todo por funciones me salen errores de todo tipo,y bueno puedo decir que ya estoy a nada de rendirme :-[ >:D :-(
Espero haberme explicado correctamente
Gracias de antemano :xD
Hola, un consejo, no uses break, eso se considera romper de fuerza bruta un loop, es mejor utilizar semáforos.
Aquí te he creado un ejemplo:
def contador():
puntaje = 0
detenerBucle = False
while(not detenerBucle):
puntaje += 1
if (puntaje == 30):
print("Tienes 30 puntos!")
detenerBucle = True
print("Se detuvo el bucle while")
contador()
Devolverá:
Tienes 30 puntos!
Se detuvo el bucle while
Saludos
Cita de: [D]aniel en 21 Enero 2021, 21:30 PM
Hola, un consejo, no uses break, eso se considera romper de fuerza bruta un loop, es mejor utilizar semáforos.
Concuerdo en que no es elegante, pero si aparece en la especificación del lenguaje, creo que no hay que apuntar a ningún culpable más que a los desarrolladores del mismo lenguaje.
Resulta cuanto menos estúpido, decir: "tomad esto es lo que teneis con este lenguaje" y luego acabar diciendo "no useis esto...". Es más fácil rediseñar la especificación para dar cabida a la solución sin 'molestar'.