2. Entrando en materia Entrando en materia Objetivos Conocer las diferentes estructuras cíclicas de Python Profundizar en los tipos de datos conocidos. Programa 7 Descripción del problema: Se va a modificar el programa 6 para saludar a más gente, primero preguntaremos cuánta gente hay e iremos saludando uno a uno comentando su edad como hasta ahora. Materia nueva: Cuando sabemos el número de veces que tenemos que hacer algo, aunque podríamos usar  while , se usa otra estructura: For significa en inglés “por”. Lo que quiere decir es “por cada uno”. Tiene muchas sintaxis aunque sólo daremos una de momento. for nombredevariableentera in range(númeroinicial, númerofinal): Órdenes Hay que decir que, si númeroinicial =0 no hace falta ponerlo y quedaría: for nombredevariableentera in range (númerofinal): ¡Atención! Python empieza en el número inicial, imaginemos range (1,5). Cuando a cualquier persona le resulta normal contar de uno a cinco de la siguiente manera: 1, 2, 3, 4, 5  A Python no, resulta que él cuenta los números que ha puesto y dice: "No puede ser: 5-1=4. Debo hacerlo cuatro veces" y cuenta de esta manera: 1, 2, 3, 4 He empezado en el 1 por ser range(1,5) . Si hubiera sido  range ( 4 ) : 0, 1, 2, 3 Como se ve, el último número no lo va a tocar. Cuidado con esto ya que ocasiona la mayor parte de problemas en los programas . Solución Algoritmo: 1.- Saludo y pregunto cuánta gente hay 2.- Para cada uno de ellos: 2.1.- Pido el nombre 2.2.- Pido la edad 2.3.- Compruebo que se puede convertir en número y, si no puede, repito la pregunta hasta que pueda. Voy guardando en una variable las veces que hago esto. 2.4.- Le digo las veces que se lo he preguntado. 2.5.- Comparo la edad y, si es menor de 25 le digo que estudie Si es menor de 65 le digo que ponga orden Si es mayor o igual a 65 le digo que se vaya Solución: Explicación: Es necesario darse cuenta de que se ha identado el programa anterior para que forme parte de la estructura for, pues tenía que repetir todo el programa anterior. Menos mal que tenemos la identación para aclarar un poco las diferentes partes que componen el programa. Si quieres identar una gran cantidad de texto, el editor tiene una opción para identar un montón de líneas a la vez y que no sea necesario hacerlo a mano. Está en format: indent region . Programa 8 Descripción del problema: Queremos realizar un programa que modifique el número 7. Esta vez sólo queremos saludar pero, en vez de hacerlo uno a uno, lo haremos a todos a la vez, es decir, es necesario que recuerde los nombres y se dirija a ellos con un “Hola, persona1, persona2, persona3... y personaúltima”.  Materia nueva: Existe otro tipo de datos que se llama List (lista). Una lista es, tal y como se puede pensar, lo mismo que en la vida real salvo que, en Python, el primer elemento siempre es el 0. Imaginemos que queremos preparar una cena. Todo lo que se nos ocurra podemos hacerlo en Python, por ejemplo: |Vida real|Python| |--|--| |Contar el número de comensales:|len(lista) len es una abreviatura de length| |Decir qué comensal ocupa el número 3, por ejemplo|lista[3] Siempre entre corchetes| |Escoger del 7 al 14|lista[7:14] Tened en cuenta el 0!!| |Añadir uno al final|lista.append(otrocomensal)| Hay muchas más posibilidades, como se puede ver en: https://docs.python.org/3/tutorial/datastructures.html Este tipo de datos hay que declararlos, bien para decir que están vacíos, bien porque los queremos con datos iniciales.  Se declara nombrando la lista y poniendo: listanueva [] Si la queremos vacía para ir llenándola a lo largo del programa. listanueva= ["Lunes","Martes","Miércoles","Jueves","Viernes"] Si queremos los días laborables. Es decir, se introducen los elementos separados por comas. De momento, nos conformaremos con lo expuesto y resolveremos el problema. Ahora retomaremos a una vieja conocida:  str( algoqueconvertiratexto ) Esta función también puede convertir una lista a texto. Usadlo en este programa:  str ( lista ) Solución Algoritmo: 1.- Saludo y pregunto cuánta gente hay 2.- Para cada uno de ellos: 2.1.- Pido el nombre y lo voy almacenando en algún sitio: Una lista. 3.- Saludo a todos poniendo la lista después de "Hola, ". Solución: Comentarios: Como se ve, la transformación a texto de la lista es bastante mala para presentarla en pantalla. A lo largo de los dos ejercicios siguientes vamos a ver cómo solucionarlo.  Programa 9 Descripción del problema: Este programa va a solucionar el problema de visualización del programa 8 cambiando la cadena de texto progresivamente. Es decir, una variable de texto va a incluir el saludo y los nombres de cada uno de los presentes. Para hacerlo, aunque hay muchas posibilidades, se va a modificar el programa 8. Esto implica que se van a seguir guardando los nombres en una lista. Materia nueva: Aquí hay varias apreciaciones respecto a la estructura for . Si nos paramos a pensar, el conjunto de los números enteros es como una lista. Los días de la semana forman otra lista, y un largo etcétera. Tenemos un elemento inicial y otros siguientes ordenados; eso define una lista. Pues bien, for puede, no sólo recorrer una lista de enteros sino también una de cualquier otra cosa. Su sintaxis es muy parecida a la que vimos en el programa 7 pero usando la lista dentro de range : python for i in range(lista): Si sólo fuera cuestión de números, podríamos haber simulado una estructura for por medio de un while: i=0 while i