Tutorial Python (in Work)
  • 1 - Objetivos del tutorial de Python
  • 2 - Instalación del lenguaje y pasos para crear nuestro primer programa
  • 3 - Codificación del diagrama de flujo en Python
  • 4 - Errores sintácticos y lógicos
  • 5 - Estructura de programación secuencial
  • 6 - Estructuras condicionales simples y compuestas
  • 7 - Estructuras condicionales anidadas
  • 8 - Condiciones compuestas con operadores lógicos
  • 9 - Estructura repetitiva while
  • 10 - Estructura repetitiva for
  • 11 - Definición de comentarios en el código fuente
  • 12 - Variables enteras, flotantes y cadenas de caracteres
  • 13 - Procesar cadenas de caracteres
  • 14 - Estructura de datos tipo lista
  • 15 - Listas: carga por teclado de sus elementos
  • 16 - Listas: mayor y menor elemento
  • 17 - Listas paralelas
  • 18 - Listas: ordenamiento de sus elementos
  • 19 - Listas: ordenamiento con listas paralelas
  • 20 - Listas: componentes de tipo lista
  • 21 - Listas: carga por teclado de componentes de tipo lista
  • 22 - Listas: eliminación de elementos
  • 23 - Concepto de funciones - Programación estructurada
  • 24 - Funciones: parámetros
Con tecnología de GitBook
En esta página
  • Ejemplos
  • Problemas propuestos

¿Te fue útil?

21 - Listas: carga por teclado de componentes de tipo lista

Carga por teclado de una lista

Anterior20 - Listas: componentes de tipo listaSiguiente22 - Listas: eliminación de elementos

Última actualización hace 4 años

¿Te fue útil?

En el concepto anterior vimos que fácilmente podemos definir por asignación una lista cuyas componentes sean también listas:

lista=[[1,2,3] , [4,5], [5,7]]

En muchas situaciones debemos crear una nueva lista ingresando los datos por teclado o por operaciones del mismo programa.

Ejemplos

Ejemplo 1

Crear y cargar una lista con los nombres de tres alumnos. Cada alumno tiene dos notas, almacenar las notas en una lista paralela. Cada componente de la lista paralela debe ser también una lista con las dos notas. Imprimir luego cada nombre y sus dos notas.

Si cargáramos los datos por asignación sería algo parecido a esto:

estudiantes=["Arbey", "Ana", "Luisa"]

notas=[[3,4], [2,4],[3,5] ]

En la componente 0 de la lista estudiantes tenemos almacenado el nombre "Arbey" y como son listas paralelas en la componente 0 de la lista notas tenemos almacenado una lista con las dos notas 3 y 4.

Nuestro objetivo como lo pide el problema es cargar los datos por teclado.

# list
listName=[]
listNote=[]
# enter data
for f in range(3):
    listName.append(input(f"Enter stundent's name{f+1}: "))
    note1=float(input(f"Enter {listName[f]} note1: "))
    note2=float(input(f"Enter {listName[f]} note2: "))
    listNote.append([note1,note2])
# print data
for f in range(3):
    print(f"{listName[f]}: {listNote[f]}")

La creación de las dos listas no difiere una de otra:

listName=[]

listNote=[]

En la estructura repetitiva for procedemos a cargar un nombre y agregarlo a la lista en forma similar como lo hemos hecho en conceptos anteriores:

for f in range(3):

listName.append(input(f"Enter stundent's name{f+1}: "))

note1=float(input(f"Enter {listName[f]} note1: ")) note2=float(input(f"Enter {listName[f]} note2: "))

Ejemplo 2

  • Realizar la carga de los nombres de empleados y los tres sueldos por cada empleado.

  • Generar una lista que contenga el ingreso acumulado en sueldos en los últimos 3 meses para cada empleado.

En este problema definiremos tres listas:

  1. Una lista para almacenar los nombres de los empleados: nombres = ["juan", "estiven", "sara"]

  2. Una lista paralela a la anterior para almacenar los sueldos en los últimos tres meses por cada empleado: sueldos =[[300,400,500], [600,600,700], [200,400,800]]

  3. Otra lista paralela donde almacenamos el total de sueldos cobrados por cada empleado que resulta de sumar los tres sueldos de cada empleado contenidos en la lista sueldos: totalsueldos=[[1200],[1900],[1400] ]

# employee list
listName=[]
listSalary=[]
listTotalSalary=[]
# enter data
for f in range(3):
    # enter employee name
    listName.append(input(f"Enter the employe name{f+1}: "))    
    #enter employee salary
    sal1=int(input(f"Enter {listName[f]} salary{f+1}: "))
    sal2=int(input(f"Enter {listName[f]} salary{f+1}: "))
    sal3=int(input(f"Enter {listName[f]} salary{f+1}: "))
    # save salary
    listSalary.append([sal1,sal2,sal3])

# total salary the last three month
(print("total salary the last three month: "))
for f in range(len(listSalary)):
    sume=0    
    for k in range(len(listSalary[f])):
        sume+=listSalary[f][k]
    listTotalSalary.append(sume)
    
# print and greater salary
great=0
position=0
for f in range(len(listName)):
    print(f"{listName[f]}: {listTotalSalary[f]}")
    if(listTotalSalary[f]>great):
        great=listTotalSalary[f]
        position=f
print("The employe with greater salary is: ",listName[position])

Definimos 3 listas:

listName=[]

listSalary=[]

listTotalSalary=[]

En el primer for realizamos la carga de cada nombre de empleado y sus tres últimos sueldos, en la lista nombres añadimos strings y en la lista sueldos añadimos otra lista con tres enteros que representan los sueldos:

for f in range(3):
    listName.append(input(f"Enter the employe name{f+1}: "))    
    sal1=int(input(f"Enter {listName[f]} salary{f+1}: "))
    sal2=int(input(f"Enter {listName[f]} salary{f+1}: "))
    sal3=int(input(f"Enter {listName[f]} salary{f+1}: "))
    listSalary.append([sal1,sal2,sal3])    

En el segundo ciclo repetitivo generamos automáticamente la lista de total sueldos (es decir no cargamos por teclado), este valor resulta de sumar los tres sueldos de cada empleado que se encuentran en cada una de las listas contenidas en la lista sueldos:

for f in range(len(listSalary)):
    sume=0    
    for k in range(len(listSalary[f])):
        sume+=listSalary[f][k]
    listTotalSalary.append(sume) 
for f in range(len(listName)):
    print(f"{listName[f]}: {listTotalSalary[f]}")

Finalmente el problema requiere mostrar el nombre del empleado que recaudó más en sueldos en los últimos tres meses. Iniciamos dos variables previas al for indicando en una la posición de importe en sueldos mayor y en otra dicho importe. Hacemos la suposición antes de ingresar al for que el mayor está en la posición 0:

if(listTotalSalary[f]>great):
        great=listTotalSalary[f]
        position=f
print("The employe with greater salary is: ",listName[position])

Ejemplo 3

Por ejemplo si el operador carga un 2 y un 4 significa que debemos crear una lista similar a:

lista=[[1,2,3,4], [5,6,7,8]]

# list
# list of numbers
listNumber=[]
# sublist of numbers, they are part of numbers list
subListNumber=[]
# the amount of list's elements
lengthList=int(input("Enter the amount of list's elements: "))
# the amount of sublist's elements
lengthSublist=int(input("Enter the amount of sublist's elements: "))
# enter data
# sublist
print("--------------------------")
# external for (main list)
for f in range(lengthList):    
# internal for (internal lists)
    for k in range(lengthSublist) :  
#input internal lists
        subListNumber.append(int(input(f"Enter the sublist's element{k+1}: ")))
# add external list (main)    
    listNumber.append(subListNumber)    
# clean internal list(to clear the previous values)    
    subListNumber=[]

# print the list
print("--------------------------")
print("List",listNumber)

# addiction elements
addiction=0
# external for
for k in range(len(listNumber)):
# internal for
    for f in range(len(listNumber[k])):
# acumulate
        addiction+=listNumber[k][f]
print("--------------------------")
print("addiction: ",addiction)

listNumber=[] 
subListNumber=[]
lengthList=int(input("Enter the amount of list's elements: "))
lengthSublist=int(input("Enter the amount of sublist's elements: "))

El primer for se repetirá tantas veces como indica el primer valor ingresado por teclado almacenado en la variable "lengthList", cada vuelta de este for se crea un elemento en la "subListNumber".

En el for interior procedemos a cargar tantos valores como lo indicamos en la variable "lengthsublist" y los vamos añadiendo en la lista vacía(sublistNumber) que creamos antes de este for:

for f in range(lengthList):    
    for k in range(lengthSublist) :  
        subListNumber.append(int(input(f"Enter the sublist's element{k+1}: ")))
    listNumber.append(subListNumber)    
    subListNumber=[]

Finalmente para sumar todos los elementos enteros almacenados en "listNumber" debemos disponer estructuras repetitivas anidadas:

for k in range(len(listNumber)):
    for f in range(len(listNumber[k])):
        addiction+=listNumber[k][f]

El for de las "k" se repite tantas veces como elementos tenga "listNumber" y el for de las x se repite tantas veces como elementos tenga la lista en la posición k.

Ejemplo 4

Un ejemplo si se define por asignación:

padres=[["juan","ana"], ["carlos","maria"], ["pedro","laura"]]
hijos=[["marcos","alberto","silvia"], [], ["oscar"]]

Como son listas paralelas podemos decir que la familia cuyos padres son "juan" y "ana" tiene tres hijos llamados "marcos", "alberto", "silvia". La segunda familia no tiene hijos y la tercera tiene solo uno.

listParents=[]
listChildren=[]
numParents=int(input("The number of parents: "))
# enter data
for f in range(numParents):
    # enter parents name
    fa=input("Enter father's name: ")
    ma=input("Enter mother's name: ")    
    listParents.append([fa,ma])  
    # number of children of previous parents
    numChildren=int(input(f"The number of children of {listParents[f]}: "))    
    listChildren.append([])    
    # enter children name
    for c in range(numChildren):
        listChildren[f].append(input(f"Enter the children name of {listParents[f]}: "))
    
    
#print list
print("--------------------------")
print(listParents)
print(listChildren)
print("--------------------------")

for f in range(len(listParents)):
    print(f"Father: {listParents[f][0]} Mother: {listParents[f][1]} Children: {listChildren[f]} ")
    
# print fathers, mothers and their children
print("--------------------------")   
print("List: ")
for f in range(len(listParents)):
    print("Fahter: ",listParents[f][0])
    print("Mother: ", listParents[f][1])
    # children
    for k in range(len(listChildren[f])):
        print("Children: ",listChildren[f][k])
        
#number of children
print("--------------------------")  
print("Number of children")
# print data
for f in range(len(listParents)):
    print("Father: ", listParents[f][0], "# of Children: ", len(listChildren[f]))

Comenzamos definiendo las dos listas:

listParents=[]

listChildren=[]

El primer for es para cargar y crear cada elemento de la lista "padres" (listParents), crear una elemento de la lista hijos(listChildren) con una lista vacía y solicitar que se cargue cuantos hijos tiene la familia:

for f in range(numParents):
    fa=input("Enter father's name: ")
    ma=input("Enter mother's name: ")    
    listParents.append([fa,ma])  
    numChildren=int(input(f"The number of children of {listParents[f]}: "))    
    listChildren.append([])    

El for interno se ingresan los nombres de los hijos y se agregan a la lista hijos en la posición respectiva. El for interno puede llegar a no ejecutarse si se ingresa un 0 en cantidad de hijos:

for c in range(numChildren):
        listChildren[f].append(input(f"Enter the children name of {listParents[f]}: "))    
for f in range(len(listParents)):
    print("Fahter: ",listParents[f][0])
    print("Mother: ", listParents[f][1])
    for k in range(len(listChildren[f])):
        print("Children: ",listChildren[f][k])        

Para mostrar la cantidad de hijos que tiene un determinado padre llamamos a la función len de cada una de las sublistas contenidas en la lista hijos:

for f in range(len(listParents)):
    print("Father: ", listParents[f][0], "# of Children: ", len(listChildren[f]))

Problema 1

  1. Cargar por teclado los nombres de los paises y las temperaturas medias mensuales.

  2. Imprimir los nombres de las paises y las temperaturas medias mensuales de las mismas.

  3. Calcular la temperatura media trimestral de cada país.

  4. Imprimr los nombres de los paises y las temperaturas medias trimestrales.

  5. Imprimir el nombre del pais con la temperatura media trimestral mayor.

Problema 2

Definir una lista y almacenar los nombres de 3 empleados. Por otro lado definir otra lista y almacenar en cada elemento una sublista con los números de días del mes que el empleado faltó. Imprimir los nombres de empleados y los días que faltó. Mostrar los empleados con la cantidad de inasistencias. Finalmente mostrar el nombre o los nombres de empleados que faltaron menos días.

Problema 3

Desarrollar un programa que cree una lista de 50 elementos. El primer elemento es una lista con un elemento entero, el segundo elemento es una lista de dos elementos etc. La lista debería tener esta estructura y asignarle esos valores a medida que se crean los elementos:

[[1], [1,2], [1,2,3], [1,2,3,4], [1,2,3,4,5], etc....]

# temperature country
listCountryName=[]
listCountryQuaterlyTemp=[]
listCountryAverageTemp=[]
# four contries
for c in range(4):
    # country name
    listCountryName.append([])
    listCountryName[c].append(input(f"Enter country name{c+1}: "))
    # quaterly temperature
    for t in range(3):
        listCountryQuaterlyTemp.append([])
        listCountryQuaterlyTemp[c].append(float(input(f"Enter {listCountryName[c][0]} in quaterly{t+1}: ")))

# print data
print("\n print data: ")
for c in range(len(listCountryName)):
    print("Country: ",listCountryName[c][0])
    for t in range(len(listCountryName[c])):
        print(f"quaterly: {listCountryQuaterlyTemp[c][t]}°")

# average temperature
print("\n print average temperature: ")
for c in range(len(listCountryName)):
    listCountryAverageTemp.append([])
    suma=0.0
    for t in range(len(listCountryQuaterlyTemp[c])):
        suma+=listCountryQuaterlyTemp[c][t]
        #listCountryAverageTemp[c]+=listCountryQuaterlyTemp[c][t]
    suma/=3
    listCountryAverageTemp[c]=suma
    
# print data
print("\n Average temprature: ")
for f in range(len(listCountryName)):
    print(f"Country: {listCountryName[f][0]}  Temp: {listCountryAverageTemp[f]}°")
        
# list
# employee names
listNames=[]
listAbsences=[]
# three employees
# enter data
for f in range(3):
    listNames.append(input(f"Enter a employe anme{f+1}: "))
    listAbsences.append(int(input(f"Enter {listNames[f]} absences: ")))
print("name : absences")
for f in range(3):
    print(f"{listNames[f]}: {listAbsences[f]}")
#list
listNumb=[]
list1=[]
for f in range(50):    
    listNumb.append([])
    print(f"paso{f+1}:")
    for x in range(f):
        listNumb[f].append(int(input(f"Enter a number{x+1}: ")))
print("\nData: ",listNumb)

Lo nuevo se presenta cuando queremos añadir elementos a la lista notas, lo hacemos con el mismo método append pero le pasamos como parámetro una lista con dos elementos:

Se tiene que cargar la siguiente información: · Nombres de 3 empleados. Ingresos en concepto de sueldo, cobrado por cada empleado, en los últimos 3 meses. Confeccionar el programa para:

Mostrar por pantalla el total pagado en sueldos a cada empleado en los últimos 3 meses.

Obtener el nombre del empleado que tuvo el mayor ingreso acumulado.

Es importante notar que estos datos no los cargaremos por asignación sino los cargaremos por teclado a las dos primeras listas y la tercera la generaremos extrayendo los datos de la lista sueldos.

Imprimimos ahora el nombre del empleado seguido por el ingreso total en sueldos de los últimos tres meses:

Solicitar por teclado dos enteros. El primer valor indica la cantidad de elementos que crearemos en la lista. El segundo valor indica la cantidad de elementos que tendrá cada una de las listas internas a la lista principal. Mostrar la lista y la suma de todos sus elementos.

Lo primero que hacemos en este problema además de definir la lista es cargar dos enteros por teclado:

Definir dos listas de 3 elementos. La primer lista cada elemento es una sublista con el nombre del padre y la madre de una familia. La segunda lista está constituida por listas con los nombres de los hijos de cada familia. Puede haber familias sin hijos. Imprimir los nombres del padre, la madre y sus hijos. También imprimir solo el nombre del padre y la cantidad de hijos que tiene dicho padre.

Para imprimir los nombres de ambos padres y sus hijos también implementamos un for anidado:

Problemas propuestos

Ha llegado una parte fundamental , que es el momento donde uno desarrolla individualmente un algoritmo para la resolución de problemas. El tiempo a dedicar a esta sección ejercicios propuestos debe ser mucho mayor que el empleado a la sección de ejercicios resueltos. La experiencia dice que debemos dedicar el 80% del tiempo a la resolución individual de problemas y el otro 20% al análisis y codificación de problemas ya resueltos por otras personas.

Se desea saber la temperatura media trimestral de cuatro paises. Para ello se tiene como dato las temperaturas medias mensuales de dichos paises. Se debe ingresar el nombre del país y seguidamente las tres temperaturas medias mensuales. Seleccionar las estructuras de datos adecuadas para el almacenamiento de los datos en memoria.

Solución

Nota : Inténtalo tu mism@, esta es la mejor forma de aprender o si quieres ver otro algoritmo para solucionar el mismo problema.

🆕
✍🏾
🗳️
🥳
👳🏽‍♂️
🤑
🖥️
💰
⚠️
🖨️
⌨️
👨🏾‍🏫
👨‍👩‍👧
👨‍👩‍👧
📚
😀
✍🏾
👩🏾‍💻
🕖
🗃️
🗺️
🌡️
🆘
👩‍🏫
📈
👀
👨‍💻
Salida ejecución ejemplo 1
Salida ejecución ejemplo 1