@chris27: Überhaupt nicht lustig. Eher ziemlich grausam.
Wenn man anfängt Variablennamen durch zu nummerieren will man in der Regel eine Liste verwenden. Und bei den ganzen Namen die von den Daten abhängen magst Du vielleicht mal über Dictionaries nachdenken. Dann werden aus den *vielen* Zeilen die alle fast das gleiche machen, schön kurze schleifen.
Und statt den ganzen "Spass" zweimal zu schreiben, solltest Du eine Funktion schreiben, die so ein `flop` als Argument bekommt und das Endergebis zurück gibt.
Getestet hast Du's anscheinend auch wieder nicht, denn Du erzeugst Karten im Fomat (Farbe, Wert) und beim Zählen suchst Du nach (Wert, Farbe). Da kommt also immer 0 bei heraus.
"Magische" Zahlen sind keine gute Idee -- wie kommen die Zahlen bei den vielen ``if``-Abfragen bei `*_end` zustande? Was bedeuten die? Warum muss man die alle an einen Namen binden statt sie dort gleich aufzusummieren?
Pokerspiel und Zahlenraten
@BlackJack
Naja wie gesagt ich kann das alles ja noch nichts so wirklich von dem du da schreibst. Habs mit den Mitteln probiert die ich schon umsetzen kann, weiss auch das mein script alles andere als elegant aussieht. Aber davon ab, ich erzeuge doch erst den Wert und dann die Farbe, also umgekehrt wie du es mir gestern vorgegeben hast. Und gestestet hab ich auch. funktioniert doch.
Zuerst werden die Karten ausgegeben, und zum Schluss die beiden Werte Own und enemy, der höhere hat in dem Fall gewonnen(abgesehn von Strassen und Flushs). Was sind magische Zahlen?
Naja wie gesagt ich kann das alles ja noch nichts so wirklich von dem du da schreibst. Habs mit den Mitteln probiert die ich schon umsetzen kann, weiss auch das mein script alles andere als elegant aussieht. Aber davon ab, ich erzeuge doch erst den Wert und dann die Farbe, also umgekehrt wie du es mir gestern vorgegeben hast. Und gestestet hab ich auch. funktioniert doch.
Zuerst werden die Karten ausgegeben, und zum Schluss die beiden Werte Own und enemy, der höhere hat in dem Fall gewonnen(abgesehn von Strassen und Flushs). Was sind magische Zahlen?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Magic numbers sind Zahlen die in Quellcodes stehen wo nicht klar sind wo sie herkommen und was passiert wenn man sie ändert.chris27 hat geschrieben:Was sind magische Zahlen?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ah ok, die Zahlen meinst du, die hab ich mir selbst zusammen gerechnet um den einzelnen Karten, Paaren, Drillingen Werte zu geben. Die haben schon ihren Sinn.
Das Script klappt jedenfalls, werde aber versuchen die Verbesserungsvorschläge umzusetzen.
Das Script klappt jedenfalls, werde aber versuchen die Verbesserungsvorschläge umzusetzen.
Selbst unter der Voraussetzung, dass du Recht hast (die Zeit zum Testen möchte ich mir bei dem Code nicht nehmen): Der Verweis auf die Lauffähigkeit eines Programms als Reaktion auf Kritik am Code ist meistens ein schlechtes Zeichen. Hier auch.chris27 hat geschrieben:Das Script klappt jedenfalls, werde aber versuchen die Verbesserungsvorschläge umzusetzen.
Nimm dir doch mehr Zeit für dein Zahlenraten:
- Rückmeldung, ob die Zahl größer oder kleiner war
- Zeitmessung
- Highscoreliste
- usw.
Ja, vielleicht bekommst du dein Pokerspiel irgendwie hin und fühlst dich durch die (angebliche oder tatsächliche) Lauffähigkeit des Programms auch bestätigt. Trotzdem kann der Code eine Katastrophe sein und daran sollte man (= du) arbeiten: Anständig programmieren zu können (und ich denke mal, dass es dir darum geht) ist nämlich mehr als "Hauptsache es läuft".
Ja klar, werd auch dran arbeiten. Wenn ich gewusst hätte das der hier so auseinandergenommen wird, hätt ich ihn auch gar net reingesetzt. Werd mich aber um besserung was meinen Code angeht bemühen. Und gute Idee, mein Zahlen raten um diese Komponenten zu erweitern, werd ich tun.
mfg
mfg
Zuletzt geändert von chris27 am Dienstag 16. Dezember 2008, 22:06, insgesamt 1-mal geändert.
So hab mein Zahlenspiel nun noch ein wenig ausgebaut.
Habe auch versucht noch eine Art Rangliste zu machen, aber bekomme es nicht hin, das die eingegebenen Namen auch gespeichert werden.
Ihr könnt ja mal sagen wie ihr das Spiel bis jetzt findet.
Code: Alles auswählen
#-------------------------------------------------------------------------------------------------------------------------------
#-Autor: Chris
#-Datum: 16.12.08
#-Funktion: Zahlen Rate Spiel
#-------------------------------------------------------------------------------------------------------------------------------
import random
import time
print "Zahlenraten"
print "Versuchen Sie die vom Programm zufaellig ausgesuchte Zahl zu erraten"
print "------------------------------------------------------------------------------------"
secret = random.randint(1, 100)
nachname = raw_input("Gib deinen Vornamen ein:")
vorname = raw_input("Nun gib bitte deinen Nachnamen ein:")
name = vorname + " " + nachname
vortrag = "Hallo" +" " + vorname + " " + nachname
nachtrag = "Danke" + " " + "fuers " + " " + "spielen" + " " + name
#----------------------------------------------------------------------------------------------------------------------------------
print vortrag
startzeit = time.time() #Zeit startet
while True:
try:
guess = int(raw_input("Bitte geben Sie eine Zahl ein: "))
except ValueError, exception:
print exception.message
continue
zeit = int(time.time() - startzeit) #Zeitzaehler
if guess < secret:
print "zu tief"
elif guess > secret:
print "zu hoch"
else:
print "Richtig, Sie haben das Spiel gewonnen"
break
print u"Fuer die Aufgabe haben sie ", zeit, "Sekunden benoetigt"
print nachtrag
Ihr könnt ja mal sagen wie ihr das Spiel bis jetzt findet.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Am besten keinen Code auf Modulebene! (Hatten wir das hier schon mal? Wenn nicht, einfach mal ins wiki gucken unter dem Stichwort import)
Es gibt print für mehrere Zeilen:
Man kann in print Parameter einbauen:
Ist ja wohl eher mies
Es gibt das =Python Flag bei den code-Blöcken hier im Board. Darum sind unsere Code-Blöcke auch so hübsch gehighlighted
Lange montone Zeichketten kann man erzeugen:
Dann ein paar Vorschläge:
- Versuche ein "Spiel" so in eine Funktion auszulagern, dass man vor und nach einem Spiel in einer Art Menü landet. Dort kann man dann ggf. noch ein Spiel auswählen oder das ganze beenden
- wie wärs mit einer KI? Also der Compu rät und versucht nach einem schlauen (oder zunächst auch dummen) Konzept die Zahl zu erraten?
- wie wäre es dann mit mehreren Spielern, die parallel die selbe Zahl raten?
So, das wäre wohl genug Futter fürs nächste
Und Arbeite noch mal das Tutorial durch. Du willst viel mehr mit Funktionen machen, als Du ahnst!
Auch Listen oder Dictionarys könnten bei meinen Ideen eine Rolle spielen.
Es gibt print für mehrere Zeilen:
Code: Alles auswählen
print "hallo
welt
das ist ein mehrzeiliger Text
"""
Code: Alles auswählen
print "Hallo %s %s, schön, dass Du hier spielen willst" % (vorname, nachname)
Code: Alles auswählen
nachtrag = "Danke" + " " + "fuers " + " " + "spielen" + " " + name
Es gibt das =Python Flag bei den code-Blöcken hier im Board. Darum sind unsere Code-Blöcke auch so hübsch gehighlighted
Lange montone Zeichketten kann man erzeugen:
Code: Alles auswählen
print "-" * 80
- Versuche ein "Spiel" so in eine Funktion auszulagern, dass man vor und nach einem Spiel in einer Art Menü landet. Dort kann man dann ggf. noch ein Spiel auswählen oder das ganze beenden
- wie wärs mit einer KI? Also der Compu rät und versucht nach einem schlauen (oder zunächst auch dummen) Konzept die Zahl zu erraten?
- wie wäre es dann mit mehreren Spielern, die parallel die selbe Zahl raten?
So, das wäre wohl genug Futter fürs nächste
Und Arbeite noch mal das Tutorial durch. Du willst viel mehr mit Funktionen machen, als Du ahnst!
Auch Listen oder Dictionarys könnten bei meinen Ideen eine Rolle spielen.
Im Moments schauts so aus:
[/code]
Zahlen von 1 - 10000 findet er in Sekunden. Aber bei Zahlen von 1 - Millionen, wird es fast zu einer endlos - Schleife. Wie kann ich machen das er die bereits geratenen Zahlen nicht wieder benutzt?
Und wie geht das mit Python Flag?
Code: Alles auswählen
[code=]import random
import time
secret =random.randint(1,1000000)
print "Die gesuchte Zahl ist: ", secret
print "_" * 22
print
guess = 0
i = 1
startzeit = time.time() #Zeit startet
print "Das Programm versucht nun die Zahl zu erraten"
print "-" * 30
while guess != secret:
zeit = int(time.time() - startzeit) #Zeitzaehler
guess = random.randint(1,1000000)
print "Versuch: ", i, "\t-\t", guess
i += 1
print "Das Programm hat ", i, " Versuche gebraucht, in", zeit, " Sekunden"
Zahlen von 1 - 10000 findet er in Sekunden. Aber bei Zahlen von 1 - Millionen, wird es fast zu einer endlos - Schleife. Wie kann ich machen das er die bereits geratenen Zahlen nicht wieder benutzt?
Und wie geht das mit Python Flag?
Zuletzt geändert von chris27 am Dienstag 16. Dezember 2008, 23:19, insgesamt 1-mal geändert.
Dazu müsstest du die Werte einfach irgendwo abspeichern. Zum Beispiel in einer Liste oder einem Set oder weiß ich, was am performantesten ist.chris27 hat geschrieben:Wie kann ich machen das er die bereits geratenen Zahlen nicht wieder benutzt?
Dann rätst du einfach so lange eine neue Zahl, bis du eine hast, die noch nicht in der Liste gespeichert ist. (in-Operator dürfte da helfen)
Wenn man einen Beitrag schreibt, gibt es doch oben die Buttons. Drücke da einfach auf den Button mit der Aufschrift "Python".chris27 hat geschrieben:Und wie geht das mit Python Flag?
Dazu musst du die schon einmal geratenen Zahlen z.B. in einer Liste oder (besser) in einer Menge (set) speichern.chris27 hat geschrieben:Zahlen von 1 - 10000 findet er in Sekunden. Aber bei Zahlen von 1 - Millionen, wird es fast zu einer endlos - Schleife. Wie kann ich machen das er die bereits geratenen Zahlen nicht wieder benutzt?
ABER: Das, was du da machst, hat mit KI nun wirklich nichts zu tun!
Denk mal darüber nach, wie du selbst systematisch eine dir unbekannte Zahl suchen würdest, wenn der Computer dir jedesmal immer nur sagt, ob dein Tipp zu groß oder zu klein ist. Und dann bringst du das dem Computer bei ...
Danke für die Tipps. Man bin ich doof
werd das noch hinkriegen:)
werd das noch hinkriegen:)
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Wieso beachtest Du Hinweise so wenig? So wirst Du sicherlich eher weniger Tipps denn mehr bekommen
Naja, ein Hinweis noch: Wieso lässt Du die "KI" nur dumm raten? Gib ihr doch auch die Hinweise mit größer tiefer usw. Dann kann man den Ratebereich doch schnell einschränken.
Anstatt blind zu tippen könntest Du auch den Rateraum immer halbieren (Nennt sich iirc Intervallschachtelung oder auch binäre Suche).
Bsp:
Gesuchte Zahl ist 27
Rechner rät im Bereich 1 - 100
1.) 100/2 = 50, Rechner tippt 50
-> Zahl ist kleiner
2.) 50 / 2 = 25, Rechner tippt 25
-> Zahl ist größer
3.) 50-(25/2) = 50-13 = 37, Tipp 37
-> Zahl ist kleiner
4.) ...
Man muss sich dabei imho nur die aktuell obere Rategrenze und die untere merken. So sollte man auch bei großen Suchräumen schnell zum Erfolg kommen ...
Naja, ein Hinweis noch: Wieso lässt Du die "KI" nur dumm raten? Gib ihr doch auch die Hinweise mit größer tiefer usw. Dann kann man den Ratebereich doch schnell einschränken.
Anstatt blind zu tippen könntest Du auch den Rateraum immer halbieren (Nennt sich iirc Intervallschachtelung oder auch binäre Suche).
Bsp:
Gesuchte Zahl ist 27
Rechner rät im Bereich 1 - 100
1.) 100/2 = 50, Rechner tippt 50
-> Zahl ist kleiner
2.) 50 / 2 = 25, Rechner tippt 25
-> Zahl ist größer
3.) 50-(25/2) = 50-13 = 37, Tipp 37
-> Zahl ist kleiner
4.) ...
Man muss sich dabei imho nur die aktuell obere Rategrenze und die untere merken. So sollte man auch bei großen Suchräumen schnell zum Erfolg kommen ...
Also ehrlich gesagt versuche ich alle Hinweise umzusetzen, soweit es mir möglich ist. Davon ab hab ich doch alle deine letzten Hinweise befolgt.
hab jetzt noch kleiner, grösser in mein script eingebaut, trotzdem ist mein Prg noch verhältnismässig dumm.
Nicht desto trozt hat es eine zahl zwischen 1 und 10000000000000 in ein paar sekunden berechnet. Hab die print Anweisung nach jedem Versuch weggelassen um es schneller zu machen.
Die gesuchte Zahl ist: 6511526382945
______________________
Das Programm versucht nun die Zahl zu erraten
Bitte um einen Augenblick Geduld
-------------------------------------------------------
Das Programm hat 7128583 Versuche gebraucht, in 34 Sekunden
Werde das Script erst wieder reinstellen wenns ausgerift ist, bevor ich wieder geschimpft bekomme
hab jetzt noch kleiner, grösser in mein script eingebaut, trotzdem ist mein Prg noch verhältnismässig dumm.
Nicht desto trozt hat es eine zahl zwischen 1 und 10000000000000 in ein paar sekunden berechnet. Hab die print Anweisung nach jedem Versuch weggelassen um es schneller zu machen.
Die gesuchte Zahl ist: 6511526382945
______________________
Das Programm versucht nun die Zahl zu erraten
Bitte um einen Augenblick Geduld
-------------------------------------------------------
Das Programm hat 7128583 Versuche gebraucht, in 34 Sekunden
Werde das Script erst wieder reinstellen wenns ausgerift ist, bevor ich wieder geschimpft bekomme
So hab den K.I. nicht ganz so schlau gemacht, wie Hyperion empfohlen hatte, weil ichs irgendwie nicht hinbekam, aber so klappts jetzt auch ganz gut, werde mal posten wie es inzwischen aussieht. Habe versucht alle Hinweise von euch umzusetzen.
werde die K.I. noch mal bearbeiten.
@Hyperion
Achja was meinst du mit Code auf modulebene, hab auch unter wiki gesucht, versteh nicht was das eigentlich ist.
Ich programmiere übrigens jetzt erst seit 3 Wochen, hab vorher nie etwas in der Richtung gemacht. Ist das Script dafür ok, oder sollte das schon wesentlich besser aussehn?
Code: Alles auswählen
import random
import time
def zahlenraten1():
secret = random.randint(1,1000)
print
print "Die gesuchte Zahl ist: ", secret
print "_" * 35
print
guess1 = random.randint(1,1000)
guess2 = random.randint(1,1000)
guess3 = random.randint(1,1000)
guess4 = random.randint(1,1000)
i = 1
startzeit = time.time() #Zeit startet
print """Das Programm versucht nun die Zahl zu erraten
Bitte um einen Augenblick Geduld"""
print "-" * 55
while guess1 != secret and guess2 != secret and guess3 != secret and guess4 != secret:
zeit = int(time.time() - startzeit) #Zeitzaehler
#-K.I.1-----------------------------------------------------------------------
if guess1 > secret:
guess1 = guess1 - 1
if guess1 < secret:
guess1 = guess1 + 1
#-K.I.2-----------------------------------------------------------------------
if guess2 > secret:
guess2 = guess2 -1
if guess2 < secret:
guess2 = guess2 +1
#-K.I.3-----------------------------------------------------------------------
if guess3 > secret:
guess3 = guess3 -1
if guess3 < secret:
guess3 = guess3 +1
#-K.I.4-----------------------------------------------------------------------
if guess4 > secret:
guess4 = guess3 -1
if guess4 < secret:
guess4 = guess3 +1
#-------------------------------------------------------------------------------
print "Versuch ", i, ":", "guess1\t-\t", guess1
print "Versuch ", i, ":", "guess2\t-\t", guess2
print "Versuch ", i, ":", "guess3\t-\t", guess3
print "Versuch ", i, ":", "guess4\t-\t", guess4
print "-" *30
i += 1
if guess1 == secret:
print "K.I.-1 hat die Zahl zuerst erraten"
if guess2 == secret:
print "K.I.-2 hat die Zahl zuerst erraten"
if guess3 == secret:
print "K.I.-3 hat die Zahl zuerst erraten"
if guess4 == secret:
print "K.I.-4 hat die Zahl zuerst erraten"
print """Das Programm hat ", i, " Versuche gebraucht, in", zeit, Sekunden.
Die gesuchte Zahl war , secret"""
#-------------------------------------------------------------------------------
def zahlenraten2():
print "Zahlenraten!"
print "_"*10
print
print "Versuchen Sie die vom Programm zufaellig ausgesuchte Zahl zu erraten"
print "-"*80
secret = random.randint(1, 100)
nachname = raw_input("Gib deinen Vornamen ein:")
vorname = raw_input("Nun gib bitte deinen Nachnamen ein:")
name = vorname + " " + nachname
print "Hallo %s %s, schoen, dass Du hier spielen willst" % (vorname, nachname)
startzeit = time.time() #Zeit startet
while True:
try:
guess = int(raw_input("Bitte geben Sie eine Zahl ein: "))
except ValueError, exception:
print exception.message
continue
zeit = int(time.time() - startzeit) #Zeitzaehler
if guess < secret:
print "zu tief"
elif guess > secret:
print "zu hoch"
else:
print "Richtig, Sie haben das Spiel gewonnen"
break
print u"Fuer die Aufgabe haben sie ", zeit, "Sekunden benoetigt"
print "Danke fuers spielen %s %s" % (vorname, nachname)
print """Willkommen im Menue
Wenn sie sehen wollen wie der Computer eine Zahl erraet druecken Sie bitte die 1
Wenn Sie Zahlenraten spielen wollen druecken Sie bitte die 2 """
eingabe = int(raw_input("Geben sie eine Zahl ein: "))
if eingabe == 1:
zahlenraten1()
if eingabe == 2:
zahlenraten2()
@Hyperion
Achja was meinst du mit Code auf modulebene, hab auch unter wiki gesucht, versteh nicht was das eigentlich ist.
Ich programmiere übrigens jetzt erst seit 3 Wochen, hab vorher nie etwas in der Richtung gemacht. Ist das Script dafür ok, oder sollte das schon wesentlich besser aussehn?
Zuletzt geändert von chris27 am Mittwoch 17. Dezember 2008, 09:00, insgesamt 1-mal geändert.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Also Du bekommst ja nicht geschimpft - manchmal mutet Kritik einfach negativ an, dabei ist das ganz normal im Lernprozess, dass man Dinge auch mal "falsch" oder wenig elegant umsetzt. Wenn man darauf reagiert will man Dir ja nur helfen
Also Code auf Modul-Ebene ist folgendes:
Wenn nun jemand Deine Datei als Modul importiert, dann wird die print Anweisung ausgeführt - und das will man dann ja nicht wirklich. Oder fändest Du es gut, wenn das random-Modul erst einmal zig Sachen printen würde, bevor Du Deine Zufallszahl hast?
Also Code auf Modul-Ebene ist folgendes:
Code: Alles auswählen
print "Hallo"
# usw.
@chris27: Ich war mal so frei die eine "Trennlinie" in Deinem Quelltext auf normale Länge zu kürzen. Bei so langen Zeilen bekommen einige Leute einen vertikalen Scrollbalken im Browser für die gesamte Seite und es ist echt mühsam Beiträge zu lesen, wenn man dauernd hin und her scrollen muss.
Wenn man anfängt Namen zu nummerieren, will man meistens eine Liste benutzen. Das wäre hier bei `guess1` bis `guess4` der Fall. Damit würde der Quelltext kürzer weil man die dann "guesses" dann in einer Schleife verarbeiten kann und man auch mehr als vier verwenden in dem man einfach an der Stelle wo die Liste erstellt wird, mehr Elemenete erzeugt.
Die Bedingung in der ``while``-Schleife (Zeile 19) kann man kürzer ausdrücken: ``while secret not in (guess1, guess2, guess3, guess4):`` oder wenn man mit einer Liste arbeitet ``while secret not in guesses:``.
Es wird bei jedem Schleifendurchlauf die Zeit ermittelt, aber nur das letzte Ergebnis davon *nach* der Schleife ausgegeben.
ie KI ist ineffizient, weil nur einer der "guesses" sein Ziel erreichen kann und man kann nach dem ersten Schritt die beiden einzigen möglichen Kandidaten dafür bestimmen.
Wenn man anfängt Namen zu nummerieren, will man meistens eine Liste benutzen. Das wäre hier bei `guess1` bis `guess4` der Fall. Damit würde der Quelltext kürzer weil man die dann "guesses" dann in einer Schleife verarbeiten kann und man auch mehr als vier verwenden in dem man einfach an der Stelle wo die Liste erstellt wird, mehr Elemenete erzeugt.
Die Bedingung in der ``while``-Schleife (Zeile 19) kann man kürzer ausdrücken: ``while secret not in (guess1, guess2, guess3, guess4):`` oder wenn man mit einer Liste arbeitet ``while secret not in guesses:``.
Es wird bei jedem Schleifendurchlauf die Zeit ermittelt, aber nur das letzte Ergebnis davon *nach* der Schleife ausgegeben.
ie KI ist ineffizient, weil nur einer der "guesses" sein Ziel erreichen kann und man kann nach dem ersten Schritt die beiden einzigen möglichen Kandidaten dafür bestimmen.
Nochmal zu deiner KI:
Hyperion meint folgendes: Eine effiziente Suchstrategie kann so aussehen, dass man als Startwert den Mittelwert des in Frage kommenden Intervalls nimmt. Nachdem man die Rückmeldung erhalten hat, ob die Zahl zu groß oder zu klein war, weiß man, in welcher der beiden Hälften des Intervalls sie liegen muss.
Dann nimmt man wieder den Mittelwert diese neuen (halb so großen) Intervalls und das Ganze wiederholt sich, bis man die gesuchte Zahl so weit eingeschachtelt hat, dass keine andere mehr übrig bleibt.
Mit dieser Methode findet man z.B. mit max. 30 Rateversuchen jede beliebige Zahl bis 1 Mrd.
(Falls der Mittelwert keine natürliche Zahl ist, muss man entsprechend runden oder abschneiden.)
Hyperion meint folgendes: Eine effiziente Suchstrategie kann so aussehen, dass man als Startwert den Mittelwert des in Frage kommenden Intervalls nimmt. Nachdem man die Rückmeldung erhalten hat, ob die Zahl zu groß oder zu klein war, weiß man, in welcher der beiden Hälften des Intervalls sie liegen muss.
Dann nimmt man wieder den Mittelwert diese neuen (halb so großen) Intervalls und das Ganze wiederholt sich, bis man die gesuchte Zahl so weit eingeschachtelt hat, dass keine andere mehr übrig bleibt.
Mit dieser Methode findet man z.B. mit max. 30 Rateversuchen jede beliebige Zahl bis 1 Mrd.
(Falls der Mittelwert keine natürliche Zahl ist, muss man entsprechend runden oder abschneiden.)
Hab den ganzen Nachmittag ander KI gesessen, aber bekomm es einfach nicht so hin wie ihr es beschrieben habt.