Jump to content
Roulette Forum

Egoist

Mitglieder
  • Gesamte Inhalte

    5.007
  • Benutzer seit

Alle erstellten Inhalte von Egoist

  1. Aufgrund technischer Probleme fiel mein letztes Posting hier aus, sorry.
  2. Moin ratz, die SuFu versuchte hier niemand mehr als 3x, denn es ist der blanke Hohn. Alle anderen Foren bestehen darauf, dass Neulinge im Vorfeld bereits geklärte Fragen recherchieren, geht hier NULL... Gruss vom Ego
  3. Nachtrag: Nach 5 vergeblichen Versuchen habe ich mein Posting gelöscht und nur das Zitat, auf das ich mich bezog belassen. Das konnte ich absenden. Es ist aber sinnbefreit. Ein Versuch, dann meinen Kommentar wieder einzupflegen bekam die bekannten Fehlermeldung, meine Zeit sei abgelaufen, oder der Beitrag sei gelöscht, oder bewegt worden.... Das Forum hat tatsächlich ein Problem...
  4. Das kann ich nicht mehr editieren... Hööö??? Ich konnte das doch??? Durfte aber den ursprünglichen Text nicht mehr einfügen mit Strg-v. ??? Ich hab die Schnauze für heute voll... Zwischen den einzelnen Sätzen lagen unzählige Tests, bitte das zu beachten...
  5. Eben bekam ich 3x in Folge den Fehler 403 der besagt dass es mir verboten ist Forbidden You do not have permission to access this document. Web Server at web2.confixx.pc-intern.com auf @Nebutzermane in seinem Thread zu antworten...
  6. Hallo Albert, es gibt hier (und in anderen Foren?) eine eingestellte Zeit, die besagt, wie lange man einen Beitrag noch "verbessern" kann. Wenn Dein Beitrag also nicht moved (bewegt) or deleted (gelöscht) wurde, dann too much time may have passed since it was posted (das bedeutet, die eingestellte Zeit ist abgelaufen). Zusätzlich gibt es für Codeblöcke einen Editierschutz, der einsetzt, sobald Du ihn gesendet hast. Ich kann mir sehr gut Sicherheitsaspekte als Grund vorstellen. Die Sicherheit ist zwar immer noch gefährdet, weil man bösartigen Code posten könnte, aber den sehen vorher alle, die was davon verstehen und könnten Alarm schlagen. Der Editierschutz hilft gegen Trolle, die den Code zitieren und verändern könnten. Ist alles nur meine Meinung, ich hoffe, Deine Probleme haben sich inzwischen gelegt. Wenn Du ein neues Posting abschicken willst, kontrolliere bitte vorher, ob der <code> Block in Ordnung ist. Er ist nachträglich nicht änderbar (vielleicht kann man ihn löschen und neu aufmachen? Weiss ich aber nicht). Gruss vom Ego
  7. Hey Wiener, ich verstehe Deinen Einwand sehr gut. Aber auch ich habe das Problem mit dem Merken natürlich bedacht. Daher ging ich nach folgender, bisher ungenannten, Konvention vor: Man nehme die Plein "1" (das ist natürlich willkürlich von mir gewählt) 1 ist Rot bzw Rouge 1 ist Ungerade bzw Impair 1 ist Tief bzw Manque Also bekommen alle EC der 1 eine +1 in den entsprechenden Chancen. Folglich sind Noir, Pair und Passe bzw Schwarz, Gerade und Hoch = -1 Die Namen der von mir bezeichneten Listen hiessen deshalb auch roulRS oder roulTH und nicht roulSR etc. denn der erste Buchstabe steht für die +1 und der zweite für die -1 Es spricht überhaupt nichts dagegen Deine Tabellen so zu lassen und die numerischen Tabellen davon abzuleiten. Die numerische Methode hätte aber an einigen Stellen Vorteile, ohne gleichzeitig Nachteile zu produzieren. Wollte man zB die von Dir genannte Kombination mehrerer EC nutzen, könnte man zB alles binär codieren. Dann hätte die 1 in RS das Bit 0 und die 1 in UG das Bit 1 usw. Die Zero müsste man immer vermeiden, also ist die 0 immer ein Nullevent. Jetzt wo ich es hinschreibe, fallen mir allerdings auch noch Probleme ein, die die binäre Darstellung erzeugt. Das fängt schon bei dem Vorzeichen an, das Binärzahlen nicht kennen. Das alles ist aber fortgeschritter Brainfuck, der momentan nicht interessiert. Es sollte alle Tabellen geben, die man nachher sinnvoll nutzen mag. Aus Speicherplatzgründen sollten leicht erstellbare Tabellen aber erst zur Laufzeit entstehen, wenn man sie nutzen will. Deine vordefinierten Tabellen, die besser menschenlesbar sind und damit besser wartbar, sollten Standard bleiben. Danke für die Gratulation, aber ich wollte lieber aktiv mitmachen, als in anderer Leute Suppe zu spucken.
  8. Hallo Wiener, das sieht sehr übersichlich aus, danke für die Mitarbeit! Ich bin mir nicht ganz sicher, aber vielleicht sollte man die Konstanten noch ein wenig roulettespezifischer nennen, wenn das Inhalt eines Moduls wird. Im importierenden Python_s_cript kann man ja bei Bedarf noch Umbenennen. Mir fiel auf, dass "trp und trs" in der Zeile vertauscht wurden (nicht die Daten, nur die Bezeichnungen). Und ich würde mir wünschen, dass es (zusätzlich) Tabellen gibt, in denen die Werte schon numerisch vorliegen, also roulRS mit Werten von +1 für Rot und -1 für Schwarz. Damit kann man durch einen Plot die Abweichungen über die Zeit und durch einen Mittelwert, Min, Max über alles einen Status bilden. Ansonsten sind Deine Tabellen sehr gut geeignet das erste RouletteModul.py zu bilden. Eigentlich wollte ich jetzt etwas weitermachen, bekam aber gerade einen Anruf und muss weg... Bis später, Ego
  9. An dieser Stelle habe ich mal rumgespielt: # Erzeuge eine Instanz win = tk.Tk() win2 = tk.Tk() # hier habe ich eine 2. Instanz eingebaut # Füge einen Titel hinzu win.title("Meine erste GUI") win2.title("Test") # und auch einen Titel vergeben # Enable resizing x-dimension, disable y-dimension win.resizable(True, True) # hier fehlte win2.resizable(True, True) , # habs halt nicht eingebaut, # das Fenster ist trotzdem resizable (scheint default zu sein). # Labels hinzufügen label1 = ttk.Label(win, text="Enter a Plein-Nr.:") label1.grid(column=0, row=5) label2 = ttk.Label(win, text="**") label2.grid(column=0, row=0) label3 = ttk.Label(win, text="**") label3.grid(column=0, row=1) label4 = ttk.Label(win, text="**") label4.grid(column=1, row=2) label5 = ttk.Label(win2, text="*****") #das geht nur, wenn man ein 2.Fenster namens win2 definiert hat, hatte ich aber gemacht. label5.grid(column=10, row=10) Man beachte, bei Label5 sind Zeile und Spalte 10, trotzdem taucht das Label links oben auf. Die Spalten 0-9 und die Zeilen 0-9 scheinen keine Ausdehnung zu haben... Vermutlich ist es wichtig, dann auch win2.mainloop aufzurufen. Habs noch nicht ohne probiert. Das kommt ganz unten in den Text: #================== # GUI-Start #================== win.mainloop() win2.mainloop() Wenn man das geänderte Programm laufen lässt, sieht Alberts GUI natürlich gerupft aus, aber jetzt tragt mal eine ganz lange Zahl in das Eingabefeld ein und drückt ENTER. Dann noch auf den Knopf mit Hallo drücken... Der Hallo-Knopf wird breiter und damit seine ganze Spalte... Klasse... Viel Spass mit Python wünscht Euch Ego p.s.: Zum Schliessen bitte erst das Fenster mit den Buttons schliessen und danach das Fenster Test. Sonst bleibt vielleicht Müll im Speicher. pps.: Erstaunlicherweise braucht man win2.mainloop() nicht aufzurufen, das 2. Fenster kommt trotzdem hoch und kann in der Grösse verändert werden. Der oben beschriebene Knopf mit "Hallo" heisst zu Beginn "OK!" Erst nach dem ersten Anklicken wird der Text und damit die Breite der Spalte verändert. Das geht auch wieder schmaler, wenn die Eingabe wieder kürzer ist und man dort wieder drückt.
  10. Noch Nachtrag: ich hab mal ein bisschen mit tkinter und Deinem S_cript herumgespielt. Dabei sind mir einige Dinge aufgefallen: Es wird in Zeilen und Spalten gedacht, so ähnlich wie bei Excel. Die Label werden in eine Fensterinstanz eingefügt mit der anfänglichen Spaltenbreite des breitesten Spaltenmitglieds. Man kann mehr als ein Fenster aufrufen, schliesst man aber das jüngste, geht das ältere auch zu. Leider läuft dann die *.mainloop() des älteren Fensters noch weiter, man hat aber kein GUI mehr, um was zu machen... Fängt man mit dem links oben liegenden Label nicht bei 0 , 0 an, sondern bei zB 10, 10, dann werden die Zeilen 0-9 und die Spalten 0-9 links oben herausgeschoben. Interessant... Bestimmt kann man auch nach dem Start einer *.mainloop() Funktion noch Label hinzufügen und löschen. Das muss ich noch testen... Auch wenn tkinter einen etwas altbackenen Eindruck macht, so scheint es durch seine Klarheit zu bestechen.
  11. Cool, malst Du wirklich die Permanenzen mit der Hand auf Papier? (sieht so aus) Wenn es stimmt, was ich zu sehen glaube, sind das 3 kleine Striche pro Coup, also eine Mörderarbeit... Das kriegen wir auf alle Fälle mit Python einfacher und umweltschonender in den Griff
  12. Ok, da Albert grad Malesche hat und der Code ja auch von ihm grad gepostet wurde, erlaube ich es mir mit dem Hinweis auf seine Urheberschaft. """ Spyder Editor This is a temporascry ript file. """ #======================== # imports #======================== import tkinter as tk from tkinter import ttk # Erzeuge eine Instanz win = tk.Tk() # Füge einen Titel hinzu win.title("Meine erste GUI") # Enable resizing x-dimension, disable y-dimension win.resizable(True, True) # Labels hinzufügen label1 = ttk.Label(win, text="Enter a Plein-Nr.:") label1.grid(column=0, row=5) label2 = ttk.Label(win, text="********** User Interface für Roulette-Tests **********") label2.grid(column=0, row=0) label3 = ttk.Label(win, text="*******************************************************") label3.grid(column=0, row=1) # Button Click Event Function def click_me1(): action1.configure(text= 'Hallo ' + name.get()) label1.configure(foreground='red') label1.configure(text=" rotes Label ") # Button Click Event Function def click_me2(): action2.configure(text= " Button2 wurde geklickt") label1.configure(foreground='blue') label1.configure(text=" blaues Label ") # Ein Text Widget hinzufügen name = tk.StringVar() name_entered = ttk.Entry(win, width=4, textvariable=name) name_entered.grid(column=1, row=5) # Einen Button hinzufügen action1 = ttk.Button(win, text="Ok!", command=click_me1) action1.grid(column=2, row=5) # Einen 2. Button hinzufügen action2 = ttk.Button(win, text="Permtest vom Ende", command=click_me2) action2.grid(column=0, row=7) # Einen 3. Button hinzufügen action3 = ttk.Button(win, text="Permtest von oben", command="") action3.grid(column=1, row=7) # Einen 4. Button hinzufügen action4 = ttk.Button(win, text="Pooltest", command="") action4.grid(column=12, row=7) # Setze den Cursor in die Textbox name_entered.focus() #================== # GUI-Start #================== win.mainloop()
  13. Die Forensoft zickt oft rum, daher empfiehlt es sich erst ein paar Leerzeilen zu erstellen und dann in der Mitte zwischen den leeren Zeilen ein Zitat oder Codeblock auszulösen. Ich denke nicht, dass Dein Account kaputt ist.
  14. Wenn Dein Postfach voll ist, markiere einfach alte Mitteilungen, die weg können, und drücke auf die Mülltonne. Wenn @Paroli's Postfach voll ist, ist er vielleicht gar nicht zu erreichen... kA.
  15. Nachtrag: Super Albert, Dein GUI läuft hier erste Sahne! Soll ich den korrigierten Code hier posten?
  16. Don't panic! Ich hatte es doch schon geschrieben: Am besten Du löscht den ganzen Block und erzeugst den richtigen wieder mit einem Strg-v Ich hatte noch einen "Bad Character" hinter dem Import von ttk (der war unsichtbar und schwer zu löschen). Da win.mainloop() nicht bemängelt wurde, kann ich es wohl laufen lassen... Ist hier nur grad zuviel Traffic
  17. So würde ich in etwa auch vorgehen da, im Gegensatz zur Börse, keinerlei selbstverstärkender Effekt besteht.
  18. Moin @roemer, bei Deinem 4. Pfeil hatte ich auch noch ein Signal gesehen, auch nach Deinem 1. von links könnte man evtl. schon eingestiegen sein. Gerade hat sich @novice schon gemeldet und mich verblüfft. Allerdings sind markante Chartmarken nicht im Nachhinein wertvoll, sondern man muss sie vorher erkennen. @novice Deine Marken 3-5 sind mutig gegen den Trend gesetzt, ich hoffe Du machst sowas nicht an der Börse.
  19. Super Albert, das sieht doch schon ganz gut aus! Du hast nur die führenden ''' vergessen mitzukopieren, so dass nun der Startkommentar als Code und der Code als Kommentar erscheint. Auch Du überrascht mich mit einem Vorstoss in Richtung tkinter. Eine Gui können wir sehr gut gebrauchen! Bisher habe ich davon keine Ahnung, daher die dumme Frage: Ist win.mainloop() schon vordefiniert in tkinter, oder fehlt nur ein Teil des Programms?
  20. Ups, da hatte ich noch einige Fehler verbaut, die sind jetzt hoffentlich weg. @Dr. Manque ich hatte vergessen zu erwähnen, dass man im Codefenster die Sprache Python auswählen kann und sollte. Viel Spass mit den EC und Python import numpy as np import time from typing import TextIO roulKessel = [0, 32, 15, 19, 4, 21, 2, 25, 17, 34, 6, 27, 13, 36, 11, 30, 8, 23, 10, 5, 24, 16, 33, 1, 20, 14, 31, 9, 22, 18, 29, 7, 28, 12, 35, 3, 26] roulRot = np.zeros(18) roulSchwarz = np.zeros(18) roulRS = np.zeros(37) roulUG = np.zeros(37) roulTH = np.zeros(37) pRot = "\033[1;41;37m" pGruen = "\033[1;42;30m" pSchwarz = "\033[1;40;37m" pNorm = "\033[0m" pFarbe = [pSchwarz, pGruen, pRot] pZahl = [] for x in range(0, 18): rz = roulKessel[x * 2 + 1] #Rote Zahl beginnend bei Zero im Uhrzeigersinn sz = roulKessel[x * 2 + 2] #Schwarze Zahl ist "rechts" daneben roulRot[x] = rz #alle roten werden in Kesselfolge gespeichert roulSchwarz[x] = sz for x in range(0, 37): if x in roulRot: roulRS[x] = 1 elif x in roulSchwarz: roulRS[x] = -1 else: roulRS[x] = 0 if x == 0: #prüft auf Zero, denn die ist glatt durch 2 teilbar roulUG[x] = 0 #und wäre damit auch gerade roulTH[x] = 0 #Null wäre sonst auch Tief else: if x % 2 == 0: #alle geraden sind auch glatt durch 2 teilbar roulUG[x] = -1 # -1 ist die Marke für gerade else: roulUG[x] = 1 # +1 ist die Marke für ungerade if x <= 18: roulTH[x] = 1 # +1 ist die Marke für Tief else: roulTH[x] = -1 # -1 ist die Marke für Hoch for x in range(0, 37): if x < 10: temp = pFarbe[int(roulRS[x]) + 1] + " " + str(x) + " " + pNorm else: temp = pFarbe[int(roulRS[x]) + 1] + " " + str(x) + " " + pNorm pZahl.append(temp) print("Kesselfolge:") for x in range(0,37): print(pZahl[int(roulKessel[x])], end="") print("\n\nAlle roten Zahlen:") for x in range(0,37): if roulRS[x] == 1: print(pZahl[x], end = ".") print("\nAlle ungeraden Zahlen:") for x in range(0,37): if roulUG[x] == 1: print(pZahl[x], end = ".") print("\nAlle geraden Zahlen:") for x in range(0,37): if roulUG[x] == -1: print(pZahl[x], end = ".") print("\nAlle roten Zahlen in Kesselfolge:") for x in range(0,37): if roulRS[int(roulKessel[x])] == 1: print(pZahl[int(roulKessel[x])], end = "->") print("\nAlle scharzen Zahlen in umgekehrter Kesselfolge:") for x in range(36,-1,-1): #Schleife läuft von 36 bis 0 herunter, -1 Schrittweite if roulRS[int(roulKessel[x])] == -1: #hier ist die -1 das Zeichen für Schwarz print(pZahl[int(roulKessel[x])], end = "<-") print("\n\nAlle tiefen Zahlen in Kesselfolge, dann alle hohen (tolles Farbmuster gell?):") for x in range(0,37): if roulTH[int(roulKessel[x])] == 1: print(pZahl[int(roulKessel[x])], end = "") else: print("--->", end = "") #hier kommt der kleine Pfeil für nichtzutreffende Fächer print() for x in range(0,37): if roulTH[int(roulKessel[x])] == -1: print(pZahl[int(roulKessel[x])], end = "") else: print("--->", end = "") #hier kommt der kleine Pfeil für nichtzutreffende Fächer print()
  21. Hallo Wiener, ich bin schwer begeistert! Du hast hier die erste Funktion definiert! Ebenso hingerissen bin ich von Deiner Entdeckung, QPython. Ich habe mir ein paar Videos dazu angesehen, die mich dazu gebracht haben, es baldmöglichst ausprobieren zu wollen. Bezüglich der anderen Chancen, mach nur, es sollte Dir nicht zu schwer fallen, wenn Du einfach für alles eine Liste definierst. Für die anderen EC habe ich fertig, kommt im nächsten Posting. Gruss vom Ego
  22. Hallo Albert, hast Du versucht, Deinen Code in ein Codefenster zu pasten? Dazu lädst Du Dein Programm in die Zwischenablage und drückst in dem Editor mit dem Du Dein Posting erstellst oben auf das Piktogramm mit der Beschriftung "<>" gleich links neben dem Smiley. Es popt ein weiteres Eingabefeld auf, dort drückst Du Strg-v zum Einfügen. Dein Code wird dann in einer Box eigebettet und nicht als Bild oder upload behandelt. Auch @wiensschlechtester kennt das noch nicht da er sein Programm als Fliesstext eingefügt hatte. An den Inhalt eines Codeblocks kommt man später nicht mehr heran, also vor dem Einfügen alles kontrollieren. Ausserdem hat der Codeblock den Vorteil, dass die Forensoftware nichts daran ändert. Schriebe man zB das folgende Wort "s_cript" ohne Unterlänge hin, würde die Forensoft einschreiten. Vielleicht ist nur Dein Uploadspeicher voll... Gruss vom Ego
  23. Wo ich grad dabei bin: Um Dutzende zu unterscheiden, muss man nur die Zahl auf Zero prüfen und falls kein Zero, durch 12 teilen, abrunden und 1 aufaddieren. Für Col teilt man die Zahl durch 3, behält aber den Teilungsrest. Für die Zahlen in Col 1 bleibt ein Teilungsrest bei Division durch Drei von 1. Für die Zahlen in Col 2 bleibt ein Teilungsrest bei Division durch Drei von 2. Für die Zahlen in Col 3 bleibt ein Teilungsrest bei Division durch Drei von 0. Dann nochmal prüfen, ob die resultierende Zahl restlos durch Drei teilbar ist, (Teilungsrest =0) falls ja, ist es ein Col 3 Member. Edit: Das ist Blödsinn, war doch eben schon klar... Es würde mich tierisch freuen, wenn Ihr mal ein paar Zeilen Code posten würdet...
  24. Hallo Wiener, nein, die letzte Zeile ist es nicht, aber vielleicht eine etwas davor. Was ich vom Programmieren weiss, bedeutet vor allem Fehlersuche. Alle Programmiersprachen hageln einen mit Fehlermeldungen zu, und dann darf man suchen gehen... Keines wegs bin ich vorraus, ich hatte nur einen kleinen Vorsprung, da grad Zeit ist. Das wird sich ändern und seit dem letzten Post habe ich ganz andere Sachen gemacht. Du meinst Case: bla, blubb? Das braucht man in Python nicht, falls es das nicht gibt (keine Ahnung). Wir hatten den Loop, wo für jede Zahl nachgesehen wurde, ob sie rot, oder schwarz ist. Da klemmst Du einfach 2 Fallunterscheidungen ein, die abfragen, ob eine Zahl gerade ist, oder kleiner gleich 18 Damit kannst Du in einem Rutsch sofort die Listen roulIP und roulMP auffüllen. Kann man so machen und ist vielleicht sogar minimal schneller, weil man sich die Daten nur abholt. Zerospiel ist etwas komplexer, denn es sind die Kesselfächer 0-2 und 33-36 Grosse Serie sind Kesselfächer 3-7 und 28-32 Orphelins sind Kesselfächer 8-10 und 23-27 Bleibt "die kleine Serie" mit Kesselposition 11-26 Das muss man wirklich nicht mit Fallunterscheidungen lösen, Da bleibt eine feste Map schon Mittel der ersten Wahl. Ich auch, aber es wird sich lohnen. Der ganze moderne KI Schmonz läuft mit Python wie Butter in der Julisonne... Gruss vom Ego
  25. Hier ein Codeschnipsel, den ich unscharf gemacht habe. Im Kommentar steht wo und warum. import bs4 as bs #Paket BeautifulSoup wird benutzt import urllib.request #Paket urllib wird auch benötigt import re #ebenso Regular Expressions anzahlCoupsinZeile = 37 #hat nur kosmetischen Grund, um die Ausgabe zu stauchen. newline = 0 #hier zählen wir die Plein mit #Wenn man einen Permanenztag aus Wiesbaden auf den Drucker geben will, #ruft man im Browser folgende Seite auf. Das Datum taucht 2x auf, #die Abfrage ist beispielhaft auf den 30.06.2018 eingestellt. #Wenn wir eine Benutzeroberfläche hätten, könnte man dort zB das Datum eingeben url = "https://www.spielbank-wiesbaden.de/typo3conf/ext/lsh_permanenzen/permanenz_tag_druck.php?tischname=TB1R&date=2018-06-30&date2=2018-06-30" temp = re.findall(r'=[\d|\w|-]*', url) #kleine Übung mit Regular Expressions, bitte nachschlagen... print(temp) quit() #Wer diese Zeile entfernt, sollte eine Internetverbindung haben, #denn dann wird die Abfrage nach Wiesbaden geschickt. #Bitte nur zu Testzwecken und selten nutzen, sonst könnte es Ärger geben... source = urllib.request.urlopen(url) #Wir speichern den HTML-Text in "source" ab #unten steht noch die url für die aktuellen Zahlen, dafür ist aber das Programm #noch nicht ausgelegt. #source = urllib.request.urlopen('https://www.spielbank-wiesbaden.de/index.php?id=101') #hier filtert BeautifulSoup alles aus, was uninteressant ist soup = bs.BeautifulSoup(source,'html.parser') #in der Suppe wird jetzt nach einer Tabelle gesucht. table = soup.find('table') #aus der Tabelle werden jetzt die Zeilen ausgeeinzelt table_rows = table.find_all('tr') #tablerows enthält alle Zeilen und die werden nun Zeile für Zeile abgearbeitet for tr in table_rows: td = tr.find_all('td') #tr = eine Zeile, die versäuberten Spalten kommen nach td row = [i.text for i in td] #row ist nun eine kleine Liste aller Spalten #print(len(row),row,type(row)) #die kann man sich ausgeben lassen if len(row) == 3: #einige Zeilen haben extreme Ausmasse, die wollen wir nicht for col in row: #liegen 3 Spalten vor, schauen wir die Zeile durch if re.match(r'\d{1,2}',col): #es werden alle 1-2stelligen Zahlen gesucht print(col, end=" ") #hier wurde eine Plein gefunden newline += 1 if newline > anzahlCoupsinZeile: #hier kommt ein Zeilenumbruch hin newline = 0 #Zähler wird genullt print() #und ein Zeilenende ausgegeben Natürlich ist wieder mindestens ein Fehler eingebaut, bin gespannt, wer ihn findet... Viel Spass mit Python wünscht Ego
×
×
  • Neu erstellen...