DEV Community

Cover image for Reto día 14/100 con Python
Wilson Gutiérrez L
Wilson Gutiérrez L

Posted on

Reto día 14/100 con Python

Ejercicio

  • Realizar un programa que enseñe al usuario el nombre y tipo de dos Pokémon y elija cual cree que tiene mayor experiencia base.
  • Si acierta gana 10 puntos. Si falla o empata no obtiene nada.
  • El usuario escoge si desea seguir jugando después de cada desafío.
  • Al final si decide no seguir se le mostrará el puntaje final

Este ejercicio se realiza con el fin de afianzar un poco más el uso de los diccionarios. Para ello los datos del pokémon deben ir almacenados en diccionarios, dentro de una lista, donde almacenamos el nombre, tipo y base de experiencia.

pokemon_random = [
    {
        "name":"pikachu",
        "type":"electric",
        "base_experience": 112
    },
    {
        "name":"charmander",
        "type":"fire",
        "base_experience":62
    },
    {
        "name":"bulbasaur",
        "type":"grass",
        "base_experience":64
    },
    {
        "name":"pidgeotto",
        "type":"flying",
        "base_experience":122
    },
    {
        "name":"zubat",
        "type":"flying",
        "base_experience":49
    },
    {
        "name":"mankey",
        "type":"fighting",
        "base_experience":61
    }
]
Enter fullscreen mode Exit fullscreen mode

Para darle un poco más de funcionalidad este diccionario se crea en un archivo aparte que nos va a servir como un módulo para el programa principal.

El programa principal debe comenzar mostrando solo dos datos de cada pokémon y solo se va a pedir que se decida por uno de ellos

print(f"Pokemon del equipo 'a', su nombre es: {poke_a['name']} y es de tipo {poke_a['type']}")
print(f"Pokemon del equipo 'b', su nombre es: {poke_b['name']} y es de tipo {poke_b['type']}")

opcion = input("Escoja 'a' o 'b' cual tiene mas base experiencia\t")
print(winner_pokemon(opcion))

Enter fullscreen mode Exit fullscreen mode

Del anterior código se puede observar que para mostrar los datos se pueden obtener de una lista llamada poke_a y poke_b, cada una me debe traer un pokémon diferente:

poke_a = choice_pokemon()
poke_b = choice_pokemon()

while poke_a == poke_b:
    poke_b = choice_pokemon()
Enter fullscreen mode Exit fullscreen mode

La función que se esta invocando dos veces para obtener el pokémon hace esta elección de manera aleatoria con el método choice del módulo random

import data as d
import random as r
def choice_pokemon():
    return r.choice(d.pokemon_random)
Enter fullscreen mode Exit fullscreen mode

El módulo data es el archivo que creamos inicialmente con la lista de pokémon. Pero volviendo al menú inicial donde se le solicita al usuario que se decida por alguno de los dos pokémon presentados aleatoriamente, se hace uso del método local winner_pokemon el cual va a comparar la base de experiencia de cada uno y si el jugador acierta se le asigna un puntaje.


def asignar_puntaje():
    global score
    score += 10
    return score

def winner_pokemon(op):
    experience_a = poke_a["base_experience"]
    experience_b = poke_b["base_experience"]

    if experience_a > experience_b:
        if op == 'a':
            asignar_puntaje()
            return f"El ganador es {poke_a['name']} con experiencia {experience_a} y usted obtiene 10 puntos"            
        elif op == 'b':
            return f"El ganador es {poke_a['name']} con experiencia {experience_a} y usted no obtiene puntos"
    elif experience_a < experience_b:
        if op == 'a':
            return f"El ganador es {poke_b['name']} con experiencia {experience_b} y usted no obtiene puntos"
        elif op == 'b':
            asignar_puntaje()
            return f"El ganador es {poke_b['name']} con experiencia {experience_b} y usted obtiene 10 puntos"
    else:
        return "No hay ganador, es empate"

Enter fullscreen mode Exit fullscreen mode

El ejercicio completo lo pueden descargar del repositorio Github

Top comments (0)