• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wykonywanie innej funkcji niż jest zadeklarowana

VPS Starter Arubacloud
0 głosów
114 wizyt
pytanie zadane 21 września 2019 w Python przez Borys Użytkownik (830 p.)

Witam mam funkcję która oblicza ilość budowli i dodaje pieniądze oraz surowce zależnie od ilości budowli. Niestety po skończeniu liczenia wykonuje się inna funkcja niż zadeklarowana.

Oto kilka funkcji

 

Funkcja która liczy budowle:

def odbierz(self,login):
        now = datetime.datetime.now()
        teraz = now.strftime("%D")

        f = open(login + "/wyplata.cfg","r")
        ostatniaWyplata = f.readline()
        f.close()

        if teraz == ostatniaWyplata:
            clear()
            print("Już odebrałeś wypłatę :(")
            CS.glowna(login)

        else:
            now = datetime.datetime.now()

            #Miejsca pracy
            f = open(login + "/praca.cfg","r")
            praca = f.readline()
            f.close()

            f = open(login + "/kopalnie.cfg","r")
            kopalnie = f.readline()
            kopalnie = int(kopalnie)
            f.close()

            f = open(login + "/huty.cfg","r")
            huty = f.readline()
            huty = int(huty)
            f.close()

            f = open(login + "/tartaki.cfg","r")
            tartaki = f.readline()
            tartaki = int(tartaki)
            f.close()

            f = open(login + "wyplata.cfg","w+")
            f.write(now.strftime("%D"))
            f.close()

            #Otwieranie money i surowcow

            f = open(login + "/money.cfg","r")
            money = f.readline()
            money = int(money)
            f.close()

            f = open(login + "/surowce.cfg","r")
            surowce = f.readline()
            surowce = int(surowce)
            f.close()

            #Liczenie_Wyplaty

            #Tartaki
            while tartaki > 0:
                money += 150
                surowce += 200
                tartaki -= 1
            
            #Huty
            while huty > 0:
                money += 200
                surowce += 250
                huty -= 1

            #Kopalnie
            while kopalnie > 0:
                money += 300
                surowce += 500
                kopalnie -= 1

        CS.glowna(login)

 

Funkcja która się wykonuje:

def setup(self,login):

        try:
            f = open(login + "/imie.cfg","r")
            CS.glowna(login)

        except FileNotFoundError:
            clear()

            print("\nJak nazwiesz burmistrza?")
            imie = input("--> ")
            print("\nJak nazwiesz swoje miasto?")
            miasto = input("--> ")

            f = open(login + "/imie.cfg","w+")
            f.write(imie)
            f.close()

            f = open(login + "/miasto.cfg","w+")
            f.write(miasto)
            f.close()

            f = open(login + "/people.cfg","w+")
            f.write("0")
            f.close()

            f = open(login + "/money.cfg","w+")
            f.write("1000")
            f.close()
            
            f = open(login + "/praca.cfg","w+")
            f.write("0")
            f.close()

            f = open(login + "/surowce.cfg","w+")
            f.write("1000")
            f.close()

            f = open(login + "/produkcja.cfg","w+")
            f.write("False")
            f.close()

            f = open(login + "/huty.cfg","w+")
            f.write("0")
            f.close()

            f = open(login + "/kopalnie.cfg","w+")
            f.write("0")
            f.close()

            f = open(login + "/tartaki.cfg","w+")
            f.write("0")
            f.close()

            f = open(login + "/wyplata.cfg","w+")
            f.write("")
            f.close()

            CS.glowna(login)

 

Funkcja która powinna się wykonywać:


def glowna(self,login):
        clear()

        f = open(login + "/imie.cfg","r")
        imie = f.readline()
        f.close()

        f = open(login + "/miasto.cfg","r")
        miasto = f.readline()
        f.close()

        f = open(login + "/money.cfg","r")
        hajs = f.readline()
        f.close()

        f = open(login + "/people.cfg","r")
        mieszkancy = f.readline()
        f.close()

        f = open(login + "/praca.cfg","r")
        praca = f.readline()
        f.close()

        f = open(login + "/surowce.cfg","r")
        surowce = f.readline()
        f.close()

        f = open(login + "/produkcja.cfg","r")
        produkcja = f.readline()
        f.close()

        f = open(login + "/kopalnie.cfg","r")
        kopalnie = f.readline()
        f.close()

        f = open(login + "/huty.cfg","r")
        huty = f.readline()
        f.close()

        f = open(login + "/tartaki.cfg","r")
        tartaki = f.readline()
        f.close()


        print("\n------------------------------------------------------------------------------------------")
        print("| Miasto: " + miasto + " | Burmistrz: " + imie + " | Budżet " + hajs + "$ |")
        print("| Mieszkańcy: " + mieszkancy + " | Pracownicy: " + praca + " | Surowce: " + surowce + " |")
        print("------------------------------------------------------------------------------------------")
        print("\n\n Wpisz 'odbierz' aby odebrać surowce i pieniądze \n\n")
        print("------------------------------------------------------------------------------------------")
        print("Wpisz 'dom' aby kupić dom za 200$")
        print("Wpisz 'praca' aby kupić miejsce pracy za 300$")
        print("Wpisz 'surowce' aby kupić surowce za 500$")
        print("------------------------------------------------------------------------------------------")

        if produkcja == "False":
            print("Wpisz 'produkcja' aby zacząć produkować swoje materiały")
            print("------------------------------------------------------------------------------------------")

        if produkcja == "True":
            print("")
            print("")
            print("------------------------------------------------------------------------------------------")
            print("Wpisz 'huta' aby kupić hutę za 5000$ (Przychody: Pieniądze - 300$ i Surowce - 500)")
            print("Wpisz 'kopalnia' aby kupić kopalnie za 3000$ (Przychody: Pieniądze - 200$ i Surowce - 250)")
            print("Wpisz 'tartak' aby kupić tartak za 2000$ (Przychody: Pieniądze - 150$ i Surowce - 200)")
            print("--------------------------------------------------------------")
            print("Twoje kopalnie: " + kopalnie)
            print("Twoje huty: " + huty)
            print("Twoje tartaki: " + tartaki)
            print("------------------------------------------------------------------------------------------")

        wybor = input("--> ")

        #--------------------------------------------------#

        if wybor == "dom":

            CS.dom(login)

        elif wybor == "praca":

            CS.praca(login)

        elif wybor == "surowce":

            CS.surowce(login)

        elif wybor == "produkcja":

            CS.setProdukcja(login,mieszkancy,surowce,hajs)

        #--------------------------------------------------#

        elif wybor == "kopalnia":
            PD.kopalnia(login)

        elif wybor == "huta":
            PD.huta(login)

        elif wybor == "tartak":
            PD.tartak(login)

        #--------------------- Komendy --------------------#
        elif wybor == "money":
            f = open(login + "/money.cfg","r")
            money = f.readline()
            f.close()

            money = int(money) + 10000

            f = open(login + "/money.cfg","w+")
            f.write(str(money))
            f.close()

            CS.glowna(login)

        elif wybor == "source":
            f = open(login + "/surowce.cfg","r")
            source = f.readline()
            f.close()

            source = int(source) + 10000

            f = open(login + "/surowce.cfg","w+")
            f.write(str(source))
            f.close()

            CS.glowna(login)

        elif wybor == "people":
            f = open(login + "/people.cfg","r")
            people = f.readline()
            f.close()

            people = int(people) + 10000

            f = open(login + "/people.cfg","w+")
            f.write(str(people))
            f.close()

            CS.glowna(login)

        #----------------------------------------------#

        elif wybor == "odbierz":
            CS.odbierz(login)

        else:
            clear()
            print("Nie ma takiej opcji :(")
            time.sleep(1)
            CS.glowna(login)

 

Dlaczego tak się dzieje? I co to powoduje? Jeżeli macie pomysł jakby ulepszyć funkcję liczenia budowli?  Z góry dziękuję!

komentarz 21 września 2019 przez RafalS VIP (122,820 p.)

Pokaż całe istotne pliki. Patrząc na wycięte metody z klasy nic nie wymyślę. Najlepiej wrzuć całość na jakiegoś githuba, albo spakuj do zipa i załącz jeśli bardzo Ci się nie chce.

Jeżeli macie pomysł jakby ulepszyć funkcję liczenia budowli?

Heh. Pętla zamiast mnożenia. Ctrl+c ctrl+v zamiast funkcji. Osobny plik na każdą persystentą zmienną. Funkcja na 150 linijek. Jest co poprawiać :D

komentarz 21 września 2019 przez Borys Użytkownik (830 p.)

No jest ;) Dopiero się uczę. Dzięki za radę. Github: https://github.com/bgnacinski.

I City-Simulator.

komentarz 22 września 2019 przez RafalS VIP (122,820 p.)
Podaj dokładną sytuacje, w której wywołuje Ci się zła funkcja. Co wpisałeś w konsoli?
komentarz 22 września 2019 przez Borys Użytkownik (830 p.)
Konsoli? W sensie tym okienku? No to wpisałem "odbierz".
komentarz 22 września 2019 przez RafalS VIP (122,820 p.)
Nie możliwe, żeby wykonała Ci się funkcja setup po wpisaniu odbierz.
komentarz 22 września 2019 przez Borys Użytkownik (830 p.)

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+1 głos
1 odpowiedź 391 wizyt
0 głosów
3 odpowiedzi 156 wizyt
+1 głos
2 odpowiedzi 160 wizyt
pytanie zadane 11 listopada 2023 w Python przez mark162 Początkujący (410 p.)

92,455 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...