Clase Numero 08 – Mas Listas y Tuplas

Presentacion que explica Tuplas, diccionarios y conjuntos

Ejercicio

Nota: deo suministrar un archivo con las provincias a ordenar

#crear 2 archivos  a y b de
#10000 numeros
#ordenados
#y luego generar un tercero c que contenga la union de a y b;
#en los elemntos que se escriban en c debe figurar el nombre del archivo origen
# a (1,4,7)
# b (2,7,60)
# c (1 a,2 b,4 a,7 a,7 b,60 b)

#generar(cant,nombArc)
#archivo = open(nombArc,w)
#numero = 1

#while cant > 0:
#    n=R.randint(1,10)
#    if n < 3:
#        archivo.write(numero)
#        cant = cant - 1
#    numero = numero + 1



def leerDesdeArchivo(nombreArchivo):
    
    lista=[]
    archivo = open(nombreArchivo,'r')

    linea = archivo.readline().replace("\n","")
    while linea != "":
        linea = linea.split("," )
        lista.append(linea)
        linea = archivo.readline().replace("\n","")
        
    archivo.close()
    return lista

def mostrar(listaLoc):
    
    x = ("","")
        
    
    for x in listaLoc:
        print (x[1])
        print(x)


def crearArchivo(nombreArchivo,lista):

    archivo = open(nombreArchivo,'w')

    for n in lista:
        archivo.write(str(n)+"\n")
    archivo.close()
    
        


def main():
    
    x = ("","")
    listaLoc = leerDesdeArchivo("Localidades.csv")
#    mostrar(listaLoc)
    i = 0

    while i < len(listaLoc):
        nueva = []
        ant = listaLoc[i][1]
        
        while i < len(listaLoc) and ant == listaLoc[i][1]:
            nueva.append(listaLoc[i][2])
            i = i+1
        crearArchivo(ant+".txt",nueva)
        

#    crearArchivo("ordenados.txt",lista)
    
    
    
main()

Resultado:

Generara un txt por cada Provincia agrupando las localidades de cada una como muestra la figura


Ejercicio de apareo de archivos

"""
Abre dos archivos, los compara y los aparea
"""


import random as R


def creaArchivoOrdenado(cantidad,nombreArchivo = "C:\\Users\\ITMaster\\Desktop\\numeros.txt"):


    archivo = open(nombreArchivo,'w')
    numero = 1
    while cantidad > 0:
        n = R.randint(1,100)
        if n < 80:
            x = R.randint(0,3)
            for i in range(x): 
                archivo.write(str(numero)+'\n')
            archivo.write(str(numero)+'\n')    
            cantidad -=1
        numero += 1

    archivo.close()


def aparear():
    arch1 = open("C:\\Users\\miUser\\Desktop\\numeros1.txt")
    arch2 = open("C:\\Users\\miUser\\Desktop\\numeros2.txt")
    arch3 = open("C:\\Users\\miUser\\Desktop\\apareado.txt",'w')
    print(str(help))
    
    lin1 = arch1.readline()
    lin2 = arch2.readline()
    while lin1 != "" and lin2 != "":
        n1 = int(lin1)
        n2 = int(lin2)
        if n1 <= n2:
            arch3.write(str(n1) + " a1\n")
            lin1 = arch1.readline()
        else:
            arch3.write(str(n2) + " a2\n")
            lin2 = arch2.readline()
    while lin1 != "":
         n1 = int(lin1)
         arch3.write(str(n1) + " a1\n")
         lin1 = arch1.readline()
    while lin2 != "":
         n2 = int(lin2)
         arch3.write(str(n2) + " a2\n")
         lin2 = arch2.readline()
    arch1.close()
    arch2.close()
    arch3.close()
    

def main():
    creaArchivoOrdenado(1000,"C:\\Users\\miUser\\Desktop\\numeros1.txt")
    creaArchivoOrdenado(1000,"C:\\Users\\miser\\Desktop\\numeros2.txt")
    aparear()


main()

Resultado:

Va a generar un archivo TXT llamado apareado.txt conteniendo los dos archivos numeros1.txt y numeros2.txt


Ejercicio Listas y apareo

"""
Crea dos listas
las ordena
y luego las aparea en una tercera
"""

import random as R

def lista1MasLista2(l1,l2):
    sale = []
    
    t1 = len(l1)
    t2 = len(l2)
    i=0#l1
    j=0#l2
    while i < t1 and j < t2:
        sale.append(l1[i]  +  l2[j])
        i+=1
        j+=1

    while i < t1:
        sale.append(l1[i])
        i += 1
    while j < t2:
        sale.append(l2[j])
        j += 1

    return sale


def ordenar(lista):
    for i in range(0,len(lista)-1):
        for d in range(i+1,len(lista)):
            print(lista[i],lista[d])
            if lista[i] > lista[d]:
                
                aux      = lista[i]
                lista[i] = lista[d]
                lista[d] = aux


def crearLista(largo,desde,hasta):

    lista = []

    for i in range(largo):
        lista.append(R.randint(desde,hasta))

    return lista

def apareo(l1,l2):
    sale = []
    
    t1 = len(l1)
    t2 = len(l2)
    i=0#l1
    j=0#l2
    while i < t1 and j < t2:
        if l1[i] <= l2[j]:
            sale.append((l1[i],"l1"))
            i+=1
        else:
            if l2[j] < l1[i]:
                sale.append((l2[j],"l2"))
                j+=1
 
    while i < t1:
        sale.append((l1[i],"l1"))
        i += 1
    while j < t2:
        sale.append((l2[j],"l2"))
        j += 1
    return sale    

def main():
    lista1 = crearLista(10,1,25)
    lista2 = crearLista(20,1,25)
    lista3 = lista1MasLista2(lista1,lista2)
    print("lista1",lista1)
    print("lista2",lista2)
    print("lista3",lista3)
    ordenar(lista1)
    ordenar(lista2)
    ordenar(lista3)
    print("lista1",lista1)
    print("lista2",lista2)
    print("lista3",lista3)

    print("apareada: ",apareo(lista1,apareo(lista2,lista3)))

    

main()

Resultado

5 43
43 37
37 36
45 43
43 37
45 43
lista1 [3, 10, 11, 17, 18, 21, 23, 24, 24, 24]
lista2 [4, 5, 9, 9, 12, 12, 12, 14, 15, 15, 17, 18, 18, 18, 19, 19, 20, 21, 23, 23]
lista3 [9, 9, 12, 12, 14, 15, 18, 18, 18, 23, 25, 26, 28, 28, 29, 33, 36, 37, 43, 45]


Leave a Reply

Your email address will not be published. Required fields are marked *