Warum werden in diesem Code Klassen verwendet?

Also was für einen Vorteil hat das?:

Der Code ist für ein Tic-Tac-Toe-Spiel

class Board():
    def __init__(self):
        self.state = [0, 0, 0, 0, 0, 0, 0, 0, 0]

    def make_turn(self, cell, player):
        if self.is_valid_turn(cell):
            self.state[cell] = player.symbol
            return True
        return False

    def is_valid_turn(self, cell):
        if self.state[cell] == 0:
            return True
        else:
            return False

    def check_win(self, player):
        s = player.symbol
        if self.state[0] == s and self.state[1] == s and self.state[2] == s:
            return True
        elif self.state[3] == s and self.state[4] == s and self.state[5] == s:
            return True
        elif self.state[6] == s and self.state[7] == s and self.state[8] == s:
            return True

        elif self.state[0] == s and self.state[3] == s and self.state[6] == s:
            return True
        elif self.state[1] == s and self.state[4] == s and self.state[7] == s:
            return True
        elif self.state[2] == s and self.state[5] == s and self.state[8] == s:
            return True

        elif self.state[0] == s and self.state[4] == s and self.state[8] == s:
            return True
        elif self.state[2] == s and self.state[4] == s and self.state[6] == s:
            return True

    def is_full(self):
        for i in self.state:
            if i == 0:
                return False
        return True

    def sign_to_printable(self, sign):
        if sign == 0:
            return " "
        elif sign == 1:
            return "X"
        else:
            return "O"

    def print_board(self):
        print(" " + self.sign_to_printable(self.state[0]) + " | " + self.sign_to_printable(self.state[1]) + " | " + self.sign_to_printable(self.state[2]) + " \n" +
              " " + self.sign_to_printable(self.state[3]) + " | " + self.sign_to_printable(self.state[4]) + " | " + self.sign_to_printable(self.state[5]) + " \n" +
              " " + self.sign_to_printable(self.state[6]) + " | " + self.sign_to_printable(self.state[7]) + " | " + self.sign_to_printable(self.state[8]) + " \n")


class Player:
    def __init__(self, symbol):
        self.symbol = symbol


if __name__ == '__main__':
    player_a = Player(1)
    player_b = Player(-1)
    board = Board()
    active_player = player_a
    while not board.is_full():
        board.print_board()
        try:
            cell = int(input("Where do you want to place your sign? [1-9]"))
        except ValueError:
            continue
        cell = cell - 1
        if cell < 0 or cell > 8:
            print("Please enter a number between 1 and 9")
            continue
        if not board.make_turn(cell, active_player):
            print("Invalid Move")
            continue

        if board.check_win(active_player):
            print("You wonnered! GW.")
            break

        if …
IT, programmieren, Informatik, Programmiersprache, Python, Instanz, Python 3, Objektorientierte Programmierung
Excel | Diabook - "DiaSearch"?

Guten Morgen zusammen.

Ich bin Robin, 24 Jahre alt und habe Diabetes Typ 1.

Seit einiger Zeit habe ich ein Projekt in mein Leben gerufen das mir wirklich sehr am Herzen liegt und das ich mit vollster Leidenschaft betreibe. Dabei handelt es sich um mein Privates:

Diabetes - "Diabolic-Management System." welches ich selbstständig entwickle.

Dazu habe ich bereits schon mehrere Fragen im Bezug zu Excel gehabt weil ich vorher manche Dinge nicht wusste. Und ich habe auch schon einiges hinbekommen. Allerdings möchte ich das alles nochmal "frisch" überarbeiten.

Ich möchte hier auch nichts Verkaufen oder sowas. Ich benötige lediglich weitere Hilfe bei etwas. Mehr nicht.

Und zwar hatte ich viele einzelne Dinge gebaut die ich nun in einem Dokument an einem einzigen Zentralen Ort haben möchte. Und darum geht's:

Nährwertrechner, Insulinrechner, Tagebuch usw. waren bisher alle Eigene Teile. Diese möchte ich nun alle zu einem zusammenführen. Nun möchte ich das alles in einem Dokument Namens "Diabook" aufbauen.

Sooo und vorher kam mir ein wunderbarer und sehr Ausschlaggebender Gedanke: "DiaSearch" die Suchmaschine die wie so eine Art Google sein soll nur im Bezug auf Lebensmittel und der Lebensmitteldatenbank die ich sowieso baue. Diese nutzt man dann Generell im Tagebuch als Dropdown Menü für die Eintragung von Mahlzeiten oder Lebensmitteln die man isst aber das ist ein anderes Thema.

Meine Idee war es "DiaSearch" einzubauen um jederzeit abhängig von Mahlzeiten schauen zu können wie viel ein Apfel oder sowas an Kohlenhydrate hat. Somit muss man nicht ständig im Tagebuch zurückgreifen um dort nachzuschauen sondern kann wie Google einfach allesmögliche Suchen. Geplant ist auch mit Filter.

Ich habe da mal eine extra Skizze für euch gemacht damit ihr euch das etwas Vorstellen könnt. Und meine Skizze verrät auch so ein wenig worauf ich hinaus will:

Ich möchte das man in der Suchleiste alle möglichen Daten eingeben kann. Namen, ID Nummern und wenn Möglich auch Hashtags um alles finden zu können. Die dazugehörigen Nährwerte sollen dann im "Daten-Dashboard" Detailliert Angezeigt werden. Das soll auch Synchron sein - Apfel, ID 01, usw. und dann dort im Dashboard die Nährwert Angaben zu dem Apfel mit allem und nicht irgendwas anderes. Also im Prinzip sollen die Ergebnisse zur Suche übereinstimmen. Egal ob ich Apfel oder #Apfel oder 01 in der Suchleiste eingebe.

Außerdem hätte ich auch gerne Kategorien und Mengen Auswahl dazu. So ein Dropdown wo man dann 1 Stück usw. auswählen kann um die Menge der Kohlenhydrate zu sehen.

Wäre sowas irgendwie machbar und wie? Ich fände das absolut MEGA!! :D

Vielen Dank im Voraus.

Mit besten Grüßen

Robin | TechBrain. :)

Bild zum Beitrag
PC, Computer, Gesundheit, Software, Windows, Microsoft, Office, Microsoft Excel, Programm, IT, programmieren, Diabetes, Formel
Angst zu Versagen beim Reparieren/arbeiten mit Elektronik?

Ich möchte wissen, ob hier jemand eventuell ähnliche Erfahrungen gemacht hat und/oder weiß, wie ich dies Überwinden könnte.

Schon vor längerer Zeit habe ich einen Inthusiasmus für Robotik, Elektrotechnik und Mechatronik entwickelt. Algorythmen und Neuronale Netzwerke und ähnliche Konzepte faszinieren mich unglaublich. Allerdings interessiert mich auch das reparieren von alten Geräten.

Ich habe mir also einen Lötkolben gekauft, ein Multimeter, eben alles was man so braucht. Ich habe ein paar kleine Dinge gelötet, eine alte Maus repariert, nichts großes.

Der Controller meines Bruders hatte einen Widerstand der ersetzt werden musste. Also habe ich mich ran gesetzt, doch beim löten hatte ich dann etliche Probleme und als ich dachte es gelöst zu haben, tauchte es immer wieder auf. Tag für Tag. Plötzlich habe ich alles stehen und liegen gelassen und einfach aufgehört. Elektronik, Robotik, alles in die Richtung habe ich einfach ausgeblendet.

Es hat mich lange gebraucht zu verstehen, wieso ich mich so fühlte. Ich habe Angst zu versagen und es noch schlimmer zu machen. Ich habe Angst für kaputtes Zeug viel Geld auszugeben, aber nicht fähig genug zu sein um etwas damit anzufangen. Ich wollte eigentlich ein eigenes Ferngesteuertes Flugzeug bauen, habe dann allerdings Angst bekommen, da es zu kompliziert aussah. Allerdings auch teuer.

Ich möchte etwas in diesen Bereichen anfangen, doch durch die Schule habe ich nie genug Zeit um meine Ideen auszuarbeiten oder mich an etwas langfristig und kreativ ranzusetzen. Auch habe ich nicht genug Taschengeld um irgendetwas sinnvolles zu machen, da Elektronik eben teuer ist.

Was wäre jetzt der richtige Ansatz um aus diesem Loch zu kommen und tatsächlich mal mit etwas anzufangen? Wie lernt man sich generell in diese Themen rein?

Technik, Elektronik, IT, löten, Elektrotechnik, Reparatur, Mechatronik, Mechatroniker, Neuronale Netze, Technologie, Neuronales Netzwerk, Reperationen
Mit testdisk Partitionen/Einhängepunkte restaurieren?

Das Problem entstand dadurch, dass ich einen USB-Stick erstellen wollte, der das alte BIOS updaten sollte. Und irgendwie habe ich ihn auf der internen Festplatte kreiert. Welch ein Unglück!!!!! Darum besteht diese Festplatte jetzt aus der 34 MB-Partition "CHIEF_ENG" und aus 240 GB "free space". Wie mir das Programm "disks" verrät.

"Size in sectors" entspricht der doppelten Grösse der ehemaligen Partitionen. Also:

  1. Das ist die Partition des fälschlicherweise aus der Festplatte gemachten USB-Stick für das BIOS-Update.
  2. Dies muss die Windowspartition sein. Sie hatte gut 30 GB.
  3. Ich denke, diese ist auch ein Teil von Windows. Jedenfalls dürfte sie von Anfang an bestanden haben. "EFI" bedeutet, es ist die Partition, von welcher der Computer gestartet werden muss?
  4. Das kann nur die Linux-Partition sein. Sie hatte gut 200GB.
  5. Das ist vermutlich so eine Recovery-Partition von Windows.

Soll ich nun einfach Folgendes auswählen?

Oder diese zweite EFI-Partition zu Primary machen??? Oder etwas ganz Anderes???Kann ich den Daten verlieren, wenn ich hier was Falsches einstelle?

Eigentlich dürfte es ja kein Hexenwerk sein. Wenn ich gerade 200 GB auf einer externen Platte frei hätte, würde ich natürlich sofort ein Backup machen! Aber es sollte doch auch so einen recht sicheren und zuverlässigen Weg geben, die Partitionen bzw. Einhängepunkte wie früher zu hinzubekommen. Oder liege ich da denn falsch?

Allerherzlichsten Dank!!!
(Linux Mint 21.1, Lenovo Think Pad T410)

Bild zum Beitrag
PC, Computer, Software, Betriebssystem, Linux, Programm, IT, Programmierer, programmieren, Hilfestellung, USB-Stick, Recovery, reparieren, BIOS, booten, Linux Mint, PC-Problem, thinkpad, Partition, testdisk
Python Referenzen und Objektkopien?

ChatGPT und mein Pythonbuch sagen folgendes:
„In Python werden Objekte durch Referenzen verwaltet, die auf den Speicherbereich zeigen, in dem das Objekt gespeichert ist. Wenn ein Objekt über eine Referenz zugewiesen wird, wird der Speicherplatz für das Objekt reserviert und die Referenz zeigt auf diesen Speicherbereich. Wenn auf denselben Wert bereits von einer anderen Referenz verwiesen wird, zeigt diese Referenz auf dasselbe Objekt/Speicherbereich.“

Aber danach steht in meinem Pythonbuch der Code am Ende dieser Nachricht.
Und über dem Code stand, dass mit diesem y.append(i) eine echte Kopie von x erstellen kann. Aber da ja schon x auf die Liste verweist hätte man nach dem .append() ja zwei Referenzen. Nämlich x und y. Also müsste Python laut der ersten Aussage doch mit beiden Referenzen auf ein und dasselbe Objekt verweisen. Dann wäre es aber keine Kopie mehr, sondern das gleiche Objekt.

Ich hoffe, dass ich mein Problem irgendwie erklären konnte.
LG Code Snake 🙂

import copy

x = [23, "hallo", -7.5]
y = []

for i in x:
    y.append(i)

print("dasselbe Objekt:", x is y)
print("gleicher Inhalt:", x == y)
print()

x = (23, ["Berlin", "Hamburg"], -7.5, 12.67)
y = copy.deepcopy(x)

print("dasselbe Objekt:", x is y)
print("gleicher Inhalt:", x == y)
IT, programmieren, Informatik, Programmiersprache, Python, Referenz, Python 3, Objektorientierte Programmierung
Wie kann ich glfw C++ richtig installieren?

Hallo Leute,

ich programmiere schon eine Weile in C++ aber bisher immer mit Clion weil ich mit Visual Studio einfach nicht zurecht komme. Immer wieder wurde ich von irgendwelchen Fehlermeldungen geplagt und fand wochenlang keine Lösung, bis ich es dann irgendwann aufgab.

Umsteigen wollte ich eigentlich nur, um Third-Party Libraries wie glfw nutzen zu können, aktuell benutze ich nur mingw und kompiliere mit g++.exe ohne irgendwelche drittanbieter-Bibliotheken, weil ich es nie richtig hinbekomme, sie einzubinden.

Selbst wenn ich wie vorgegeben vorging, kam es zu unermütlichen Fehlermeldungen. Deshalb habe ich bis jetzt immer nur auf header onlys zurückgegriffen, merke aber gerade, dass ich ohne glfw nicht weiter komme.

Am liebsten würde ich verstehen, wie ich die Bibliothek richtig einbinde, sodass ich weiterhin mit g++ selbst kompiliere. Ich habe dann schon alle möglichen include Dateien in mingw geworfen und so weiter, aber jedes Mal erfolglos. Als ich das mal in Visual Studio probiert habe, kam es schon beim Startelement zu Problemen weil ich immer irgend einen Fehler mit dem Kompilieren und Ausführen mit Visual habe. Auch Bibliotheken ließen sich nicht ohne Fehlermeldungen installieren.

Ich muss aber jetzt in die gui programmierung einsteigen und habe glfw vorgegeben. Ich muss aber zugeben, dass ich wohl bei der Installation von solchen Bibliotheken ein absoluter Laie bin..

Kann mir jemand helfen, das zum Laufen zu bringen?

Stellt mir doch bitte gerne gezielte Rückfragen, was ihr genau noch wissen wollt, um meine Probleme zu verstehen.

Vielen Dank im Voraus!

Lukas Zander

IT, Cplusplus, CPP, Informatik, Programmiersprache
Inwiefern macht das Upgrade zur 40er Serie zurzeit Sinn?

Kurze Frage zu den neuen 40er Karten von NVIDIA, ich spiel aktuell ziemlich viele Spiele unter anderem auch viele die viel Leistung erfordern und so langsam kommt mein Rechner an seine Grenzen. Es ist ein selbst erstellter Rechner mit einer RTX3060ti und so allmählich fühl ich mich eingeschränkt was die Leistung betrifft und würde gerne was Neues ranholen. Zwischen der RTX4070 und der RTX4070ti liegen glaube ich über 25% leistungsunterschied und 200€ preisunterschied. 899€ für eine RTX4070ti finde ich persönlich viel zu teuer, das ist ja mehr als ich vor einem Jahr für die RTX3070ti zahlen müsste, als die Preise so exorbitant hoch gewesen sind wegen der extrem hohen Nachfrage.

Ich hab meine 3060ti zum Beispiel zu der Zeit für 499€ bekommen und das hat sich schon viel angefühlt - zumindest für eine Grafikkarte der unteren Schicht. Aber damals hatte ich ja noch keine Grafikkarte, jetzt könnte ich meine noch zu einen relativ anständigen Preis verkaufen und den hohen Preis der 4070 oder 4070ti etwas kompensieren.

Und jetzt zu meiner eigentlich Frage: Ich würde meine Grafikkarte so oder so verkaufen, wenn ich mir eine Neue anschaffen würde, da ich keine weitere Nutzung für sie sehe, aber wie sehr lohnt sich ein Upgrade heute zu der nächsten Generation? Ich spreche jetzt nur vom preislichen Aspekt, ich bin mir sicher die Preise würden in 1 Jahr oder mehr deutlich zurückgehen, aber in einem Jahr hätte ich meine aktuelle Grafikkarte auch 1 Jahr mehr genutzt und würde dementsprechend weniger für sie bekommen. Jetzt ist die Frage, wie weit würde der Preis meiner Grafikkarte innerhalb dieses Jahres zurückgehen und wie weit würden die 40er Serien vom Preis sich zurückentwickeln, wenn sie es überhaupt tun werden? Wenn ich in einem Jahr 100€ weniger für meine Grafikkarte bekommen würde und 150€ weniger für die 40er Grafikkarten zahlen müsste, würde es mich eher weniger stören jetzt eine zu kaufen, aber wenn die Karten in einem Jahr ca. 200-300€ zurückgehen auf 500-600€ für die 4070ti oder 300-400€ für die 4070, dann würde ich natürlich noch warten.

PC, GPU, IT, Gaming, AMD, FPS, Gaming PC, Informatik, Nvidia, Nvidia GeForce, zocken, AMD Radeon, Nvidia GeForce RTX, RTX 4000

Meistgelesene Beiträge zum Thema IT