Es necesario tener precaución cuando se intenta copiar una lista.
a = list("514")
b = a
b[0] = 1000
print("a=",a)
print("b=",b)
¿Cómo solucionar el problema anterior?
a = list("514")
b = list(a)
b[0] = 1000
print("a=",a)
print("b=",b)
Esto también afecta a las funciones.
def funcion_malvada(lista):
lista.append(10)
return sum(lista)
L=[1,2,3,4]
print(L)
print(funcion_malvada(L))
print(L)
¿Cómo solucionar el problema anterior?
L=[1,2,3,4]
print(L)
print(funcion_malvada(list(L)))
print(L)
La función list(L)
crea una copia de una la lista L
, así no se modifica la original.
Una asignatura universitaria almacena la lista del curso y sus notas en listas. Todas estas están relacionadas por sus índice.
curso=['Simón','Sebastian','Rodrigo','Angélica','Pablo','Francisca']
c1=[90,60,80,100,75,70]
c2=[80,70,70,75,90,100]
c3=[65,100,90,90,100,80]
Cree un programa que genere e imprima el promedio de cada alumno. Además, muestre el promedio de todo el curso.
promedios=[]
for indice in list(range(len(curso))):
prom=[c1[indice], c2[indice], c3[indice]]
promedios.append(round(sum(prom)/len(prom)))
print("El promedio de",curso[indice],"es",promedios[indice])
print("El promedio del curso es", round(sum(promedios)/len(promedios)))
Realice una función que reciba las listas curso
y promedios
como parámetros y determine el alumno con mayor promedio del curso.
def mejor(curso, promedios):
mayor=-1
for indice in list(range(len(curso))):
if promedios[indice] > mayor: #que pasa si >=?
mayor=promedios[indice]
mejor=curso[indice]
return mejor
print(mejor(curso,promedios))
La librería random
incluye funciones para selección aleatoria desde listas. Echemos un vistazo a la función choice
.
El Loto es un juego de azar en donde se seleccionan aleatoriamente 6 números, sin repetirse, de una tombola con valores entre el 1 y el 41. Desarrolle un programa que simule un sorteo.
from random import randint
n1=randint(1,41)
n2=randint(1,41)
while n2==n1:
n2=randint(1,41)
n3=randint(1,41)
while n3==n1 or n3==n2:
n3=randint(1,41)
n4=randint(1,41)
while n4==n1 or n4==n2 or n4==n3:
n4=randint(1,41)
n5=randint(1,41)
while n5==n1 or n5==n2 or n5==n3 or n5==n4:
n5=randint(1,41)
n6=randint(1,41)
while n6==n1 or n6==n2 or n6==n3 or n6==n4 or n6==n5:
n6=randint(1,41)
print("Los numeros sorteados son:",n1,n2,n3,n4,n5,n6)
from random import choice
sorteo=[]
tombola=list(range(1,41))
while len(sorteo)<6:
x=choice(tombola)
sorteo.append(x)
tombola.remove(x)
print("Los numeros sorteados son:", sorteo)