The top 3 lines just generates 3 random pokemon names. The issue comes in the "If" statement as when the user inputs something that is not an option, it passes the if statement, but because it wasn't an option, the user is still stuck in the while loop.
def pkmn_choice1():
Pokemon1 = Pokemon_dct[f'{random_pkmn1}'].pokechoice()
Pokemon2 = Pokemon_dct[f'{random_pkmn2}'].pokechoice()
Pokemon3 = Pokemon_dct[f'{random_pkmn3}'].pokechoice()
choices1 = [f'{Pokemon1}', f'{Pokemon2}', f'{Pokemon3}']
print("Choose one of these Pokemon to fight with.")
userinput1 = ""
while userinput1 not in choices1:
print(f"Options: {Pokemon1}, {Pokemon2}, or {Pokemon3}.")
userinput1 = input()
if userinput1 == f"{Pokemon1}" or f"{Pokemon2}" or f"{Pokemon3}":
print(f'You have chosen {userinput1} to be your partner.')
Pokemon_dct[f'{userinput1}'].pokeinfo1()
else:
print("That was not a valid selection. Please try again")