Mostrando entradas con la etiqueta Python. Mostrar todas las entradas
Mostrando entradas con la etiqueta Python. Mostrar todas las entradas

4 feb 2024

1 feb 2017

6 nov 2016

Python 09. Generador de frases (Matrices y funciones)


En este apartado vamos a aprender:
  • A definir funciones
  • Matrices o arrays
  • A gestionar el tiempo con time.sleep(x)
  • Escribir en la misma linea con la orden print('texto',end='')
  • Gestión de bucles con continue
Antes de comenzar con el programa principal vamos a ver un poco como funcionan las matrices y las funciones:

Las matrices:
Los arrays o matrices son listas de elementos a las que ponemos un nombre para poder trabajar con ellas. Vamos a ver un ejemplo con la matriz días
Si tecleamos en la shell de Python lo siguiente:

>>>días=['lunes','martes','miércoles','jueves','viernes']
>>>días
['lunes', 'martes', 'miércoles', 'jueves', 'viernes']
>>>días[0]
'lunes'
>>>días[4]
'viernes'

Cuando definimos una matriz, automáticamente se le asigna a cada item o elemento de la matriz un número de orden o índice (index). Este índice empieza a contar por 0, por lo que el primer elemento de la matriz será matriz[0] y el último siempre será matriz[número de elementos de la matriz - 1]

Se puede operar con los elementos de una matriz como se operaba con las cadenas
>>>días[1]+días[3]
'martesjueves'

Una orden que se puede aplicar a matrices es len que sirve para obtener la longitud (número de elementos) de una matriz

 >>>len(días)
5

Las funciones:
Una función es una parte del código que se define, se guarda y se ejecuta cuando el programador desea. Son como programas dentro de otros programas.
Se suelen emplear cuando el programador va a utilizar un grupo de instrucciones en varias ocasiones durante el programa.
Por ejemplo: En un videojuego se puede definir la función "sumar puntuación" que haría la suma de 10 puntos y emitiría un sonido; y que sería llamada cada vez que el jugador mata una nave enemiga.
Una función se define empleando la sentencia def nombrefunción (algo).
Vamos a hacer un ejemplo para entender como funciona:
#función de ejemplo, para quedar bien
def quitarEdad(añosDeMás):
    añosDeMenos=int(añosDeMás)-10
    return añosDeMenos

print('¿Cuántos años tienes?')
edad=input()

edadNueva=quitarEdad(edad)
print('Pues no aparentas más de '+str(edadNueva))

Definimos la función quitarEdad y la asignamos un atributo que es añosDeMás y que se coloca entre paréntesis.
En la siguiente línea lo que hacemos es realizar una operación que resta 10 a la edad original (añosDemás) y el valor se lo asigna a la variable añosDeMenos.
La línea return índica que debe volver a la línea donde fue llamada y que el valor de salida será añosDeMenos.
Lo que hace esta función es transformar el número que se le ponga en otro 10 años menor.
Para llamar a la función se utiliza la orden edadNueva=quitarEdad(edad)

Introducción del programa de generar frases:
El programa va a generar frases aleatorias a partir de unas matrices de palabras que le indicamos.

Código:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# Generador automático de frases
import random
import time
personas=['Juan','Luis','Irene','Kevin','Adriana']
verbos=['ama','odia','no entiende','insulta','sonrie','escucha']
def escogePalabra(palabraLista):
   índice=random.randint(0,len(palabraLista)-1)
   return palabraLista[índice]

otrojuego='sí'
    
while otrojuego=='sí' or otrojuego=='Si' or otrojuego=='Sí' or otrojuego=='si':    
    persona=escogePalabra(personas)
    persona2=escogePalabra(personas)
    verbo=escogePalabra(verbos)
    print('Voy a decirte algo de '+persona)
    time.sleep(1)
    print()
    print(persona+ ' '+verbo+ ' a ', end='')
    time.sleep(2)
    print(persona2)
    time.sleep(2)
    print()
    print('¿Quieres que te diga otra cosa? (Escribe sí o no)')
    otrojuego=input()
print('¡Hasta luego!')   
       
    
       



El programa en el editor de archivos se verá así:


El resultado

Por partes:
Con import importamos dos módulos. El módulo random genera números aleatorios ( ya lo conocemos) y el módulo time sirve para incorporar retardos en los programas.
2. import random
3. import time

Utilizamos 2 matrices. En este caso tenemos las matrices personas y verbos.
4. personas=['Juan','Luis','Irene','Kevin','Adriana']
5. verbos=['ama','odia','no entiende','insulta','sonrie','escucha']

Creamos una función que se llama escogePalabra y que servirá para elegir una de las palabras de la lista.
En la línea 7 generamos un número que esté entre 0 y el número de palabras de la lista menos 1. Esto es porque, como ya hemos visto, las palabras de las matrices empiezan por 0 y el último elemento es un número menor que la cantidad de elementos.
En la línea 8 le decimos a la función que envíe un valor de retorno a la línea que ha llamado a la función de un valor de elemento [índice] de la matriz palabralista.

6. def escogePalabra(palabraLista):
7.    índice=random.randint(0,len(palabraLista)-1)
8.    return palabraLista[índice]

En la línea 10 declaramos una variable que se llama otrojuego y le asignamos inicialmente el valor de 'sí'
10. otrojuego='sí'

En la línea 12 abrimos un bucle con la orden while que se mantendrá mientras la variable otrojuego='sí', también vale si se pone Si, Sí o si.
12. while otrojuego=='sí' otrojuego=='Si' or otrojuego=='Sí' or otrojuego=='si':

En la líneas 13,14 y 15 llamamos a la función que hemos definido, escogePalabra, Le asignamos un atributo que es personas en la 13 y 14 y verbos en la 15. En cada una de estas líneas la función se pone a funcionar. Se puede decir que el programa trae la función a donde la hemos llamado para que se ejecute y continúa en el mismo sitio con el valor de retorno que ha generado (persona, persona2 y verbo).
13.     persona=escogePalabra(personas)
14.     persona2=escogePalabra(personas)
15.     verbo=escogePalabra(verbos)

En la línea 16 imprimimos una línea de información. En ella se escribe el nombre de la primera persona que se ha generado aleatoriamente.
La línea 17 se genera una espera con la orden time.sleep(1). Esto se hace con el módulo time que importamos al principio y permanece en espera el tiempo en segundos que se ponga dentro del paréntesis)
La orden print() introduce una línea en blanco como resultado. Deja espacio entre la anterior línea y la siguiente.
16.     print('Voy a decirte algo de '+persona)
17.     time.sleep(1)
18.     print()

Las siguientes líneas van introduciendo la frase aleatoria con retardos de 2 segundos para darle emoción.
Hay que observar la linea 19 donde introducimos un nuevo atributo end='' que lo que hace es que la siguiente cosa que se imprima se haga en la misma línea y no en la línea siguiente como es habitual.
Como se ve la frase es del estilo de: persona+verbo+' a '+persona2
19.     print(persona+ ' '+verbo+ ' a ', end='')
20.     time.sleep(2)
21.     print(persona2)
22.     time.sleep(2)
23.     print()


En la línea 24 se le pregunta al jugador si quiere que el ordenador le diga otra frase
Lo que el usuario diga se mete en la variable otrojuego.
Si dice que sí se aplica se cumple la condición del bucle y por tanto continua repitiendo el bucle.

Si dice que no se acabara el bucle y continua a la orden siguiente. También continuará si el usuario se equivoca al teclear e introduce algo que no sea sí.

24.     print('¿Quieres que te diga otra cosa? (Escribe sí o no)')
25.     otrojuego=input()

Finalmente el ordenador se despide
26. print('¡Hasta luego!') 

Ejercicios:
  1. Cambia los valores de los personas y verbos de las matrices del programa.
  2. Pon las órdenes necesarias para evitar que persona y persona2 sean la misma,
  3. Dibuja el flujograma del programa. Utiliza por ejemplo el programa Draw de Libreoffice. Tienes una explicación de los flujogramas aquí
  4. Diseña un programa que permita pasar de dolares a euros y viceversa utilizando funciones.
    • Debe preguntar si quieres pasar de euros a dolares o de dolares a euros.
    • El resultado debe tener 2 decimales (orden round(número, decimales))
    • Ten cuidado con los números y las cadenas. Recuerda la orden str(número)
    • Después de hacer el cálculo nos debe decir que si queremos hacer otro.
    • Aquí ves el resultado que tiene que dar:



Python 10. Colores en inglés y Juego de cartas


Más programas:

¿Sabes los colores en inglés?
Este programa sirve para averiguar si sabemos los colores en inglés. Va preguntando cómo se dice cada uno de los colores y nosotros le debemos responder con la palabra en inglés

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# Colores en inglés
colores=['negro','blanco','rojo','verde','amarillo','azul','rosa','gris','naranja']
colors=['black','white','red','green','yellow','blue','pink','grey','orange']

print ('¡A ver qué tal sabes los colores en inglés!')
aciertos=0
for i in range(0,9):
    print('¿Cómo se dice en inglés '+colores[i]+' (escribe en minúsculas)?')
    dice_jugador=input()
    if dice_jugador==colors[i]:
       print ('¡Correcto!')
       aciertos=aciertos+1
    else:
       print ('¡Has fallado!')

print ('Has acertado '+ str(aciertos)+' de 9 intentos')


Juego de cartas. La carta de más valor
En este juego participan 2 jugadores.
El ordenador pregunta el nombre de los 2 jugadores.
Genera aleatoriamente una carta para cada jugador.
Va diciendo que jugador ha ganado en cada tirada y espera 5 segundos entre cada tirada.
Repite la tirada 5 veces,
Al final dice cuántas veces ha ganado cada jugador.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#Este juego es el de la carta más valiosa
#juegan 2 jugadore y gana el mejor de 5 tiradas

import random
import time
print ('¿Como se llama el jugador 1?')
nombre0=input()
print ('¿Como se llama el jugador 2?')
nombre1=input()
gana0=0
gana1=0
x=1
while x<6:
   x=x+1
   número=[0,0]
   palo=[0,0]
   númeroletras=[0,0]
   paloletras=[0,0]
   for i in range(0,2):
      número[i]=random.randint(1,10)
      palo[i]=random.randint(1,4)
      if número[i]==1:
         númeroletras[i]='el dos'
      if número[i]==2:
         númeroletras[i]='el cuatro'
      if número[i]==3:
         númeroletras[i]='el cinco'
      if número[i]==4:
         númeroletras[i]='el seis'
      if número[i]==5:
         númeroletras[i]='el siete'
      if número[i]==6:
         númeroletras[i]='la sota'
      if número[i]==7:
         númeroletras[i]='el caballo'
      if número[i]==8:
         númeroletras[i]='el rey'
      if número[i]==9:
         númeroletras[i]='el tres'
      if número[i]==10:
         númeroletras[i]='el as'
      if palo[i]==1:
         paloletras[i]='oros'
      if palo[i]==2:
         paloletras[i]='copas'
      if palo[i]==3:
         paloletras[i]='espadas'
      if palo[i]==4:
         paloletras[i]='bastos'

   print(nombre0+' ha sacado '+númeroletras[0]+' de '+paloletras[0]+'. '+nombre1+' ha sacado '+númeroletras[1]+' de '+paloletras[1]);
   if número[0]>número[1]:
       gana0=gana0+1
       print ('Ha ganado '+ nombre0)
   if número[1]>número[0]:
       gana0=gana0+1
       print ('Ha ganado '+ nombre1)
   if número[0]==número[1]:
       print ('No gana nadie')
   time.sleep(5)
print (nombre0+ ' ha ganado '+ str(gana0)+' veces y '+nombre1+' ha ganado '+ str(gana1)+' veces')

Ejercicios

  1. Modifica el programa de los colores para que calcule el % de aciertos. Debe también indicar en los colores que se contesten de manera errónea lo que ha dicho el usurio y cual sería la respuesta correcta.
  2. Modifica el programa de los colores para que sirva para otro tipo de preguntas. Por ejemplo capitales de países, ríos que pasan por una ciudad,...
  3. Modifica el programa de los colores para que el ordenador haga preguntas que tengan 4 posibles respuestas (a, b, c, y d) y el jugador debe indicar la correcta.
  4. Crea un programa para jugar a piedra papel o tijera. Habrá 2 jugadores. Deberán jugar 5 partidas.
  5. Modifica el programa para jugar a piedra papel o tijera. En este caso habrá un único jugador que puede elegir lo que quiere y juega contra el ordenador. Deberán jugar 6 partidas.

Python 08. Quiniela (FOR)


Vamos a ver a continuación una nueva orden: La orden FOR

El programa imprimirá una linea de información y a continuación generará el resultado (1, X, 2) de los quince partidos de la quiniela. (1 significa que gana el equipo de casa, X es empate y 2 es que gana el equipo visitante)

Código:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#Generar el resultado de la quiniela

print ('Este es el resultado de la quiniela. ¡Seguro que acierto!')

import random 

for i in range(1,16):
    numero=random.randint(1,3)
    if numero ==1:
        resultado='1'
    if numero ==2:
        resultado='2'
    if numero ==3:
        resultado='X'
    print('Partido '+ str(i)+'. El resultado será '+resultado)

El programa en el editor de archivos se verá así:


Flujograma:


Por partes:
La orden print() imprime en pantalla lo que se encuentra entre comillas dentro del paréntesis como ya sabemos
print ('Este es el resultado de la quiniela. ¡Seguro que acierto!')

La función import random la llamamos para generar números aleatorios
import random

La orden for i in range (1,16) repetirá todo lo que viene debajo en este caso 15 veces y cada vez que lo haga el valor de la variable i se irá incrementando. La primera vez la i valdrá 1, la siguiente 2 y así sucesivamente. El valor 16 no lo hace solo hace hasta menos de 16.
La orden numero=random.randint(1,3) genera números que pueden ser 1, 2 o 3 y se los asigna a la variable número.
Las ordenes if asignan los integer: 1, 2 y 3 respectivamente a los strings: 1, 2 y X
La orden print del final imprime en pantalla el número del partido y el resultado. teniendo en cuenta que saldrá 15 veces por la orden for.

for i in range(1,16):
    numero=random.randint(1,3)
    if numero ==1:
        resultado='1'
    if numero ==2:
        resultado='2'
    if numero ==3:
        resultado='X'
    print('Partido '+ str(i)+'. El resultado será '+resultado)

Ejercicios:

  1. Modifica el programa para que salgan el doble de 1 que de X y 2 ya que habitualmente es más común que gane el equipo de casa.
  2. Diseña un programa que sirva para que el jugador pueda hacer cuantas tiradas de dados quiera, con dados del número de caras que el jugador desee. Después el programa deberá informar al jugador de la puntuación obtenida en cada tirada. El programa deberá saludar al jugador y dirigirse a él por su nombre". Este sería el resultado del programa:



Python 07. Edad y piropeador (if...and, if...else)


En este apartado vamos a profundizar un poco en las ordenes condicionales, ampliando lo que conocemos de la orden if y  usando la orden else.

Vamos a hacer un programa en el que se preguntará la edad al jugador y se creará una frase con el nombre del usuario y una palabra diferente en función del rango en que se encuentre la edad.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
#Un programa para la edad

print ('Hola, ¿Cómo te llamas?')
nombre=input()

print('Hola, '+nombre+', ¿Cuantos años tienes?')
edad=input()
edad=int(edad)

if edad<13:
    print(nombre+', eres un niño')
if edad>=13 and edad<18:
    print(nombre+', eres un adolescente')
if edad>=18 and edad<30:
    print(nombre+', eres un joven')
if edad>=30 and edad<65:
    print(nombre+', eres un adulto')
if edad>=65:
    print(nombre+', eres un jubilado')


El resultado deberá ser algo coma esto:

Por partes:

Las lineas 1 a 4 ya sabemos  que son la presentación y la introducción del nombre por parte del usuario.

1. #Un programa para la edad
2. 
3. print ('Hola, ¿Cómo te llamas?')
4. nombre=input()

Las lineas 6-8 también te serán conocidas, empleamos exactamente el mismo código que en el apartado anterior, Es importante  ejecutar la función edad=int(edad), que sirve para transformar el valor introducido por el jugador en un número entero. El contenido que se obtiene de la función input() siempre es una cadena (string), esto quiere decir que aunque se pongan números el ordenador los tratará como texto. Si no hacemos a transformación de cadena a entero (integer), Python no será capaz de ejecutar operaciones matemáticas con el valor introducido.

6. print('Hola, '+nombre+', ¿Cuantos años tienes?')
7. edad=input()
8. edad=int(edad)

Las lineas 10-19 son las que contienen el núcleo del programa. Compara la edad introducida por el usuario con valores que nosotros le definimos y, en función de ellos, dan un resultado. la orden and me permite establecer rangos. Al poner and se deben cumplir las dos condiciones (la que está antes y la de después del and)


10. if edad<13:
11.     print(nombre+', eres un niño')
12. if edad>=13 and edad<18:
13.     print(nombre+', eres un adolescente')
14. if edad>=18 and edad<30:
15.     print(nombre+', eres un joven')
16. if edad>=30 and edad<65:
17.     print(nombre+', eres un adulto')
18. if edad>=65:
19.     print(nombre+', eres un jubilado')


If quiere decir "si", en la manera de "pensar" de Python funciona, más o menos, del siguiente modo:

Python va escogiendo entre dos valores de manera escalonada, y nosotros tenemos que definirle esos valores. 

Otro ejemplo.
En este caso tenemos el programa piropeador para hombres y mujeres.



 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#piropeador para hombre y mujer

print ('Hola, ¿Cómo te llamas?')
nombre=input()

print('Hola, '+nombre+', ¿Eres un hombre o una mujer?')
sexo=input()

if sexo=='hombre':
    print(nombre+', eres muy guapo')
else:
    print(nombre+', eres muy guapa')



Else quiere decir algo como "en cualquier otro caso", y se aplica cuando no se cumple la condición que se ha indicado en el if
Lo que hace la orden es:
if  <condición>:
    <hacer algo si se da la condición>
else:
     <hacer otra cosa si no se da la condición>

Ejercicios:

  1. Modifica los rangos y mensajes del programa de la edad.
  2. Añade un mensaje que salga si la edad es mayor de 100 años y que diga "Eres Matusalén"
  3. Haz un programa que de mensajes (eres un poco pequeño, tienes una estatura media, eres muy alto) sobre la altura que se introduzca
  4. Modifica el programa del apartado anterior (Python 6) para que, en vez de dar la pista de "demasiado alto" o "demasiado bajo", dé la pista "caliente", "templado" o "frío" según esté de cerca el número introducido respecto al número secreto? Seguramente necesitarás de la orden abs(x), que devuelve el valor absoluto (sin tener en cuenta el signo) de x.
  5. Modifica el programa de calcular el IMC del apartado anterior (Python 6) (ejercicio 6.4) para que además de decir el IMC nos indice si estamos por debajo del peso normal, en el peso normal, con sobrepeso o con obesidad.

Python 06. Adivina el número


Python 06: Adivina el número


En este apartado vamos a hacer un programa que se basa en lo aprendido anteriormente y lo lleva un paso más allá. Vamos a aplicar la función randint para que el ordenador escoja un número entre 1 y 20 y daremos añ usuario seis intentos para conseguir adivinarlo. Ademas, el ordenador aplicará comparaciones para darle pistas al jugador y decirle si se pasa por arriba o por abajo del número secreto.

El código del programa:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#Este es un juego de adivinar el número
import random

intentos=0

print('¡Hola! ¿Cuál es tu nombre?')
nombre = input()

numero=random.randint(1,20)
print('Bueno, '+nombre+', piensa un número entre 1 y 20.')

while intentos<6:
    print ('¡Adivínalo! Tienes 6 intentos')
    adivina=input()
    adivina=int(adivina)

    intentos=intentos+1
   
    if adivina<numero:
        print ('¡Demasiado pequeño!')

    if adivina>numero:
        print('¡Demasiado grande!')

    if adivina==numero:
        break

if adivina==numero:
    intentos=str(intentos)
    print('Fabuloso, '+nombre+', acertaste el número en '+intentos+' intentos. ¡Estarás orgulloso-a!')

if adivina!=numero:
    numero=str(numero)
    print('¡Qué fatalidad '+nombre+' ! Yo estaba pensando en el número '+numero)
Guarda el programa con el nombre adivinar número.py y pruébalo

El resultado:

Si escribiches todo correctamente, el resultado tiene que dar algo como esto:



Por partes:
La primera y segunda lineas  son un comentario y la sentencia de importación del módulo random. Como siempre, dejamos lineas en blanco para facilitar la lectura.

1. #Este es un juego de adivinar el número
2. import random
3.

En la linea 4 declaramos una variable intentos a la que asignamos el valor 0. Esta variable la creamos porque necesitamos llevar la cuenta de los intentos que hace el jugador, para que sólo le permitamos 6.

 4. intentos=0

Las líneas 6 y 7 son la presentación

6. print('¡Hola! ¿Cuál es tu nombre?')
7. nombre = input()

En la linea 9 hacemos que el ordenador piense un número entre 1 y 20 con
random.randint(1,20) y guardamos el resultado en la variable numero. En la linea 10 imprimimos el saludo y la propuesta de juego.

9. numero=random.randint(1,20)
10. print('Bueno, '+nombre+', piensa un número entre 1 y 20.')

El bucle while:
La orden while que aparece en la linea 12 da comienzo a un bucle, una parte de código que se ejecuta siempre que se cumpla una condición. "While", en inglés, significa "mientras que", o sea que la linea le indica al ordenador que "mientras que intentos sea menor que 6, haz todo lo que viene debajo. Si intentos es igual o mayor que 6, sáltate todo lo que viene debajo hasta la linea break"



12. while intentos<6:
 
La sentencia while compare el valor de intentos con el entero 6, se ejecuta el bucle (lineas 13-27) mientras esta condición sea True.

Las lineas 13 y 14 imprimen la cadena ¡Adivínalo! recogen lo que el jugador introduzca en la variable adivina.

13.     print ('¡Adivínalo! Tienes 6 intentos')
14.     adivina=input()

La linea 15 sirve para convertir el tipo de variable. Ya explicamos que, para Python, no el lo mesmo el entero 6 que la cadena '6', y cuando el jugador introduce un valor
input(), este se almacenado como una cadena. Con la función int() convertimos el valor introducido por el jugador en adivina en un entero. 
(Por ejemplo si el jugador introduce el valor 15, la función input() almacenará como una cadena '15'. Con la función int() convertimos esa cadena '15' en el entero 15.)

15.     adivina=int(adivina)

La linea 17 hace lo que se conoce como establecer un incremento de variable o contador. Es decir, que cada vez que el ordenador ejecute esta instrucción, la variable
intentos va aumentando su valor en 1. Esto lo hacemos para llevar la cuenta de cuantas veces ha tenido el jugador que adivinar el número. Si llega a 6 intentos le daremos el mensaje de consolación.

17.     intentos=intentos+1
 

Las lineas 19-26 emplean la sentencia if, que ya conoces del apartado anterior, para evaluar si el número introducido por el jugador es mayor, menor o igual que el número secreto. Primeir evaluará la condición que ponemos en primero lugar, y si esta es True, el programa ejecutará la instrucción correspondiente. Si la condición es False pasará al siguiente if, y repetirá a operación. 
Si acertamos, la liña 25 evaluará un True, y la instrucción que se ejecuta será break. Esto indica al programa que se debe salir del bucle en el que estábamos, sin necesidad de esperar que el número de intentos sea 6 o mayor, como establecía la condición while intentos<6 que abría el bucle.

19.     if adivina<numero:
20.         print ('¡Demasiado pequeño!')
21.
22.     if adivina>numero:
23.         print('¡Demasiado grande!')
24.
25.     if adivina==numero:
26.         break

Después de que se ejecute la instrucción
break, o de que la condición while intentos<6 evalúe un False, salimos del bucle y llegamos a la linea 28. En esta linea comprobamos si el número introducido por el jugador (adivina) es igual que el número secreto. Si es así, en la linea 29, convertimos en cadena el entero de intentos mediante la función str(intentos), que funciona igual que explicamos antes con int() pero a la inversa. Hacemos esto porque a función print(), en Python, sólo admite variables que almacenen cadenas. 
La linea 30 imprimirá el mensaje de felicitación para el jugador/a.
Las lineas 32, 33 y 34 funcionan de manera semejante, pero reconociendo el valor introducido como diferente del número secreto y proporcionando un mensaje de consolación.

28. if adivina==numero:
29.     intentos=str(intentos)
30.     print('Fabuloso, '+nombre+', acertaste el número en '+intentos+' intentos. ¡Estarás orgulloso-a!')
31.
32. if adivina!=numero:
33.     numero=str(numero)
34. print('¡Qué fatalidad '+nombre+' ! Yo estaba pensando en el número '+numero)

Ejercicios:
  1. Cambia los parámetros del juego, para que el número elegido esté entre 5 y 30, que se permita un número mayor o menor de intentos y cambia también los mensajes de felicitación y consolación.

  2. Introduce las instrucciones precisas para que el programa informe al jugador/a de cuantos intentos lleva y cuantos le quedan, cada vez que este quiera adivinar.

  3. Introduce una variable puntos que al comienzo tenga un valor determinado y que, cada vez que el jugador falle, se le reste una cantidad concreta de puntos. Al final del programa, el mensaje de felicitación o consolación debe informarle de cuantos puntos ha obtenido.

  4. Haz un programa que calcule el índice de masa corporal (IMC) del jugador/a? 
  • Tendrá que pedir el peso en Kg y la altura en m, y luego calcular el índice con la fórmula: IMC=Kg/(m*m). 
  • Tienes que tener muy en cuenta las conversiones de tipos de datos con las funciones str() e int()
  • Ten en cuenta también que como el peso y el IMC van a tener decimales debemos utilizar la orden float() que sirve para indicar que es un número con decimales.
  •  Debes hacer que el IMC salga con sólo 2 decimales; utiliza para ello la orden round(cantidad, nº de decimales)


Twitter Facebook Tuenti LinkedIn gmail Favorites More