0

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.

1 Answers1

0

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
alvas
  • 115,346
  • 109
  • 446
  • 738