lunes, 24 de septiembre de 2018

Adivina el número secreto en Python

Reto: Adivina el número secreto

Se genera un número aleatorio entero entre 1 y 100. El usuario debe adivinar el número secreto, diciendo en cada tirada si es mayor o menor.




Método 1

Importamos la librería random para generar el número aleatorio secreto n. Preguntamos al usuario por el primer número. Se añade int antes del input para convertir su respuesta en un número entero, ya que si esto no se hace se capturaría un string. Nos metemos en un bucle de tipo while donde la condición analiza si el número proporcionado por el usuario es distinto del número secreto. Dentro de bucle creamos un condicional if para el caso en que el número sea mayor o bien sea menor que el número secreto. En cada caso informamos al usuario con un mensaje donde se le pide que de otro número. Fuera del bucle tenemos una última línea de código que imprime un mensaje donde se felicita al usuario por haber adivinado el número secreto n.

import random
n=random.randrange(1,100)
nu=int(input('Dime el número que crees que he elegido: '))
while nu!=n:
    if nu>n:
        nu=int(input('El número es mas pequeño'))
    elif nu<n:
        nu=int(input('El número es mas grande'))
print('Felicidades has adivinado que el número secreto es:',n)


Método 2

En este método hemos añadido un contador c para ir anotando las tiradas que se realizan y al final informar al usuario sobre el número de tiradas necesarias hasta que ha adivinado el número secreto.



import random
n=random.randrange(1,100)
nu=int(input('Dime el número que crees que he elegido '))
c=1
while nu!=n:
  c+=1
  if nu>n:
      nu=int(input('El número es mas pequeño'))
  elif nu<n:
      nu=int(input('El número es mas grande'))
print('Felicidades has adivinado que el número secreto es:',n)
print('Y lo has adivinado en',c,'intentos.')

Progresión geométrica en Python

Reto: Progresión geométrica

Calcular cuantos granos de trigo tendríamos que utilizar si por cada casilla de un tablero de ajedrez pusiéramos un grano en la primera casilla, dos en la segunda, cuatro en la tercera, y así doblando hasta la última.



Este es el caso de la leyenda de los granos de trigo y el tablero de ajedrez.


Método 1

La variable s se inicializa en cero, y contendrá la suma de todos los granos de trigo que se van anotando en cada casilla. Nos metemos en un bucle for que usa la variable i que va entre cero y 64, incluido el cero y excluido el 64. Dentro del bucle calculamos el número de granos de la casilla i-ésima elevando al cuadrado, y esto se va acumulando en la variable s que es la suma de todos ellos. Se imprime el cómputo por cada casilla y fuera del bucle imprimimos nuevamente el resultado final en notación científica. Observe que hemos separado en dos líneas impresas usando /n. La notación científica se puede implementar usando la e minúscula o la E mayúscula.

s=0
for i in range(8*8):
  s+=2**i
  print(i+1,2**i,s)
print("En notación científica es %e,\n y el total es: %E granos de trigo." % (2**i,s))


Método 2

En este caso usamos un bucle de tipo while. Al final hacemos una estimación de que en un kilo de trigo hay 25.000 granos y con ella calculamos redondeando cuantos millones de toneladas serían necesarios, comparándolo con la producción mundial.

i=0
s=0
while i<64:
  s+=2**i
  print(i+1,2**i,s)
  i+=1
print('Unos',int(round(s/25000000000000,0)),'millones de toneladas')
print('En 2018, la producción mundial fue de 750 millones de toneladas')