Jump to content

Python, die verpasste Chance?


Recommended Posts

vor 21 Stunden schrieb Egoist:

Ich wollte @Dr. Manque's Lernthread nicht unnötig belasten, daher schreibe ich in meinen aktuellen.

 

Ein Figurenspieler bin ich nicht, auch mit den ECs beschäftige ich mich selten.

Aber mit Binärzahlen kenne ich mich prima aus und die decken einen Münzwurf perfekt ab.

 

Soweit ich das überblicke, rechnen alle EC-Figurenspieler die Zero raus, damit sind sie gleichzeitig den Hausvorteil los. :sonne:

Aber fangen wir mal mit einem Roulettekessel für EC ohne Zero an:

  • Im ersten Wurf gibt es Rot oder Schwarz also nur 2 Fächer.
  • Wollen wir 2 Würfe mit einer Kugel simulieren brauchen wir schon 4 (2^2) Fächer,
    RR, RS, SR und SS.
  • Bei einem Wurf für Figuren mit 3 Ereignissen braucht der Kessel schon 8 Fächer,
    RRR, RRS, RSR, SRR, RSS, SRS, SSR und SSS.
  • Setzt man das fort, gibt es für jeden weiteren Coup doppelt so viele Fächer.
  • Ein Kessel, der 8 EC-Coups, auch in der richtigen Reihenfolge bestimmt, hat 256 Fächer (2^8).

Treibt man das weiter, muss entweder die Kugel kleiner und kleiner werden, oder der Kessel grösser und grösser..

 

Nun kommt's:

Interessanter Weise gilt auch hier immer das 2/3 Phänomen (behaupte ich).

Also, egal wieviele Figuren es gibt, es werden 2/3 davon in einer Figurenrotation getroffen.

Die Figurenlänge sei  = f

also treffen durchschnittlich 2^f*2/3 Figuren in 2^f Coups (grob).

 

Lernt man nun eine Maschine über einen gewissen Zeitraum an, so könnte sie auf die Idee kommen,

bereits getroffenen Figuren zu bevorzugen, da sich etliche wiederholen werden.

 

Allerdings gebe ich zu bedenken, dass es Coup für Coup schwieriger wird, weil die Möglichkeiten explodieren.

 

Richtigen brainfuck ergibt die Überlegung, einer jeden erschienenen Figur eine zukünftige Trefferwahrscheinlichkeit zuzuordnen, die sich ausserdem Coup für Coup wieder neu ausrichtet (Computer machen das mit links).

 

 

Hallo EGO,

 

wie es der Zufall will, habe ich mich in den letzten Tagen mit einer neuen Variante des "EC-Figuren-Learn" beschäftigt

und kann Deinen Wunsch:

"Ich schlage nun zum wiederholten male vor, dass Du Deinen GUI-Vorschlag hier einreichst.

Wenn das noch nicht in Python geht, nimm VBA, aber lass uns was sehen."

prompt erfüllen.

 

Gut finde ich, dass es eine voll ausprogrammierte Variante des von Dir angedachten Modells ist.

Deshalb schau Dir bitte die Beiträge #5 bis #7 in

https://www.roulette-forum.de/topic/18480-lernfähige-roulettesysteme-ec-summentendenz-learn/

an.

Man kann daran nun eine Menge herumschrauben und neue Varianten in Excel-VBA schnell austesten.

Ich erwarte dazu Vorschläge von Dir.

 

Mein Modell arbeitet zunächst Coup für Coup.

Wenn man nach Deiner Idee das 2/3-Gesetz reinbringen wollte, müsste man eine flexible Gitterung einführen.

 

Hoffentlich kann ich den Eindruck erwecken, dass man mit Lernverfahren, die auf relativ einfachen Tabellen basieren,

dem Zufall auch schon ein Schnippchen schlagen kann.

Deshalb würde ich es gut finden, wenn noch ein anderer Programmierer "EC-Figuren-Learn" neu programmieren würde, vielleicht Du in Python,

und onio in PHP.

Bei der Python-Programmierung mache ich mit - sozusagen als Vorübung für das größere Ding mit KNN.

 

Der Kernalgorithmus sollte eigentlich aus meiner Beschreibung erkennbar sein.

In VBA sind es ca. 100 Anweisungen, die nach alter Gutsherrenart nicht objektorientiert geschrieben sind.

Ich müsste sie noch voll kommentieren und könnte sie per PN rüberreichen.

 

Auf gute Zusammenarbeit beim Basteln "lernfähiger Roulettesysteme"!

 

Albert

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 1 Stunde schrieb Dr. Manque:

wie es der Zufall will, habe ich mich in den letzten Tagen mit einer neuen Variante des "EC-Figuren-Learn" beschäftigt

und kann Deinen Wunsch:

"Ich schlage nun zum wiederholten male vor, dass Du Deinen GUI-Vorschlag hier einreichst.

Wenn das noch nicht in Python geht, nimm VBA, aber lass uns was sehen."

prompt erfüllen.

 

Moin Albert,

 

ich habe mir Deine Exceltabellen angesehen und bin noch etwas verwirrt.

Es geht daraus gar kein GUI hervor, sondern nur eine bildliche Darstellung der Ausgabe.

Wo werden die Benutzereingaben abgefragt, denn die machen das GUI aus!?

 

Zur Erläuterung meiner auch zukünftig evtl harten Kritik, eine kleine Anekdote:

Nachdem ich eines meiner ersten Programme fertiggestellt hatte (auf VC20),

lud ich einen Nerd ein, den ich im Computershop kennengelernt hatte.

Stolz präsentierte ich mein Programm und liess ihn testen :)

 

Das erste, was er machte, waren bewusst unerwartete Eingaben und mein Programm lag sofort auf der Fresse.

Er hatte mir gegenüber einen gehörigen Vorsprung damals, aber dann wurden wir richtige Freunde.

Nach einigen Jahren mit wiederkehrenden Programmierwochenenden hat uns das Leben dann leider getrennt.

Inzwischen hatten wir aber wirklich interessante Projekte am Wickel, incl erfolgreichem MaschineLearning (VC20-Basic!).

 

In diesem Sinne biete ich Dir gern meine kritische Mitarbeit an, aber Du wirst mich dann ertragen müssen.

Kleiner Vorgeschmack:

 

vor 2 Stunden schrieb Dr. Manque:

Man kann daran nun eine Menge herumschrauben und neue Varianten in Excel-VBA schnell austesten.

Ich erwarte dazu Vorschläge von Dir.

 

Deine 4 Testspiele mit echtem Geld weisen eher in Richtung (Gleichsatz-)Minus, denn der Saldo ist nur der Martingale geschuldet.

Wie gefährlich sowas ist, muss ich Dir sicher nicht herbeten.

Mein Vorschlag wäre deshalb, lass die Martingale weg.

Entweder bringt die Prognose einen Gewinn, oder sie ist untauglich.

 

Es ist alles nur der Sache geschuldet und nicht persönlich!

 

 

Gruss vom Ego

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 20 Stunden schrieb onoio:

Kennt ihr Watson. 

 

Hallo @onoio,

 

hab es mir mal angesehen, allerdings nur auf youtube.

Scheinbar ist Watson schon ein marktreifes System, mit dem u.a. Versicherungsunternehmen arbeiten.

Ausserdem liegen populäre Erfolge sogar schon 7 Jahre zurück.

 

Watson scheint einen gehörigen Vorsprung zu besitzen...

 

 

Gruss vom Ego

 

p.s.: Was ich gesehen habe, war ein API für Unity(Gameengine).

Unity hatte ich vor gefühlten 10 Jahren mal auf dem Schirm,

damals habe ich einen Roulettekessel in blender gebaut und dort eingefügt.

Der funktionierte auch, aber nur bis zu einer untauglich kleinen Kugelgeschwindigkeit.

Bei realistischer Abwurfgeschwindigkeit flog die Kugel durch die Rinnenwand nach aussen weg.

Da habe ich dann aufgesteckt.

bearbeitet von Egoist
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 20 Stunden schrieb onoio:

SOFA - Statistics Open For All

The user-friendly, open-source statistics, 

analysis, and reporting package

Gestoßen.  Kennt jemand diese? 

 

Hab ich noch nicht angesehen.

Python enthält dermassen viele wissenschaftliche Module, dass es schwer fallen sollte, das zu toppen.

bearbeitet von Egoist
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 12 Stunden schrieb Egoist:

 

Moin Albert,

 

ich habe mir Deine Exceltabellen angesehen und bin noch etwas verwirrt.

Es geht daraus gar kein GUI hervor, sondern nur eine bildliche Darstellung der Ausgabe.

Wo werden die Benutzereingaben abgefragt, denn die machen das GUI aus!?

Hallo EGO,

 

Ein GUI unter Excel zu machen ist das denkbar Einfachste.

Man definiert einen Fixbereich, der nicht scrollbar ist und zieht die Controls aus dem Werkzeugkasten drauf oder man kopiert sie aus einer anderen Excel-Mappe.

Excel kreiert auch automatisch für jedes Control die zugehörigen Standard-Callback-Routinen, bzw. deren Hüllen.

I.d.R. kann man unter einer großen Vielfalt an Callback-Funktionen auswählen, z.B. MouseUp, MouseDown, Keypress, MouseMove, Click, DblClick etc..

Für Parameter- und Texteingaben nutzt man die Zellen im Fixbereich.

Unter dem Fixbereich, im scrollbaren Teil hat man unendlich Platz für Ergebnisausgaben.

 

Die Oberfläche für das Programm "EC-BinärFigurenLearn" sieht ein bisschen wild aus.

Was die Controls betrifft, so könnte man die im Design-Modus durch Herumziehen mit der Maus ganz schnell völlig anders strukturieren,

ohne dass man an Lokalisierungsparametern herumschrauben muss wie in tkinter und ohne dass man am Code etwas ändern muss.

 

Cockpit-Tabelle.gif.6d0d1e5664b29076dc1a9d9566260f74.gif

 

Der Fixbereich umfasst hier die oberen 13 Excel-Zeilen.

Das zentrale Steuerelement ist die unscheinbare Combobox links über der 4. Excelzeile.

 

 

Zitat

...

Deine 4 Testspiele mit echtem Geld weisen eher in Richtung (Gleichsatz-)Minus, denn der Saldo ist nur der Martingale geschuldet.

Wie gefährlich sowas ist, muss ich Dir sicher nicht herbeten.

Mein Vorschlag wäre deshalb, lass die Martingale weg.

Entweder bringt die Prognose einen Gewinn, oder sie ist untauglich.

 

Es ist alles nur der Sache geschuldet und nicht persönlich!

 

 

Gruss vom Ego

 

Wenn Du auf die Pooltest-Tabelle in meinem Posting geschaut hättest, dann hättest Du gesehen, dass auch mit Masse egale und mit der d'Alembert grüne Gesamtsalden herauskommen.

Die Gefahren der Martingale kenne ich nur allzu gut, aber es gibt keine bessere Alternative.

Alle Pooltests in meinen ca. 400 Roulette-Simulationen haben das gezeigt. Ich habe da über die Jahre eine Menge ausprobiert.

 

Das Prognosemodell muss es bringen. Es muss eine solche Trefferdichte erzeugen, dass die MG ohne Zittern anwendbar ist.

Meine bisher programmierten Lernverfahren zeigen mir einen deutlichen Silberstreifen am Horizont. Das Konto zeigt es auch.

 

Entscheidend für das klassische Roulettespiel sind die Taktik- und Strategieregeln.

Wann setze ich aus, wann steige ich wieder ein, wann setze ich event. ein Paroli, wann überlagere ich, wann höre ich ganz auf oder wechsel den Tisch.

Der erfolgreiche Spieler hat solche Regeln verinnerlicht. (Newfish gehört zu dieser Gruppe.) Sie sind ganz schwer zu algorithmieren.

Ich habe so etwas noch in keinem Programm drin, bzw. ich habe es mit Selektionen zwischen verschiedenen Märschen versucht,

die zu meiner eigenen Verwunderung meist schlechter liefen als die Basismärsche.

 

In den EC-Simulationen ist das Mitführen der Gegenchancen eine sinnvolle taktische Maßnahme.

 

Dass Du Dein 'Herumkrittelnwollen' so in den Vordergrund stellst, finde ich nicht gut.

Das machen in diesem Forum doch fast alle. Neugier und Mitmachen wären produktiver.

 

Albert

 

bearbeitet von Dr. Manque
Ergänzung
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 11 Stunden schrieb Dr. Manque:

Ein GUI unter Excel zu machen ist das denkbar Einfachste.

Dir ist sicherlich klar, dass Dich Steve Jobs für so ein "Interface" öffentlich in Streifen hätte schneiden lassen.

 

vor 11 Stunden schrieb Dr. Manque:

Dass Du Dein 'Herumkrittelnwollen' so in den Vordergrund stellst, finde ich nicht gut.

 

Sorry, soll nicht wieder vorkommen.

Aber es dürfte zur Zeit vollkommen genügen, sich mit tkinter zu befassen, denn so einen unstrukturierten Haufen von Input kann man damit locker stämmen.

(Ups, kann nicht aus der Haut)

 

Fangen wir also mal ganz von vorne an.

Deinen ersten Entwurf habe ich etwas überarbeitet und alles ohne Funktion herausgeworfen.

Jetzt steht die Frage im Raum, wie man die Permanenz wieder löschen kann.

Siehe Zeile 31

 

import roulib01 as roul       # Unsere eigene Library V0.
import tkinter as tk
from tkinter import ttk
import os

ChArten = roul.Roulette_franz()  # Konstruktor, der eine Instanz mit frei wählbarem Namen erzeugt.

# globale Strings
hinweis01 = ["(Bitte Pfad oben eingeben)"]
fehler01 = ["Pfad ist üngültig!"]
fehler02 = ["keine Coup-Nr.!"]
fehler03 = ["Eingabe ungültig!"]

# Erzeuge eine Fenster-Instanz
win = tk.Tk()

# Füge einen Titel hinzu
win.title("Meine erste RouletteGUI")

# Enable resizing x-dimension, disable y-dimension
win.resizable(True, True)
win.geometry('800x300')

# Modul-globale Variable
# -----------------------------
lastcoup = 0
perm = []
couplist = []

def ResetPerm():
    perm = []  # hier sollte die globale Liste gelöscht werden, aber es wird eine neue lokal erzeugt.
    print("perm reset")

def read_Directory(path):
    txtfiles = []  # leere Liste der Dateinamen, wird nur lokal erzeugt!
    permfilecount = 0
    try:
        # Die Dateinamen einsammeln
        for filename in os.listdir(path):
            txtfiles.append(filename)
            permfilecount = permfilecount + 1

    except:
        print('Not found: Dir=' + path)
        txtfiles = fehler01

    print(str(permfilecount) + ' Permfiles gefunden')
    return txtfiles  # Dateiliste zurückgeben (ist leer für ungültige und leere Pfade).


def click_FillCombo(entry):
    fileliste = read_Directory(dirtext.get())  # ruft Dateiliste für aktuellen dirtext ab
    combo_1['values'] = fileliste  # Die Combobox befüllen
    combo_1.current(0)


def print_filename():
    fn = dirtext.get()
    fn += "\\"
    fn += combo_1.get()  # angeklickte Datei anhängen
    print(fn)  # Anzahl der Perms wird angezeigt

    # Die Perm mit allem Drum und Dran in die Liste lines einlesen
    # ----------------------------------------------------------------
    file = open(fn)
    lines = file.readlines()
    print(str(len(lines)) + " Permlines gefunden.")
    file.close()

    # Die Listen perm und couplist füllen, dabei die Textzeilen aus lienes abtrennen
    # ---------------------------------------------------------------------------------
    x = 0
    tx = 0

    for each in lines:
        ti = lines[x].rstrip()  # Escapes und Blanks herausnehmen

        try:
            i = int(ti)
            #            print(i)
            perm.append(i)  # der perm[]-Vektor wird gefüllt

            cp = roul.Coup()  # eine neue Coup-Instanz
            # die Attribute aktualisieren
            cp.pl_nr = i
            cp.ec_SR = ChArten.ec_RS[i]
            cp.ec_GU = ChArten.ec_UG[i]
            cp.ec_MP = ChArten.ec_TH[i]
            #            cp.dc_KO = ChArten.dc_col[i]
            #            cp.dc_DU = ChArten.dc_duz[i]
            #            cp.c6_TVS = ChArten.c6_tvs[i]
            #            cp.c12_TVP = ChArten.c12_tvp[i]
            # ein paar Testausgaben
            #            print(str(cp.pl_nr) + "  " + str(cp.ec_SR) + "  " + str(cp.ec_GU)) # nur Testanzeige
            couplist.append(cp)  # die Couptabelle wird gefüllt

        except:
            tx += 1  # nichtnumerische Zeilen zählen
        #            print("Textzeile:" + ti)

        x += 1

    sizePerm = len(perm)  # Anzahl der Permzahlen
    # Anzeige der Textzeilen und Permzahlen in label6
    label6.configure(text=(str(tx) + " Textzeilen, " + str(sizePerm) + " Permzahlen"))


def callback(entry):  # universelle Ausgabe, als temporäre Debugfunktion
    print_filename()

    lastcoup = roul.Coup.counter
    print(str(lastcoup) + " Coup-Objekte angelegt")


def entry1_return(event):
    try:
        i = int(entry1.get())
        #    if i<0 or i>36:

        print(i)
        perm.append(i)  # der perm[]-Vektor wird gefüllt
        cp = roul.Coup()  # eine neue Coup-Instanz
        # die aktuellen Attribute holen
        cp.pl_nr = i
        cp.ec_SR = ChArten.ec_RS[i]
        cp.ec_GU = ChArten.ec_UG[i]
        cp.ec_MP = ChArten.ec_TH[i]
        # ein paar Testausgaben
        print(str(cp.pl_nr) + "  " + str(cp.ec_SR) + "  " + str(cp.ec_GU))  # nur Testanzeige
        couplist.append(cp)  # die Couptabelle wird gefüllt
        label6.configure(text=(str(len(perm)) + " Permzahlen"))  # neue Perm-Anzahl anzeigen
        label7.configure(text=(str(i) + " angefügt"))  # neue Permzahl anzeigen
    except:
        label7.configure(text=fehler03)


def entry1_del(event):
    entry1.delete(0, 'end')


# Eingabefeld für Permzahlen
entry1 = tk.Entry(win, width=40)  # win, width=4, textvariable=PZahl)
# entry1.bind('<Return>', on_change)
entry1.bind("<Escape>", entry1_del)
entry1.bind("<Return>", entry1_return)
entry1.grid(column=1, row=3)
entry1.focus()  # Setze den Cursor in die Textbox

# Eingabefeld für dirname
name = tk.StringVar()
dirtext = ttk.Entry(win, width=40, textvariable=name)
dirtext.grid(column=1, row=4)
dirtext.bind("<Return>", click_FillCombo)

# Eine Combobox anlegen
# Eine ComboBox hinzufügen
combo_1 = ttk.Combobox(win, width=37, values=hinweis01)
combo_1.grid(column=1, row=5)
combo_1.current(0)
combo_1.bind("<<ComboboxSelected>>", callback)  # callback als Baustellenschild :)

# Textfelder (Labels) hinzufügen
# ----------------------------------------------------
label1 = ttk.Label(win, text="Enter a Plein-Nr. & Return:")
label1.grid(column=0, row=3)

# 2 Überschriftszeilen
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)

# Labels hinzufügen
label4 = ttk.Label(win, text="Click on an entry:")
label4.grid(column=0, row=5)

# Labels hinzufügen
label5 = ttk.Label(win, text="Permpool-Directory:")
label5.grid(column=0, row=4)

# Labels hinzufügen
label6 = ttk.Label(win, width=40, text='Anzeigen')
label6.grid(column=2, row=5)

# Labels hinzufügen
label7 = ttk.Label(win, width=40, text='Next Plein')
label7.grid(column=2, row=3)

# Buttons hinzufügen
# --------------------------------------------------------
action1 = ttk.Button(win, text="Reset Perm", command=ResetPerm)
action1.grid(column=0, row=2)
# action1.configure(text="NO!")

# ==================
#  GUI-Start
# ==================
win.mainloop()

 

Ausserdem kommen bei mir komische Meldungen nach dem Import einer Perm-Datei, wo ca 2000 Zeilen in 4000 Coups enden..

Es wird dringend Zeit, eine Ausgabe der gelesenen Permanenz zu erzeugen.

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Meine Importfunktion funktioniert schon fehlerfrei, auch wenn in der Datei Beiwerk wie Disclaimer oder Statistiken herumlungern.

Die hat aber noch kein GUI.

 

Daher dürfte es auch weiterhin schwierig sein, mit mir zusammenzuarbeiten, denn ich lasse kein gutes Haar an Dir.

Im Gegenzug solltest Du danach trachten, mir alle Haare auszurupfen, derer Du habhaft werden kannst.

 

Nur so kommen wir maximal schnell vorran.

 

bearbeitet von Egoist
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Ego,

 

1.

den py-Quelltext aus dem vorigen Posting habe ich kopiert und angetestet.

Es fängt gut an, die Combobox wird gefüllt, aber nach dem Click auf ein Entry wird die Klasse  'Coup' vermisst,

die ja in Deine Version nicht mehr reingehört.

Da fehlt ein Import oder die Anweisung muss raus.

 

2.

"Es wird dringend Zeit, eine Ausgabe der gelesenen Permanenz zu erzeugen."

Ja, dann mach' mal.

Es müsste wohl ein scrollbares Listenobjekt sein, das auch Tupel abbilden kann.

(Unter Excel hat man die vielfältigen Dienste der Tabellen mit ihren Zellen zur Hand!)

 

3.

"Daher dürfte es auch weiterhin schwierig sein, mit mir zusammenzuarbeiten, denn ich lasse kein gutes Haar an Dir.

Im Gegenzug solltest Du danach trachten, mir alle Haare auszurupfen, derer Du habhaft werden kannst."

Wie kann man nur so einen Mist schreiben? Das ist ja fast Newfish-Niveau.

Entweder man will Zusammenarbeit, dann aber bitte ohne Vorbehalte.

Warum soll da etwas schwierig sein, wenn man die Zusammenarbeit will?

Willst Du es künstlich "schwierig" machen?

Wahrscheinlich ist dieser blöde Satz ironisch gemeint?

Dass man sich gegenseitig die Programmier- und Denkfehler anzeigt und sich dabei immer ehrlich, hilfreich und gut benimmt,

das ist doch der einzige Sinn und Zweck der Kooperation.

 

4.

"Dir ist sicherlich klar, dass Dich Steve Jobs für so ein "Interface" öffentlich in Streifen hätte schneiden lassen."

Da stimme ich Dir voll zu! 

Aber vergiss nicht, dass, wie gesagt, unter Excel eine Oberfläche super einfach und schnell zu machen ist,

die auch sofort perfekt funktioniert.

Wenn ich an das Gewürge mit tkinter denke, wird mir ganz übel.

 

Hattest Du nicht vor einiger Zeit geschrieben, dass "ein User Interface keinen Informationsinhalt hat"?

Da stimme ich Dir auch zu!

Aber man braucht halt ein GUI, sonst kann man nicht vernünftig testen.

Und wichtig ist, dass unser beider Testumgebungen kompatibel sein müssen, sonst können wir keinen Code austauschen!

Also tkinter scheidet für mich völlig aus!!!

Ich habe mir ja pyQt runtergeladen. Dazu gibt es das gute Tutorial, dessen Link Du hier eingestellt hast.

Mir fehlt für ca. 1 Woche die Zeit, um mich damit zu beschäftigen.

 

Ich muss mich um mein neues "EC-BinärFigurenLearn" kümmern und versuchen, damit etwas Kohle zu machen.

Mich wundert, dass Du zu dem Lernmodell, das u.a. Deine Gedanken umsetzt, bisher nichts gesagt hast.

Dafür ist plötzlich das Sch...tkinter en vogue - versteh' einer die Leute.

 

Kopf hoch und weiter!

Albert

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Egoist @Dr. Manque  ich würde gerne mich beteiligen. Noch bin am erraten wo die Reise hingeht. 

Ich stelle mir eine Oberfläche vor die 

A. Daten hochladen lässt 

B filtert .verarbeitet. Und ausgibt. Nur wie flexibel soll oder muss das sein)?? 

C.Auf einer. guIi die sich gewaschen hat. Lieber Egoist Kritik ist frustrierend jedoch hilfreich wie auch in diesem Fall gut gemeint. Das muss ich jeden unterstellen der sich die Mühe macht zu kritisieren . Viel schlimmer wäre es wäre egal was man machte. Und gui sind sehr anstrengend. Wie lange hat MS dafür gebraucht um Windows bedienbar zu machen? Siehe MS Vista,))) 

 

 Gruss ht

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 7 Stunden schrieb onoio:

@Egoist @Dr. Manque  ich würde gerne mich beteiligen. Noch bin am erraten wo die Reise hingeht. 

Ich stelle mir eine Oberfläche vor die 

A. Daten hochladen lässt 

B filtert .verarbeitet. Und ausgibt. Nur wie flexibel soll oder muss das sein)?? 

C.Auf einer. guIi die sich gewaschen hat. Lieber Egoist Kritik ist frustrierend jedoch hilfreich wie auch in diesem Fall gut gemeint. Das muss ich jeden unterstellen der sich die Mühe macht zu kritisieren . Viel schlimmer wäre es wäre egal was man machte. Und gui sind sehr anstrengend. Wie lange hat MS dafür gebraucht um Windows bedienbar zu machen? Siehe MS Vista,))) 

 

 Gruss ht

Hallo onoio,

 

obiger Text lässt ziemlich eindeutig darauf schliessen, dass Du Dir die Beiträge #5 bis #7 in

https://www.roulette-forum.de/topic/18480-lernfähige-roulettesysteme-ec-summentendenz-learn/?tab=comments#comment-393176

gar nicht richtig angeschaut hast.

Das ist eine allgemeine Krankheit in diesem Forum. Die meisten User können nur maximal 5 deutsche Hauptsätze lesen - und diese oft nicht einmal verstehen.

Darum sind hier die meisten Beiträge nur kurz - wie Deine Beiträge alle auch.

 

Die Urschleim-Kriterien für eine Bedieneroberfläche, die Du aufzählst, werden von meiner Excel-VBA-Oberfläche,

die auf den ersten 13 Zeilen der Cockpit-Tabelle liegt, voll erfüllt. Sonst könnte ich damit gar nicht testen.

Und wenn Änderungen/Erweiterungen anstehen, dann sind diese in 10 Minuten getan.

 

Nun zeig' erstmal, dass so etwas auch in PHP geht (- ich nehme stark an, dass es in PHP gut geht -), dann reden wir weiter.

Damit alles ganz klar ist, liste ich die notwendigen Oberflächenelemente auf:

 

1. Ein virtuelles Tableau zum Einklicken von Zahlen.

2. Eine Combobox für die Permfile-Namen in austauschbaren Verzeichnissen.

3.Textfelder für Eingaben und Meldungen.

4. Zahlenfelder für numerische Parameter.

5. Schalter und/oder Optionbuttons für Testvarianten.

7. Ganz wichtig sind die Buttons, mit denen man Funktionen anstösst.

8. Sehr wichtig: eine Anzeige-Tabelle (gegittertes Listenfeld?) für die Sätze und Abrechnungen.

 

Klick mal bitte unter PHP eine solche Oberfläche zusammen und zeige sie hier. Es muss überhaupt kein Inhalt dahinter sein.

Du brauchst natürlich Beschriftungen. Die kannst Du aus meinem Beispiel im Posting v. 21.10.2018, 01:19 Uhr übernehmen.

Wenn Du ein solches Machwerk in relativ kurzer Zeit zustande bringst, dann steige ich auf PHP um - noch vor dem Umstieg auf Python.

 

Albert

 

bearbeitet von Dr. Manque
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 2 Stunden schrieb onoio:

He @Egoist ich habe es jetzt verstanden , )  @Dr. Manque  was macht dich denn so sauer.  Bei so einem Ton hat man wirklich keine Lust mit mir zu arbeiten. I decline. 

Ht i

Hallo onoio,

 

Wie kommst Du darauf, dass ich sauer bin? Das ist nicht im Geringsten der Fall!

Aber nach meiner Beteiligung in Rouletteforen seit 2006, also seit 12 Jahren, bin ich in der Ausdrucksweise direkter und barscher geworden - das stimmt.

Eine Menge negativer Erfahrungen stecken dahinter.

 

Die rein fachliche Frage, die ansteht, ist:

Schaffst und machst Du die von mir skizzierte Bedieneroberfläche in PHP?

 

Albert

Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 22.10.2018 um 16:28 schrieb Dr. Manque:

Hallo Ego,

 

1.

den py-Quelltext aus dem vorigen Posting habe ich kopiert und angetestet.

Es fängt gut an, die Combobox wird gefüllt, aber nach dem Click auf ein Entry wird die Klasse  'Coup' vermisst,

die ja in Deine Version nicht mehr reingehört.

Da fehlt ein Import oder die Anweisung muss raus.

 

Grüss Gott Herr Doktor,

 

bitte bedenke, dass es sich um Dein Programm handelte, welches ich nur etwas aufpoliert hatte.

Natürlich habe ich dazu auch Deine "Coup"-Klasse in "roulib01.py" übernommen, durfte ich das nicht?

 

Zitat

2.

"Es wird dringend Zeit, eine Ausgabe der gelesenen Permanenz zu erzeugen."

Ja, dann mach' mal.

Es müsste wohl ein scrollbares Listenobjekt sein, das auch Tupel abbilden kann.

(Unter Excel hat man die vielfältigen Dienste der Tabellen mit ihren Zellen zur Hand!)

 

Das ist geplant, aber ich wurde heute davon abgehalten, s.u.

Excel werden wir aber nicht nachprogrammieren...

 

Zitat

3.

"Daher dürfte es auch weiterhin schwierig sein, mit mir zusammenzuarbeiten, denn ich lasse kein gutes Haar an Dir.

Im Gegenzug solltest Du danach trachten, mir alle Haare auszurupfen, derer Du habhaft werden kannst."

Wie kann man nur so einen Mist schreiben? Das ist ja fast Newfish-Niveau.

 

Für so einen Vergleich mit Newfish kann man auch mal ganz fix auf einer Ignoreliste landen.

 

Keine Bange, ich habe keine.

 

Zitat

Entweder man will Zusammenarbeit, dann aber bitte ohne Vorbehalte.

Warum soll da etwas schwierig sein, wenn man die Zusammenarbeit will?

Willst Du es künstlich "schwierig" machen?

 

Meine Bemerkung war eher so gemeint, dass ich mich der Herausforderung stellen wollte, mit Dir weiterhin zu kommunizieren.

Dir scheint Deine Aussenwirkung nicht wirklich klar zu sein.

Mit mir ist normalerweise recht gut Kirschen essen, nur wenn ungerechtfertigte Kritik kommt, werde ich ironisch.

 

Zitat

Wahrscheinlich ist dieser blöde Satz ironisch gemeint?

Dass man sich gegenseitig die Programmier- und Denkfehler anzeigt und sich dabei immer ehrlich, hilfreich und gut benimmt,

das ist doch der einzige Sinn und Zweck der Kooperation.

 

100%ige Zustimmung.

Zitat

4.

"Dir ist sicherlich klar, dass Dich Steve Jobs für so ein "Interface" öffentlich in Streifen hätte schneiden lassen."

Da stimme ich Dir voll zu! 

Aber vergiss nicht, dass, wie gesagt, unter Excel eine Oberfläche super einfach und schnell zu machen ist,

die auch sofort perfekt funktioniert.

Wenn ich an das Gewürge mit tkinter denke, wird mir ganz übel.

 

So schlimm ist das mit tkinter doch gar nicht.

Wenn Du Dich mit Qt auseinandersetzt, werden Dir auch da üble Nachteile auffallen.

Heute habe ich mich über Punkt 1 Deiner GUI-Liste für @onoio hergemacht und einen Dialog mit 37 Pushbuttons mit der Maus zusammengeklickt.

Der soll den Benutzer zukünftig davon abhalten, seine Maus loszulassen um blitzschnell die Perm über den Nummernblock einzuhacken ;) 

 

Ist soweit fertig, aber ich kriege Schreikrämpfe, wenn ich feststelle, dass die Buttons mit TAB in der falschen Reihenfolge aktiviert werden.

Das lässt sich nachträglich nicht mehr ohne EDIT im XML korrigieren.

 

Dann hat PyQt den Nachteil, dass man die Ergebnisdatei nur einmal nach Python übersetzen kann, wenn man den Inhalt danach verändert.

Also alle Anbindung an das eigene Programm geht verloren, wenn später im Designer noch was verändert wird.

 

Glücklicherweise kann man die XML-Datei aber auch zur Laufzeit importieren und vom eigenen Programm auf die Namen der Widgets verweisen.

 

Zitat

Hattest Du nicht vor einiger Zeit geschrieben, dass "ein User Interface keinen Informationsinhalt hat"?

Da stimme ich Dir auch zu!

 

Ich hatte nicht "keine", sondern "wenig" geschrieben. Stelle Dir den Zustand aller Textfelder, Radiobuttons, Schalter, Comboboxen etc vor.

Dann stelle Dir vor, wie die Ausgabe dieser Info in eine Textdatei aussehen würde, aus der man die Eingaben später wieder erzeugen könnte.

 

Das ist der Informationsgehalt den der User eingefüttert hatte.

 

Dann stelle Dir mal ein Programm vor, welches solche Textdateien automatisch erzeugt und diese als neue Eingabe verfüttert.

Siehst Du da gar keine Vorteile?

 

Momentan stellst Du einen Pool händisch zusammen und testest mit Lernphasen von x-Coups Vorlauf.

Dann prüfst Du den Pool mit x+1 und x-1 usw.

Ein Inputgenerator könnte Dir alles abnehmen, mit einer Schleife von x=1 bis x=100, das ganze auch noch 100x mit 100 verschiedenen Pools...

Deine Maus hätte Urlaub und Dein Enkel einen Opa.

 

Zitat

Aber man braucht halt ein GUI, sonst kann man nicht vernünftig testen.

Und wichtig ist, dass unser beider Testumgebungen kompatibel sein müssen, sonst können wir keinen Code austauschen!

 

s.o.

 

Zitat

Also tkinter scheidet für mich völlig aus!!!

 

Aha, und auf welcher profunden Erkenntnis basiert diese doch recht eindeutige Entscheidung?

 

Zitat

Ich habe mir ja pyQt runtergeladen. Dazu gibt es das gute Tutorial, dessen Link Du hier eingestellt hast.

Mir fehlt für ca. 1 Woche die Zeit, um mich damit zu beschäftigen.

 

Dann mach mal erst damit Erfahrungen.

Natürlich wird nichts Deiner gewohnten VBA-Umgebung entsprechen, was wir im Pythonlager finden.

Aber Python ist stark in der Verarbeitung von Textfiles, es würde mich nicht wundern, wenn schon jemand einen VBA to Python Converter geschrieben hätte.

 

 

Zitat

Ich muss mich um mein neues "EC-BinärFigurenLearn" kümmern und versuchen, damit etwas Kohle zu machen.

 

Da kann ich nur die Daumen drücken, aber riskiere nicht zu viel!

 

Zitat

Mich wundert, dass Du zu dem Lernmodell, das u.a. Deine Gedanken umsetzt, bisher nichts gesagt hast.

Dafür ist plötzlich das Sch...tkinter en vogue - versteh' einer die Leute.

 

Ich war nicht sehr fleissig bei der Sache, denn ich habe mich sehr breit informiert (bis verzettelt).

Und Deine Wünsche in Sachen GUI lenken auch immer wieder ab.

 

Ich habe nun aber einen Account bei Github angelegt, dort sollen die Quelltexte dann einfacher zum Download bereitliegen.

 

 

Gruss vom Ego

bearbeitet von Egoist
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 6 Stunden schrieb Dr. Manque:

 

Die rein fachliche Frage, die ansteht, ist:

Schaffst und machst Du die von mir skizzierte Bedieneroberfläche in PHP

 

Ja,, wenn wir uns auf einen respektvollen Ton. Ich mag Kommentare nicht, die die eigene coolness präsentieren sollen.  Diese halten mich auch davon ab Themen von a-,z durch zu lesen. Es eine nervige Unsitte der foren witzig sein zu müssen. 

Sachlich darfst du dir eine Formular im weg vorstellen nichts anderes ist php. Es die stopp&#33; Sprache vieler Webserver . Vom syntax nicht komfortabel.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 10 Minuten schrieb Egoist:

Account bei Github angelegt, dort sollen die Quelltexte dann einfacher zum Download

 

Ausgezeichnet!!!  Besser als ftp. Jetzt fällt es mir wieder ein , da php vom syntax nervig ist  phyton ich nicht kenne hatte ich mal rubi on rails genutzt,  wer frustriert ist...Nur ein Gedanke. Solange bleibt bei phyton.

Meine Mitarbeit kann nur eine parallel Arbeit sein.

vor 30 Minuten schrieb Egoist:

XML-Datei a

Lassen sich mit jedem Browser lesen und per xsl Datei in schönen Tabellen umwandeln..

vor 25 Minuten schrieb Egoist:

Inputgenerator könnte Dir alles abnehmen, mit einer Schleife von x=1 bis x=100, das ganze auch noch 100x mit 100 verschiedenen Pools...

 

Obacht , eine generierte Liste ist nicht das gleiche wie die Originale , aber zu Tests völlig ausreichend, so meine Erfahrung 

 

Gruss 

Ht

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 22 Stunden schrieb onoio:

Ich stelle mir eine Oberfläche vor die 

A. Daten hochladen lässt 

B filtert .verarbeitet. Und ausgibt. Nur wie flexibel soll oder muss das sein)??

 

Hallo @onoio

 

eine Oberfläche muss nach meinem Verständnis dem Benutzer ein Angebot machen, was auf der Speisekarte steht.

Dann muss sie den Ober simulieren, der die Bestellung aufnimmt.

Heraus kommt der Zettel, den der Ober in der Küche abgibt, die macht dann den Output.

 

Der Ober muss dann noch sehen, dass alles richtig zugestellt wird, sonst ist der Gast nicht zufrieden.

 

 

Gruss vom Ego

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 12 Minuten schrieb Egoist:

meinem Verständnis dem Benutzer ein Angebot machen, was auf der Speisekarte steht.

Dann muss sie den Ober simulieren, der die Bestellung aufnimmt.

Heraus kommt der Zettel, den der Ober in

 

... Ausgezeichnet. Verständlicher geht es kaum.  Das ist der. Nachteil von nur php. Für die Trennung von Gast, Kellner und Küche  braucht man zusätzlich ein framework  oder rubi on rails.  Das bietet die Trennung out off the box. 

bearbeitet von onoio
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 9 Minuten schrieb onoio:

 

... Ausgezeichnet. Verständlicher geht es kaum.  Das ist der. Nachteil von nur php. Für die Trennung von Gast, Kellner und Küche  braucht man zusätzlich ein framework  oder rubi on rails.  Das bietet die Trennung out off the box. 

 

Von php habe ich leider aktuell keinen Plan, wenn es sein muss, schaue ich mir das mal an.

Ich würde die Trennung bei dem Zettel machen, den der Ober am Tisch kritzelt.

 

Die richtige Arbeit läuft in der Küche, die hat auch keine Oberfläche, die jemand sehen soll.

Das Restaurant mit sauberen schönen Tischen und lauschiger Beschallung, Beduftung und freundlicher Begrüssung, hat so gar nichts mit der Qualität der Küche zu tun.

Der Umfang der Karte lässt allenfalls erahnen, wieviel davon wohl aus der Tiefkühlung kommen muss...

 

Die nächste Abstraktionsstufe bereitet das Elaborat der Küche nun mit Wunderkerzen und sonstigem Schnickschnack am Tisch auf...

Wer will, zieht da auch noch eine Frischzellenkur ein.

 

Und Rubi, au Backe, das klingt nach tagelangen Recherechen...

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor einer Stunde schrieb Egoist:

 

Und Rubi, au

 

 Wenn phyton gefällt bleibt dabei  Wer sich für php interessiert,  welches ausgezeichnet gut dokumentiert ist sollte sich symfony ansehen dies bietet das Restaurant . Der Koch bleibt php.

Da kann ich mitreden und aktive helfen. 

Symfony ist wie rubi nur etwas aufwendiger. 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 24.10.2018 um 03:17 schrieb Egoist:

Hallo Ego,

 

alles Persönliche lassen wir mal weg.

Am 24.10.2018 um 03:17 schrieb Egoist:

 

So schlimm ist das mit tkinter doch gar nicht.

Wenn Du Dich mit Qt auseinandersetzt, werden Dir auch da üble Nachteile auffallen.

Heute habe ich mich über Punkt 1 Deiner GUI-Liste für @onoio hergemacht und einen Dialog mit 37 Pushbuttons mit der Maus zusammengeklickt.

Der soll den Benutzer zukünftig davon abhalten, seine Maus loszulassen um blitzschnell die Perm über den Nummernblock einzuhacken ;) 

 

Ist soweit fertig, aber ich kriege Schreikrämpfe, wenn ich feststelle, dass die Buttons mit TAB in der falschen Reihenfolge aktiviert werden.

Das lässt sich nachträglich nicht mehr ohne EDIT im XML korrigieren.

 

Dann hat PyQt den Nachteil, dass man die Ergebnisdatei nur einmal nach Python übersetzen kann, wenn man den Inhalt danach verändert.

Also alle Anbindung an das eigene Programm geht verloren, wenn später im Designer noch was verändert wird.

 

Glücklicherweise kann man die XML-Datei aber auch zur Laufzeit importieren und vom eigenen Programm auf die Namen der Widgets verweisen.

Schade, dass Du die 37 Buttons nicht im Gitter halten konntest.

Ich werde es trotzdem auch noch probieren.

 

Die Crux beim tkinter ist ja, dass es seine eigenen Positionierungsregeln verfolgt, gegen die ich bisher kein Mittel gefunden habe.

Die Beispiele im Internet sind immer so einfach. dafür reicht tkinter aus.

 

Am 24.10.2018 um 03:17 schrieb Egoist:

Momentan stellst Du einen Pool händisch zusammen und testest mit Lernphasen von x-Coups Vorlauf.

Dann prüfst Du den Pool mit x+1 und x-1 usw.

Ein Inputgenerator könnte Dir alles abnehmen, mit einer Schleife von x=1 bis x=100, das ganze auch noch 100x mit 100 verschiedenen Pools...

Deine Maus hätte Urlaub und Dein Enkel einen Opa.

Was Du "Inputgenerator" nennst ist in meiner Excel-Oberfläche voll drin.

 

Am 24.10.2018 um 03:17 schrieb Egoist:

 

Ich habe nun aber einen Account bei Github angelegt, dort sollen die Quelltexte dann einfacher zum Download bereitliegen.

 

Gruss vom Ego

Ich bin in der Dropbox angemeldet.

Bis wir dies oder jenes benötigen vergeht noch einige Zeit.

 

Albert

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 20 Stunden schrieb Cheval20:

Ich lese hier nun als Stiller Leser schon lange mit.

Produziert dein EC Learn Plus?

Oder deine gepostete Zusammenarbeit mit Newfish?

Oder ist das nur ein Proll.

Hallo Cheval,

 

dass Du hier liest, kann nicht stimmen.

Die Fragen, die Du stellst, sind im Forum mehrfach beantwortet.

 

Stinksauer bin ich besonders wegen "Produziert dein EC Learn Plus?",

denn ich habe nicht nur die bisher getesteten Lernverfahren beschrieben, sondern auch die Ergebnisse bis hinunter zum Coup tabelliert.

 

Was Newfish betrifft: ja, er ist ein Proll, aber auch ein talentierter und erfolgreicher Gambler.

 

Hoffentlich liest Du in Zukunft gründlicher.

 

Albert

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 4 weeks later...
Am 25.10.2018 um 15:26 schrieb Dr. Manque:

Schade, dass Du die 37 Buttons nicht im Gitter halten konntest.

Ich werde es trotzdem auch noch probieren.

 

Hallo Albert,

 

am nächsten Tag habe ich herausgefunden, wie man die Buttons mit TAB einfach verketten kann, es gibt dafür einen Knopf im Designer.

Allerdings hat mich das ganze Zeug rund um ein GUI so abgeturned, dass ich jetzt wochenlang andere Sachen gemacht habe.

 

Nach wie vor halte ich ein GUI für entbehrlich. Vielleicht bin ich auch ein Fossil, denn als ich mit Computern anfing, gab es sowas noch nicht.

 

Python stammt auch noch aus einer Zeit, in der GUIs nicht so wichtig waren, daher wurde das nicht original eingebaut.

Früher bestanden Menüs noch aus Textlisten ala:

 

  1. Drücke "A" um alles zu löschen
  2. Drücke "L" um Datei zu laden
  3. Drücke "S" um Datei zu speichern
  4. Drücke "E" um Eintrag anzufügen
  5. Drücke "C" um Berechnung auszulösen
  6. Drücke "X" um zu beenden
  7. ...

 

Sowas bedient sich um Längen rascher als das ganz Mausgeschubse, wenn es in jedem Zwischenstand nur ein Dutzend Optionen gibt.

Und beim Programmieren ist es ebenfalls rasch gemacht, es interessiert nicht, wo welche Knöpfe wie zu klicken sind.

 

 

Ist aber nur die Meinung eines Fossils

Gruss vom Ego

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wie ist deine Meinung dazu?

Du kannst jetzt schreiben und dich später registrieren. Bereits registrierter Teilnehmer? Dann melde dich jetzt an, um einen Kommentar zu schreiben.
Hinweis: Dein Beitrag wird nicht sofort sichtbar sein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Neu erstellen...