elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Poner archivos en funciones Python
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Poner archivos en funciones Python  (Leído 2,013 veces)
Panic0

Desconectado Desconectado

Mensajes: 218



Ver Perfil
Poner archivos en funciones Python
« en: 21 Enero 2021, 20:34 pm »

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
Código:
#De hacer esto
file = open("name.txt","r")

#A esto
def open_read():
    file = open("name.txt","r")

Este es mi código
Código
  1. import os
  2.  
  3.  
  4.  
  5.  
  6. clear = lambda: os.system('cls')
  7.  
  8. def encontrar_alumno(num_alumno):
  9.    archivo = open(nom_archivo,"r")
  10.    alumnos = archivo.readlines()
  11.    tot_alumnos = len(alumnos)
  12.    for indice in range(tot_alumnos):
  13.        el_alumno = alumnos[indice]
  14.        alumno_leido = el_alumno.split(' ')
  15.        if alumno_leido[0]==num_alumno:
  16.            return alumno_leido
  17.  
  18.    archivo.close()
  19.    return ''
  20.  
  21. def consulta_ape():
  22.    lista_ape = []    # lista a usar para agregar pertenencia
  23.    archivo = open(nom_archivo, 'r')
  24.    alumnos = archivo.readlines()
  25.  
  26.    tot_alumnos = len(alumnos)
  27.    while True:
  28.        clear()
  29.        el_apellido = input('Ingrese Apellido a buscar (s para salir): ').capitalize()
  30.        if el_apellido.isalpha():
  31.            if el_apellido.lower() =='s':
  32.                break
  33.            else:
  34.                for indice in range(tot_alumnos):
  35.                    el_alumno = alumnos[indice]
  36.                    alumno_leido = el_alumno.split(' ')
  37.                    if alumno_leido[1]==el_apellido:
  38.                        lista_ape.append(alumno_leido)
  39.  
  40.                archivo.close()
  41.                clear()
  42.                print (f'Alumnos con el apellido {el_apellido} encontrados')
  43.                print()
  44.                print ('Nro. Apellido      Nombre    Materia  Grupo  Nota')
  45.                print('--------------------------------------------------')
  46.  
  47.                for alumno in lista_ape:
  48.                    for data in alumno:
  49.                        print (data, end='     ')
  50.  
  51.                    print()
  52.                print()
  53.                print('Pulse <Intro para volver al menu>')
  54.                input()
  55.  
  56.  
  57.  
  58.  
  59. ############
  60.  
  61. def buscar_grupo():
  62.    lista_grupo = []    
  63.    archivo = open(nom_archivo, 'r')
  64.    alumnos = archivo.readlines()
  65.  
  66.    tot_alumnos = len(alumnos)
  67.    while True:
  68.        clear()
  69.        nro_grupo = input('Ingrese Nro. Grupo (0 para salir): ')
  70.        if nro_grupo.isdigit():
  71.            if nro_grupo =='0':
  72.                break
  73.            else:
  74.                for indice in range(tot_alumnos):
  75.                    el_alumno = alumnos[indice]
  76.                    alumno_leido = el_alumno.split(' ')
  77.                    if alumno_leido[4]==nro_grupo:
  78.                        lista_grupo.append(alumno_leido)
  79.  
  80.                archivo.close()
  81.                print ('Nro. Apellido      Nombre    Materia  Grupo  Nota')
  82.                print('------------------------------------------')
  83.  
  84.                for alumno in lista_grupo:
  85.                    for data in alumno:
  86.                        print (data, end='     ')
  87.  
  88.                    print()
  89.                print()
  90.                print('Pulse <Intro para volver al menu>')
  91.                input()
  92.  
  93.  
  94.  
  95.  
  96. def agregar():
  97.    dato_alumno = []
  98.    while True:
  99.        clear()
  100.        nro_alumno = input('Ingrese Nro. de Alumno (0 para salir): ')
  101.        if nro_alumno.isdigit():
  102.            if nro_alumno =='0':
  103.                break
  104.            else:
  105.                alumno_encontrado = encontrar_alumno(nro_alumno)
  106.                if alumno_encontrado =='':
  107.                    #archivo = open(nom_archivo, 'a')
  108.                    apellido    = input('Ingrese Apellido   : ').capitalize()
  109.                    nombre      = input('Ingrese Nombre      : ').capitalize()
  110.                    materia     = input('Ingrese Materia    : ').capitalize()
  111.                    grupo       = input('Ingrese Grupo      : ')
  112.                    nota        = input('Ingrese Nota       :')
  113.                    dato_alumno.append(nro_alumno)
  114.                    dato_alumno.append(apellido)
  115.                    dato_alumno.append(nombre)
  116.                    dato_alumno.append(materia)
  117.                    dato_alumno.append(grupo)
  118.                    dato_alumno.append(nota)
  119.                    archivo = open(nom_archivo,"a")
  120.                    for data in dato_alumno:
  121.                        archivo.write(data+' ')
  122.                    archivo.write('\n')
  123.                    archivo.close()
  124.                    dato_alumno = []
  125.                else:
  126.                    print()
  127.                    input ('Nro de alumno ya existe, use otro.')
  128.  
  129.        else:
  130.            input ('Debe ser un numero, repita')
  131.  
  132.  
  133.  
  134. def lista():
  135.    clear()
  136.    archivo = open(nom_archivo,"r")
  137.    alumnos = archivo.read()
  138.    print ('Lista de Alumnos')
  139.    print ('-----------------')
  140.    print()
  141.    print (alumnos)    
  142.    print()
  143.    print('Pulse <Intro para volver al menu>')
  144.    input()
  145.    archivo.close()
  146.  
  147.  
  148. def consultar():
  149.    while True:
  150.        clear()
  151.        try:
  152.            num_alumno = input('Ingrese Nro de alumno a Consultar (0 para regresar): ')
  153.            if num_alumno=='0':
  154.                break
  155.            else:
  156.                alumno_encontrado = encontrar_alumno(num_alumno)
  157.                if alumno_encontrado !='':
  158.                    print ('Nro Alumno: ',alumno_encontrado[0])
  159.                    print ('Apellido  : ',alumno_encontrado[1])
  160.                    print ('Nombre    : ',alumno_encontrado[2])
  161.                    print ('Materia   : ',alumno_encontrado[3])
  162.                    print ('Nota      : ',alumno_encontrado[4])                                                
  163.                    print ()
  164.                    print('Pulse <Intro para volver al menu>')
  165.                    input()
  166.                    break
  167.                else:
  168.                    print ()
  169.                    print ('Alumno no encontrado')
  170.                    print ()
  171.                    print('Pulse <Intro para volver al menu>')
  172.                    input()
  173.                    break
  174.        except ValueError:
  175.            pass
  176.  
  177.  
  178. def menu():
  179.    while True:
  180.        clear()
  181.        try:
  182.            print('Menu Principal')
  183.            print('------------')
  184.            print()
  185.            print('1. Agregar Alumno')
  186.            print('2. Lista de Alumnos')
  187.            print('3. Consultar Alumno x nro.')
  188.            print('4. Consultar Alumno x Apellido.')
  189.            print('5. Consultar Grupo')
  190.            print('6. Salir')
  191.            print()
  192.            opcion = int(input('Ingrese opcion: '))
  193.            if opcion == 6:
  194.                break
  195.            elif opcion == 1:
  196.                agregar()
  197.            elif opcion == 2:
  198.                lista()
  199.            elif opcion == 3:
  200.                consultar()
  201.            elif opcion == 4:
  202.                consulta_ape()
  203.            elif opcion==5:
  204.                buscar_grupo()
  205.  
  206.        except ValueError:
  207.           pass
  208.  
  209.  
  210. if __name__ == "__main__":
  211.    nom_archivo = 'estudiantes.txt'
  212.    menu()
  213.  

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


« Última modificación: 21 Enero 2021, 20:46 pm por el-brujo » En línea

Los ataques de pánico suelen comenzar de forma súbita, sin advertencia.
Danielㅤ


Desconectado Desconectado

Mensajes: 1.673


🔵🔵🔵🔵🔵🔵🔵


Ver Perfil
Re: Poner archivos en funciones Python
« Respuesta #1 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.

Aquí te he creado un ejemplo:

Código
  1. def contador():
  2.    puntaje = 0
  3.    detenerBucle = False
  4.    while(not detenerBucle):
  5.        puntaje += 1
  6.        if (puntaje == 30):
  7.            print("Tienes 30 puntos!")
  8.            detenerBucle = True
  9.    print("Se detuvo el bucle while")
  10.  
  11. contador()
  12.  

Devolverá:

Código:
Tienes 30 puntos!
Se detuvo el bucle while


Saludos


En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.351


Ver Perfil
Re: Poner archivos en funciones Python
« Respuesta #2 en: 21 Enero 2021, 23:27 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'.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Python, funciones o libreria ?
Scripting
EvilGoblin 2 6,405 Último mensaje 11 Julio 2010, 20:35 pm
por xーいぱ
[Python] - Funciones « 1 2 »
Scripting
Meta 10 5,757 Último mensaje 26 Noviembre 2010, 00:39 am
por Meta
[Python] Importar Funciones de C++ a Modulo de Python
Scripting
Di6it4Lj4ck4L 2 4,062 Último mensaje 2 Mayo 2011, 19:08 pm
por Di6it4Lj4ck4L
[AYUDA][PYTHON] Leer y guardar archivos .exe de forma hexadecimal en python???
Scripting
Noxware 3 5,363 Último mensaje 22 Agosto 2014, 09:33 am
por Eleкtro
Funciones void en python
Scripting
SERGIO_@PRENDE 1 2,748 Último mensaje 27 Septiembre 2021, 07:25 am
por Danielㅤ
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines