I’m pretty new to python and I’m trying to make an inventory for a text RPG game I’m making if you could help me figure this out id super appreciate it!
class PlayerAttributes: inventory = [] def __init__(self, name, inventory): self.name = name self.inventory = inventory # LIST class Item: def __init__(self, item_name, damage): self.item_name = item_name self.damage = damage class Weapons(Item): weapon_1 = Item("Me Sword", 100) Player_1 = PlayerAttributes("Bob", []) def get_name(): Player_1.name = input("Enter name here: ").capitalize() commands() def stats(): print("Name = " + str(Player_1.name), "n", "Inventory: ") for x in Player_1.inventory: print(str(x.item_name)) def commands(): prompt = None prompt_choices = {"stats", "quit", "give"} while prompt not in prompt_choices: prompt = input("Enter Command: ").lower() if prompt == "stats": stats() commands() elif prompt == "quit": quit() elif prompt == "give": Player_1.inventory.append(Weapons.weapon_1) commands() get_name()
Current output if I enter Test as name then, giveX3, stats
Enter name here: Test Enter Command: give Enter Command: give Enter Command: give Enter Command: stats Name = Test Inventory: Me Sword Me Sword Me Sword
Desired output if I enter Test as name then, giveX8, stats Also would like to do a new line after every 4 Items have been shown
Enter name here: Test Enter Command: give Enter Command: give Enter Command: give Enter Command: give Enter Command: give Enter Command: give Enter Command: give Enter Command: give Enter Command: stats Name = Test Inventory: Me Sword, Me Sword, Me Sword, Me Sword #loop after 4 items Me Sword, Me Sword, Me Sword, Me Sword
If you have any suggestions I’d really appreciate the help! P.S it does not have to be a for loop but I do not want to have to print every weapon index in order to get them in that output
Advertisement
Answer
You can use slicing and join
:
def stats(): items = [item.item_name for item in Player_1.inventory] print(f"Name = {Player_1.name}") if not items: # if empty list print("Inventory is empty.") return for i in range(0, len(items), 4): if i == 0: print("Inventory: ", end='') else: print(" ", end='') # for non-first lines print(', '.join(items[i:i+4]))
Output:
Enter name here: foo Enter Command: give Enter Command: give Enter Command: give Enter Command: give Enter Command: give Enter Command: stats Name = Foo Inventory: Me Sword, Me Sword, Me Sword, Me Sword Me Sword