Search code examples
pythonvar

how to convert a string to another string


I am making a pokemon game and would like to ask the player what attacks they would like to choose.

I have a var named squirtle_attacks

squirtle_attacks = ['bubble', 'tailwhip', 'tackle']


attacks_list = active_p + '_attacks'
choice = que(f'Choose one {attacks_list}')

ignore the que and choice other things

when it prints it says chose one squirtle_attacks when I would like it to say Bubble and water_spin.


Solution

  • Try:

    pokemon2attacks = {
    "squirtle": ["aqua jet", "bubbles", "water pulse"], 
    "charmander": ["fire fang", "slash", "flamethrower"]
    }
    
    squirtle = "\n- ".join(pokemon2attacks["squirtle"])
    print(f"Choose one\n- {squirtle}")
    

    [out]:

    Choose one
    - aqua jet
    - bubbles
    - water pulse
    

    Or:

    squirtle = "".join([f"\n{str(i+1)}. {a}" for i, a in enumerate(pokemon2attacks["squirtle"])])
    
    print(f"Choose one {squirtle}")
    

    [out]:

    Choose one 
    1. aqua jet
    2. bubbles
    3. water pulse
    

    Then we get fancy:

    import requests
    from bs4 import BeautifulSoup
    
    def get_moves(pokemon):
      response = requests.get(f"https://pokemondb.net/pokedex/{pokemon}")
      bsoup = BeautifulSoup(response.content.decode('utf8'))
      moves = {}
      for tr in bsoup.find('table', attrs={'class': "data-table"}).find_all('tr'):
        headers = ['level', 'name', 'type', 'category', 'power', 'accuracy']
        if tr.find_all('td'):
          move = {k:v.text for k, v in zip(headers, tr.find_all('td'))}
          moves[move['name']] = move
      return moves
    
    pokemon = "squirtle"
    
    squirtle_moves = "".join([f"\n{str(i+1)}. {a}" for i, a in enumerate(get_moves(pokemon).keys())])
    
    print(f"Choose one\n{squirtle_moves}")
    

    [out]:

    Choose one
    
    1. Tackle
    2. Tail Whip
    3. Water Gun
    4. Withdraw
    5. Rapid Spin
    6. Bite
    7. Water Pulse
    8. Protect
    9. Rain Dance
    10. Aqua Tail
    11. Shell Smash
    12. Iron Defense
    13. Hydro Pump
    14. Skull Bash
    

    And a little fancier:

    import requests
    from bs4 import BeautifulSoup
    
    def get_moves(pokemon, level):
      response = requests.get(f"https://pokemondb.net/pokedex/{pokemon}")
      bsoup = BeautifulSoup(response.content.decode('utf8'))
      moves = {}
      for tr in bsoup.find('table', attrs={'class': "data-table"}).find_all('tr'):
        headers = ['level', 'name', 'type', 'category', 'power', 'accuracy']
        if tr.find_all('td'):
          move = {k:v.text for k, v in zip(headers, tr.find_all('td'))}
          moves[move['name']] = move
    
      moves_filtered_by_level = {k:v for k,v in moves.items() if int(v['level']) <= level}
      return moves_filtered_by_level
    
    pokemon = "squirtle"
    
    availble_moves = get_moves(pokemon, level=10)
    
    squirtle_moves = "".join([f"\n{str(i+1)}. {a}" for i, a in enumerate(availble_moves.keys())])
    
    print(f"Choose one\n{squirtle_moves}")
    

    [out]:

    Choose one
    
    1. Tackle
    2. Tail Whip
    3. Water Gun
    4. Withdraw
    5. Rapid Spin