Przypisanie wartości do zmiennej. Prośba o pomoc

0

Cześć,
Próbuję zrobić następujące zadanie:

"Napisz program Kreator postaci do gry z podziałem na role. Gracz powinien
otrzymać pulę 30 punktów, którą może spożytkować na cztery atrybuty: siła,
zdrowie, mądrość i zręczność. Gracz powinien mieć możliwość przeznaczania
punktów z puli na dowolny atrybut, jak również możliwość odbierania
punktów przypisanych do atrybutu i przekazywania ich z powrotem do puli."

Problem w tym, że nie wiem jak zmienną "x" powiązać ze zmienną "staty" i później to wyśwetlić. Chciałbym za pomocą funkcji print wyświetlić każdy poszczególny atrybut i zsumowaną liczbę statystyk. Poniżej moja wersja kodu:

print("Witamy w programie kreator postaci")
print("Masz do wykorzystania 30 punktow stat, ktore mozesz rozdysponowac dowolnie")
max_staty = int(30)
staty = int(0)
liczba_stat=[]
suma = int()
atrybuty = ["sila","zrecznosc","zycie","energia"]
while suma < 31:
    x = input("\n\nKtóry atrybut chcesz wzmocnic? sila/zrecznosc/zycie/energia?: ")
    staty = int(input("Ile punktów chcesz dodać?: "))
    if x == "zycie":
        liczba_stat.append(staty)
        print("dodałeś", staty, "punktów do atrybutu", x)
        suma = sum(liczba_stat)
        if suma >30:
            print("Rozdałeś już",suma,"z 30 możliwych punktów")
            x = input("\n\nMasz za dużo punktów. Z którego atrybutu odejmiesz statę?: ")
            staty = int(input("ile punktów chcesz odjąć? :"))
            suma = sum(liczba_stat) - staty
        print("Rozdałeś już",suma,"z 30 możliwych punktów")
    elif x == "zrecznosc":
        liczba_stat.append(staty)
        print("dodałeś", staty, "punktów do atrybutu", x)
        suma = sum(liczba_stat)
        if suma >30:
            print("Rozdałeś już",suma,"z 30 możliwych punktów")
            x = input("\n\nMasz za dużo punktów. Z którego atrybutu odejmiesz statę?: ")
            staty = int(input("ile punktów chcesz odjąć? :"))
        print("Rozdałeś już",suma,"z 30 możliwych punktów")
    elif x == "sila":
        liczba_stat.append(staty)
        print("dodałeś", staty, "punktów do atrybutu", x)
        suma = sum(liczba_stat)
        if suma >30:
            print("Rozdałeś już",suma,"z 30 możliwych punktów")
            x = input("\n\nMasz za dużo punktów. Z którego atrybutu odejmiesz statę?: ")
            staty = int(input("ile punktów chcesz odjąć? :"))
            suma = sum(liczba_stat) - staty
        print("Rozdałeś już",suma,"z 30 możliwych punktów")
    elif x == "energia":
        liczba_stat.append(staty)
        print("dodałeś", staty, "punktów do atrybutu", x)
        suma = sum(liczba_stat)
        if suma >30:
            print("Rozdałeś już",suma,"z 30 możliwych punktów")
            x = input("\n\nMasz za dużo punktów. Z którego atrybutu odejmiesz statę?: ")
            staty = int(input("ile punktów chcesz odjąć? :"))
            suma = sum(liczba_stat) - staty
        print("Rozdałeś już",suma,"z 30 możliwych punktów")
    else:
        print("\nNie rozumiem polecenia") 
        ~~~
0
Ignacy napisał(a):

Problem w tym, że nie wiem jak zmienną "x" powiązać ze zmienną "staty" i później to wyśwetlić.

A ja nie wiem, co chciałeś powiedzieć.

BTW staty i inne słówka ze slangu młodzieżowego IDEALNIE sie nadają do rozmywania rzeczywistości. Wiem, że jest się cool i trendi, ale merytorycznych ustaleń na tym nie zbudujesz

0
ZrobieDobrze napisał(a):
Ignacy napisał(a):

Problem w tym, że nie wiem jak zmienną "x" powiązać ze zmienną "staty" i później to wyśwetlić.

A ja nie wiem, co chciałeś powiedzieć.

BTW staty i inne słówka ze slangu młodzieżowego IDEALNIE sie nadają do rozmywania rzeczywistości. Wiem, że jest się cool i trendi, ale merytorycznych ustaleń na tym nie zbudujesz

Bardziej używam tych określeń dlatego, że dopiero się uczę i łatwiej jest mi wtedy odnaleźć się w kodzie. Nie jest to przecież rozmowa o pracę, prawda? :)
Jeśli nie wyraziłem się jasno chciałbym otrzymać następujący efekt:
x - życie
staty - 15
wyświetlić wynik: zycie: 15pkt
Jeśli przy drugiej próbie do zmiennej "zycie" przypisze kolejne 5 pkt to chciałbym otrzymać efekt:
zycie: 20pkt

0

@Ignacy:

napisałeś niebanalny kod, w tym również z podstawianiem zmiennych i drukowaniem, ale jednak tego nie umiesz?
Czy kupiłeś / zarypałeś?

Edit: a objaśnienia NADAL nie rozumiem na tyle, aby rozebrać je na atomy.

43

Wystarczy wrzucić te staty w dziennik i unikniesz tej niepotrzebnej ściany kodu.

Np coś takiego. Znacznie latwiej będzie Ci napisać resztę logiki.

class Stats(UserDict):
    def __init__(self):
        super().__init__()
        self.data.update({
            "sila": 0,
            "zrecznosc": 0,
            "energia": 0
        })

    def __setitem__(self, key, value):
        if value < 0:
            raise ValueError("Ujemna wartosc")
        super().__setitem__(key, value)

    def __getitem__(self, key):
        item = self.data.get(key)
        if item == None:
            raise ValueError("Nie ma takiego atrybutu")
        return item

1 użytkowników online, w tym zalogowanych: 0, gości: 1