cual = input("Cual mes (1-12)? ")
meses = ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio',\
'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre']
if 1 <= cual <= 12:
print "El mes es",meses[cual - 1]
y un ejemplo de la salida:
Cual mes (1-12)? 3
El mes es Marzo
En este ejemplo meses es una lista. meses queda definida
con los renglones meses = ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo',
'Junio', 'Julio',\
'Agosto', 'Septiembre', 'Octubre', 'Noviembre',
'Diciembre'] (Note que puede usar una \
para dividir un
renglón muy largo). [
y ]
abren y cierran
la lista, mientras las comas (``,
'') sirven para separar
los elementos de la lista. Usamos la lista en meses[cual - 1]
.
Una lista consiste de elementos numerados a partir de cero. En
otras palabras, si desea Enero deber referirse a meses[0]. Proporcione
un número a una lista y la lista le devolverá el valor almacenado
en ese lugar.
El enunciado if 1 <= cual <= 12: será verdadero si el valor de cual está entre uno y doce, ambos inclusive (en otras palabras, es lo que usted esperaría si ha visto esto en álgebra).
Podemos considerar la listas como series de cajas. Por ejemplo, las cajas creadas por demolista = ['vida',42, 'el universo', 6,'y',7] pudieran verse así:
número de caja | 0 | 1 | 2 | 3 | 4 | 5 |
demolista | `vida' | 42 | `el universo' | 6 | `y' | 7 |
Nos referimos a cada caja por su número, así que el enunciado demolista[0] obtendría 'vida', demolista[1] obtendría 42 y así sucesivamente hasta demolista[5] que resultaría en 7.
demolista = ['vida',42, 'el universo', 6,'y',7]
print 'demolista = ',demolista
demolist.append('todas las cosas')
print "despues de anexar 'todas las cosas' ahora demolista es:"
print demolista
print 'len(demolista) =', len(demolista)
print 'demolista.index(42) =',demolista.index(42)
print 'demolista[1] =', demolista[1]
#Ahora haremos un rizo a traves de la lista
c = 0
while c < len(demolista):
print 'demolista[',c,']=',demolista[c]
c = c + 1
del demolista[2]
print "Despues de remover 'el universo' ahora demolista es:"
print demolista
if 'vida' in demolista:
print "encontre 'vida' en demolista"
else:
print "no encontre 'vida' en demolista"
if 'amiba' in demolista:
print "encontre 'amiba' en demolista"
if 'amiba' not in demolista:
print "no encontre 'amiba' en demolista"
demolista.sort()
print 'La demolist ordenada es ',demolista
La salida es:
demolista = ['vida', 42, 'el universo', 6, 'y', 7]
despues de anexar 'todas las cosas' ahora demolista es:
['vida', 42, 'el universo', 6, 'y', 7, 'todas las cosas']
len(demolista) = 7
demolista.index(42) = 1
demolista[1] = 42
demolista[ 0 ]= vida
demolista[ 1 ]= 42
demolista[ 2 ]= el universo
demolista[ 3 ]= 6
demolista[ 4 ]= y
demolista[ 5 ]= 7
demolista[ 6 ]= todas las cosas
Despues de remover 'el universo' ahora demolista es:
['vida', 42, 6, 'y', 7, 'todas las cosas']
encontre 'vida' en demolista
no encontre 'amiba' en demolista
La demolist ordenada es [6, 7, 42, 'todas las cosas', 'vida', 'y']
Este ejemplo usa un montón de funciones nuevas. Note que puede
imprimir toda la lista simplemente con print. La función
append se usa para añadir un elemento nuevo al final de la
lista. len
devuelve cuántos elementos hay en la
lista. Los índices válidos de una lista (esto es, los números
que pueden usarse dentro de []) varían de 0 a len - 1.
La función index dice cuál es la primera ubicación
de un elemento en una lista. Note cómo demolista.index(42)
devuelve 1 y cuando demolista[1]
es ejecutado devuelve 42. El
renglón #Ahora haremos un rizo a traves de la lista
es
sólo un recordatorio para el programador (también llamado un
comentario). Python no hace caso de los renglones que comienzan con #
.
Luego, los renglones:
c = 0Crean una variable c la cual comienza con el valor 0 y es incrementada hasta que alcanza el último índice de la lista. Mientras tanto, el enunciado print imprime cada elemento de la lista.
while c < len(demolista):
print 'demolista[',c,']=',demolista[c]
c = c + 1
El comando del
puede ser usado para remover de la lista un
elemento en particular. Los siguientes renglones usan el operadorin
para evaluar si un elemento dado está o no en la lista.
La función sort
ordena la lista. Esto es útil
si necesita una lista ordenada de menor a mayor número o alfabéticamente.
Observe que esto reacomoda la lista.
En resumen, para una lista puede uno usar las siguientes operaciones:
ejemplo | explicación |
lista[2] | devuelve el elemento de índice 2 |
lista[2] = 3 | asigna el valor 3 al elemento de índice 2 |
del lista[2] | remueve el elemento de índice 2 |
len(lista) | devuelve la longitud de lista |
"valor" in lista | es verdadero si "valor" es un elemento de lista |
"valor" not in lista | es verdadero si "valor" no es un elemento en lista |
lista.sort() | ordena lista |
lista.index("valor") | devuelve el índice del primer lugar donde aparece "valor" |
lista.append("valor") | anexa un elemento "valor" al final de lista |
El siguiente ejemplo usa estas operaciones de un modo más útil:
articulo_menu = 0
lista = []
while articulo_menu != 9:
print "--------------------"
print "1. Imprime la lista"
print "2. Anexa un nombre a la lista"
print "3. Remueve un nombre de la lista"
print "4. Cambia un elemento de la lista"
print "9. Cierra el programa"
articulo_menu = input("Elija un articulo del menu: ")
if articulo_menu == 1:
actual = 0
if len(lista) > 0:
while actual < len(lista):
print actual,". ",list[actual]
actual = actual + 1
else:
print "la lista esta vacia"
elif articulo_menu == 2:
nombre = raw_input("Escriba un nombre para anexar: ")
lista.append(nombre)
elif articulo_menu == 3:
borra_nombre = raw_input("Cual nombre le gustaria quitar: ")
if borra_nombre in lista:
numero_elemento = lista.index(borra_nombre)
del lista[numero_elemento]
#El codigo anterior solo borra la primera instancia
# del nombre. El siguiente codigo debido a Gerald quita todas.
#while borra_nombre in lista:
# numero_elemento = lista.index(borra_nombre)
# del lista[numero_elemento]
else:
print borra_nombre," no esta en la lista"
elif articulo_menu == 4:
nombre_viejo = raw_input("Cual nombre le gustaria cambiar: ")
if nombre_viejo in lista:
numero_articulo = lista.index(nombre_viejo)
nombre_nuevo = raw_input("Cual es el nuevo nombre: ")
lista[numero_articulo] = nombre_nuevo
else:
print nombre_viejo," no esta en la lista"
print "Adios"
Y esta es parte de la salida:
--------------------
1. Imprime la lista
2. Anexa un nombre a la lista
3. Remueve un nombre de la lista
4. Cambia un elemento de la lista
9. Cierra el programa
Elija un articulo del menu: 2
Escriba un nombre para anexar: Jack
Elija un articulo del menu: 2
Escriba un nombre para anexar: Jill
Elija un articulo del menu: 1
0 . Jack
1 . Jill
Elija un articulo del menu: 3
Cual nombre le gustaria quitar: Jack
Elija un articulo del menu: 4
Cual nombre le gustaria cambiar: Jill
Cual es el nuevo nombre: Jill Peters
Elija un articulo del menu: 1
0 . Jill Peters
Elija un articulo del menu: 9
Adios
Ese fue un programa largo. Veamos el código fuente. El
renglón lista = [] hace la variable lista una lista
sin artículos (o elementos). El siguiente renglón importante
es while articulo_menu != 9:
. Este renglón comienza
un rizo que habilita el menú de opciones para este programa. Los
siguientes renglones muestran el menú y deciden qué parte del
programa ejecutar.
La sección:
actual = 0recorre la lista e imprime cada nombre.
if len(lista) > 0:
while actual < len(lista):
print actual,". ",lista[actual]
actual = actual + 1
else:
print "La lista esta vacia"
len(lista)
dice cuántos
elementos hay en una lista. Si len devuelve 0
entonces la lista está vacía.
Luego, unos cuantos rengloes después, aparece el enunciado lista.append(nombre). Usa la función append para anexar un elemento al final de la lista. Salte dos renglones más y observe esta sección del código:
numero_articulo = lista.index(borra_nombre)Aquí la función index se emplea para encontrar el valor del índice que será usado después para remover el artículo.
del lista[numero_articulo]
del lista[numero_articulo]
se emplea para remover un
artículo de la lista.
La siguiente sección
nombre_viejo = raw_input("Cual nombre le gustaria cambiar: ")usa index para hallar el
if nombre_viejo in lista:
numero_articulo = lista.index(nombre_viejo)
nombre_nuevo = raw_input("Cual es el nuevo nombre: ")
lista[numero_articulo] = nombre_nuevo
else:
print nombre_viejo," no esta en la lista"
numero_articulo
y luego pone
nombre_nuevo
en lugar de nombre_viejo
.
prueba.py
## Este programa hace una prueba de conocimientos
verdad = 1
falso = 0
# Primero hagamos las preguntas de la prueba
# Despues modificaremos esto para usar archivos en disco.
def obtener_preguntas():
# observe como los datos quedan guardados en una lista de listas
return [["Cual es el color de cielo en un dia claro?","azul"],\
["Cual es la respuesta a la vida, el universo y todas las cosas?","42"],\
["Cual es una palabra de cuatro letras para trampa de ratones?","gato"]]
# Esto hace una sola pregunta
# toma una sola pregunta
# devuelve verdad si el usuario escribio la respuesta correcta, si no, falso
def revisa_pregunta(pregunta_y_repuesta):
#extrae la pregunta y la respuesta de la lista
pregunta = pregunta_y_respuesta[0]
respuesta = pregunta_y_respuesta[1]
# da la pregunta al usuario
repuesta_usuario = raw_input(pregunta)
# compara la respuesta del usuario con la respuesta correcta
if respuesa == respuesta_usuario:
print "Correcto"
return verdad
else:
print "Incorrecto, lo correcto era:",repuesta
return falso
# Esto hara todas las preguntas
def examinar(preguntas):
if len(preguntas) == 0:
print "No hay preguntas."
# el return sale de la funcion
return
indice = 0
correctas = 0
while indice < len(preguntas):
#Revisa la pregunta
if revisa_pregunta(preguntas[indice]):
correctas = correctas + 1
#ve a la siguiente pregunta
indice = indice + 1
#observe el orden del calculo, primero multiplica y luego divide
print "Obtuvo ",correctas*100/len(preguntas),"% correcto de",len(questions)
#ahora hagamos el examen
examinar(obtener_preguntas())
Muestra:
Cual es el color de cielo en un dia claro?verde
Incorrecto, lo correcto era: azul
Cual es la respuesta a la vida, el universo y todas las cosas?42
Correcto
Cual es una palabra de cuatro letras para trampa de ratones?gato
Correcto
Obtuvo 66 % correcto de 3
Expanda el programa prueba.py para que tenga un menú con la opción de tomar el examen, viendo la lista de preguntas y respuestas, y una opción para cerrar el programa. También, añada una nueva pregunta, "Que ruido hace una maquina verdaderamente avanzada?" con la respuesta "ping".