Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • 0
Carls

[Python]Generador de ID y verificador a que nombre esta vinculado

Question

Posted (edited)

Hace poco un familiar me propuso un pequeño reto de crear un programa para así poner en practica mis pocos conocimientos jejeje. El programa es para crear codigos de 15 digitos y vincularlos a un nombre del usuario. Y otra opción para que cuando el ingresar el ID se muestre a nombre de quien esta registrado. Y acepté el reto.xD. Me parecia simple al inicio, pero en las fases finales me complique demasiado.

Pero lo terminé y quisiera compartirlo y si tienen alguna recomendación para mejorarlo sería genial.

NOTA: Si quieres abrir los archivos debes tener instalado PYTHON

ARCHIVOS

Primero creamos los ficheros borrador donde se guardarán los datos y servirán como base para crear la lista, decidí que serian archivos txt para mas facilidad.

2.py

Programa

id.py  

y aqui esta la esctructura jjjsjsjsjsjsjsj

Spoiler

#Limpiar la consola

import os

#Generar el id mediante una seleccion de numeros y letras

import random

#Importar y exportar los archivos en formato lista para manipulación más facil.

import pickle


# Define la lista de codigos
with open ('id.txt', 'rb') as f1:
    list_codigos = pickle.load(f1)

# Define la lista de nombres
with open ('nombres.txt', 'rb') as f2:
    list_nombres = pickle.load(f2)
    
#Definimos las variables random
def key_gen(): 
    keylist = random.choice('1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ') 
    return keylist 

#V para verificar si el programa continua o finaliza
continuar =1

#iniciamos el ciclo del programa
while continuar == 1:
    
    # Eleccion de opciones
    opcion = 1
    
    #iniciamos ciclo de opciones disponibles
    while opcion != 0:
        
        print("1.Crear y guardar certificado\n2.Buscar el certificado")    
        opcion = int(input())
        
        #si la respuesta es 0
        if opcion == 0:
            opcion = -1
            #limpiamos la consola
            os.system ("cls") 
            
        # Opcion de crear y guardar certificado
        elif opcion == 1:
            
            #limpiamos la consola
            os.system ("cls")   
            
            #V para identificar si el ID ya esta usado
            validez = 0
            
            #Verificar y reiniciar ID random
            while validez == 0:
                number = 0 
                id_item = '' 
                
                #Se genera la ID
                while number < 15: 
                    number = number + 1 
                    id_item = id_item + key_gen() 
                #Condicional ID ya existente
                if id_item in list_codigos:
                    continue
                
                #Condicional ID nueva
                else:
                    break
            
            #añadimos el ID a la lista de codigos
            list_codigos.append(id_item)
            print("\nCual es el nombre del estudiante?")
            nombre_e = input()
            
            #limpiamos consola
            os.system ("cls")  
            
            #Nombre e ID imprimir
            print("\nNombre: ",nombre_e,"\n")

            print("\nID: ",id_item)
            
            #añadimos el nombre a la lista de nombres
            list_nombres.append(nombre_e)
            
            #abrimos el archivo en modo escritura binaria
            with open('id.txt', 'wb') as fp1:
                #añadimos el nuevo ID
                pickle.dump(list_codigos, fp1)
            
            #abrimos el archivo en modo escritura binaria
            with open('nombres.txt', 'wb') as fp2:
                #añadimos el nuevo nombre
                pickle.dump(list_nombres, fp2)
                
            break
            
        # Opcion de buscar un certificado
        elif opcion == 2:
            
            #limpiamos la consola
            os.system ("cls")
            
            # Define la lista de codigos
            with open ('id.txt', 'rb') as fp1:
               list_codigos = pickle.load(fp1)
               

            # Define la lista de nombres
            with open ('nombres.txt', 'rb') as fp2:
                list_nombres = pickle.load(fp2)
                
            print("\nIntroduzca el ID a buscar: ")
            palabra = input()
    
            #verificamos si el ID existe caso contrario se finaliza el programa
            if palabra in list_codigos:
                    
                #verificamos en que lugar esta ubicado el codigo
                id_palabra = list_codigos.index(palabra)
                    
                #imprimimos el nombre que esta en el mismo lugar que el codigo
                print("\nEl nombre del estudiante es:\n", list_nombres[id_palabra])
                break
            else:
                print("\nEl ID no existe\n")
                break
        else:
            
            #limpiamos la consola
            os.system ("cls") 
            continue
    
    
    
    #Variable de bucle de seleccion de retorno o finalizacion
    op_final = 1 
    
    #iniciamos ciclo
    while op_final == 1:
        # Seleccion de retorno o finalizacion
        print("\n1.Reiniciar programa\n2.Salir del programa")
        continuar = int(input())
        #rompe el ciclo y se reinicia el programa
        if continuar == 1:
            os.system ("cls")
            break
        
        #rompe el ciclo y finaliza el programa
        elif continuar == 2:
            break
        else:
            continue

 

 

Edited by Carls

Share this post


Link to post
Share on other sites

9 answers to this question

Recommended Posts

  • 0
Author of the topic Posted
Ahora, Yimsito dijo:

Genial! ahora me falta aprender python :P jajajaja es broma! Que bueno que tomaste el reto, por algo se empieza!!! :cooldoge:

Dehecho ya habia hecho ejercicios mas simples de sumas restas etc. 

Pero este si fue un desafio para mi. 

Pero sin duda obtuve una buena cantidad de conocimientos nuevos.

:kek:

Share this post


Link to post
Share on other sites
  • 0
Ahora, Carls dijo:

Dehecho ya habia hecho ejercicios mas simples de sumas restas etc. 

Pero este si fue un desafio para mi. 

Pero sin duda obtuve una buena cantidad de conocimientos nuevos.

:kek:

Eso suena perfecto! ahora proponte más retos para llegar más lejos! :thugdoge:

Share this post


Link to post
Share on other sites
  • 0
Posted (edited)

Con todo respeto y con el afán de aportar, es una muy mala practica comentar tu código, el código debe hablar por si mismo, así como usar el idioma inglés para nombrar las variables, métodos y clases, paquetes etc. Hay que ser menos estructurado y mas POO.

Edited by juliocesar2018

Share this post


Link to post
Share on other sites
  • 0
Author of the topic Posted
hace 2 minutos, juliocesar2018 dijo:

Con todo respeto y con el afán de aportar, es una muy mala practica comentar tu código, el código debe hablar por si mismo, así como usar el idioma inglés para nombrar las variables, métodos y clases, paquetes etc. Hay que ser menos estructurado y mas POO.

Gracias por ese aporte. 

Como algunas lineas de codigo no las conocia ,por ello lo hice asi para aprenderme mas rapido que hace cada una.

Pero lo tomare en cuenta para futuros proyectos

Share this post


Link to post
Share on other sites
  • 0
Posted (edited)
hace 6 minutos, Carls dijo:

Gracias por ese aporte. 

Como algunas lineas de codigo no las conocia ,por ello lo hice asi para aprenderme mas rapido que hace cada una.

Pero lo tomare en cuenta para futuros proyectos

El nombre de tu variable debe decir por si misma que guarda, así como el nombre de tus métodos debe hacer lo que dice su nombre etc.

Edited by juliocesar2018

Share this post


Link to post
Share on other sites
  • 0
hace 5 horas, Carls dijo:

Gracias por ese aporte. 

Como algunas lineas de codigo no las conocia ,por ello lo hice asi para aprenderme mas rapido que hace cada una.

Pero lo tomare en cuenta para futuros proyectos

A mi me parece muy bien que este comentado ya que muchos pueden estar empezando a programar y eso ayuda a que entiendan el código.

Share this post


Link to post
Share on other sites
  • 0
Posted (edited)

Hay que leer también para aprender mas sobre el desarrollo de software, un libro muy recomendable es código limpio (clean code) de Robert C. Martín. Hay muchas practicas de la vieja escuela que ya no aplican en esta época. Solo las librerías o framework se comentan actualmente.

Edited by juliocesar2018

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...