kleine Mathe-Spielereien

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
OSWALD
User
Beiträge: 350
Registriert: Freitag 18. März 2022, 17:32

Blackack ,hier noch einmal und ein paar neue(sinnfreie)Daten dazu
jetzt mit Kopfzeile

Code: Alles auswählen


312	Laptop 	200	6	200	194	KU12	Fa. Schäfer 	LI1  	 ATLAS  
312	PC 	200	6	200	194	KU2	Fa. Paulusr 	LI2  	 Medeas  
310	Drucker	200	6	200	194	KU3	Fa. Wagner 	LI1  	EXpress  
310	Drucker	200	6	200	194	KU3	Fa. Wagner 	LI1  	EXpress  


[code]
OSWALD
User
Beiträge: 350
Registriert: Freitag 18. März 2022, 17:32

13.12.22
Übertragung der Datenbank- Tabelle von SQLITE 3 als CSV-Datei
in den Ordner ,in dem auch der Code für die Übertagung steht.
Jetzt mit numpy.

Die CSV-Datei 'Data' lautet

'Walter',' Hofmann ','Mannheim ',' Rosen','Müller',3000
'Werner','Obermeier','Darmstadt' ,' Bikenweg',' Schreiner',2700
'Paul','Wagner','Frankfurt ',' Hebler','Lehrer',3700
'Rosa','Will ','Würzburg','Brücken','Lehrerin',3300
'Holger','Brandl','Bamberg','Kloster','Hausmeister',2300
############################################

Das System meines PC: Windows 10 , übertragen auf Spyder 5

Gute Zeit Oswald

Code: Alles auswählen


import csv

# hier mit Semicolon
import numpy as np
arr = np.genfromtxt("data.csv", delimiter=":", dtype=str)
print(arr)

#hier mit Komma
import numpy as np
arr = np.genfromtxt("data.csv", delimiter=",", dtype=str)
print(arr)

#bitte das unterschiedliche Ergebnis beachten

####################################################
Ergebnis

runfile('C:/PYTHON310/ALLESCSVALLES/CSVVersuchyyyyyyyyyyyyyyyyy.py', wdir='C:/PYTHON310/ALLESCSVALLES')
["'Walter',' Hofmann ','Mannheim ',' Rosen','Müller',3000"
"'Werner','Obermeier','Darmstadt' ,' Bikenweg',' Schreiner',2700"
"'Paul','Wagner','Frankfurt ',' Hebler','Lehrer',3700"
"'Rosa','Will ','Würzburg','Brücken','Lehrerin',3300"
"'Holger','Brandl','Bamberg','Kloster','Hausmeister',2300"]

[["'Walter'" "' Hofmann '" "'Mannheim '" "' Rosen'" "'Müller'" '3000']
["'Werner'" "'Obermeier'" "'Darmstadt' " "' Bikenweg'" "' Schreiner'"
'2700']
["'Paul'" "'Wagner'" "'Frankfurt '" "' Hebler'" "'Lehrer'" '3700']
["'Rosa'" "'Will '" "'Würzburg'" "'Brücken'" "'Lehrerin'" '3300']
["'Holger'" "'Brandl'" "'Bamberg'" "'Kloster'" "'Hausmeister'" '2300']]

###############################################
Benutzeravatar
__blackjack__
User
Beiträge: 13061
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Und wieder fehlt offensichtlich die korrekte Angabe der Kodierung beim einlesen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
OSWALD
User
Beiträge: 350
Registriert: Freitag 18. März 2022, 17:32

:roll: Wenn sich der Leichtsinn einschleicht, ist das ein Warnzeichen.
Natürlich muss die CSV-Datei vorher immer sorgfätig bearbeitet werden.
Die Kopfzeile muss natürlich vorher immer eingetragen werden.


runfile('C:/PYTHON310/ALLESCSVALLES/CSVVersuchy.py', wdir='C:/PYTHON310/ALLESCSVALLES')


['Vorname,Nachname,Ort,Strasse,Beruf,Gehalt'
"'Walter',' Hofmann ','Mannheim ',' Rosen','Müller',3000"
"'Werner','Obermeier','Darmstadt' ,' Bikenweg',' Schreiner',2700"
"'Paul','Wagner','Frankfurt ',' Hebler','Lehrer',3700"
"'Rosa','Will ','Würzburg','Brücken','Lehrerin',3300"
"'Holger','Brandl','Bamberg','Kloster','Hausmeister',2300"]
Benutzeravatar
__blackjack__
User
Beiträge: 13061
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Das wird immer schlimmer, jetzt sind die Spalten nicht getrennt und die Kodierungsangabe fehlt schon wieder/immer noch. Und ' um Zeichenketten einzufassen sind in CSV eher ungewöhnlich. Die dafür üblichen " sind im Beitrag davor noch in den Daten vorhanden, das ist also auch falsch. Insgesamt ist ein Numpy-Array auch die falsche Datenstruktur. Das müsste mindestens ein Numpy-Record-Array sein, aber selbst dann ist das falsch, denn mit dem grössten Teil der Daten kann man überhaupt nicht rechnen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
OSWALD
User
Beiträge: 350
Registriert: Freitag 18. März 2022, 17:32

17.12.2022
Python und Isomorphismus Hochachtuell
z.t. kontroverse Ergebnisse
Zum Jahreswechsel Zeit zum Nachjndenken.
Anbei ein Code aus dem Internet zur Frage
'Isomorph oder nicht ?Mir foiel auf:
bei Zahlen : Palinddrome isomorph
bei Strings nicht
Gute Zeit OSWALD

Code: Alles auswählen


encoding = 'utf-8'

def ist_isomorph(s1,s2) : 
    if len(s1) != len(s2): 
        return False
     
    return [len(set(s1)),len(set(s2))] == 2 * [len(set(zip(s1,s2)))]
 
 
print("Vergleiche, ob  s1 und s2 isomorph sind   oder nicht") 
print()
beispiele = [('ABBA', 'OTTO'), ('PAPER', 'TITLE'), ('EGG', 'ADD'), ('BADC', 'BABA'), ('AAABA', 'ABAAA ')]
print()
 

for s1, s2 in beispiele:
    print('s1 = {}; s2 = {}  => {}'.format(s1, s2, ist_isomorph(s1, s2)))

#####################################################

beispiele =[('1357','7531'),('2445','5442') ,('123' ,'321') ,('334', '456'), ('4567239','9327654' )]

for s1,s2  in beispiele:
     print('s1 = {}; s2 = {}  => {}'.format(s1, s2, ist_isomorph(s1, s2)))
 
print("Aus   den Ergebnissen  ergibt    sich die Frage:")
print("Sind alle palindrome  isomprph , bei Zahlen JA ? bei Strings NEIN ??")


OSWALD
User
Beiträge: 350
Registriert: Freitag 18. März 2022, 17:32

17.12.22
Um sicher zu gehen, dass ich den Begriff 'Isomorph'
annähernd richtig verstanden habe.
Hier einige neue Zahlen . Alles korrekt ?

Code: Alles auswählen


beispiele = [("A+B" , "B+A" ),
             ("1+2"  , "2+1" ),
              ("1-2"  , "2-1" ),
             ("1+2+3+4+5" ,  "5+4+3+2+1"),
             ("1*2*3*4*5", "5*4*3*2*1")  ,
             ("2**5" , "2**4"),
             ("2**(1/2)" ,"2**(1/3)"),
             ("sin(0)","cos(1)")]

OSWALD
User
Beiträge: 350
Registriert: Freitag 18. März 2022, 17:32

18.12.22
Die unterschiedlichen Ergebnisse auch beim
Vergleich von diversen Funktionen sind plausibel.
Ist die Zuverlässigkeit des Programmes gewährleistet :?:

Code: Alles auswählen

Kein gleiches Muster für 2**(1/2) 2**(1/3)
sin(0) cos(1) haben das gleiche Muster
sin(1) tan(3) haben das gleiche Muster
Kein gleiches Muster für exp(2) log10(2)
exp(2) log(2) haben das gleiche Muster

OSWALD
User
Beiträge: 350
Registriert: Freitag 18. März 2022, 17:32

Code: Alles auswählen

 
Palindrom und Primzahlen
Bei der Primfaktorzerlegung  von Palindromen  ergeben sich  
die folgenden  Primzahlen, nur Primzahlen

1221                 :  3  * 11  * 37

123321               :   3   11    37   101

12344321             :   11  41    101  271 

1234554321           :    3   7     11   37    41    271

123456654321         :    3    7    11   13    37    239    4659

12345677654321       :   11   73   101  137   239    4649

Sicher  schon lange bekannt, bin heute  zufällig darauf  gestossen:-
Für längere Palindrome  reicht mein PC bzw Code  nicht aus.
Glaube aber , dass  die Ergebnisse  immer Primzahlen sein werden-
Wer weiss  mehr    darüber ?

Gute Zeit OSWALD
 

OSWALD
User
Beiträge: 350
Registriert: Freitag 18. März 2022, 17:32

OSWALD hat geschrieben: Donnerstag 22. Dezember 2022, 14:00

Code: Alles auswählen

 
Palindrom und Primzahlen
Bei der Primfaktorzerlegung  von Palindromen  ergeben sich  
die folgenden  Primzahlen  : 
1221                 :  3  * 11  * 37

123321               :   3   11    37   101

12344321             :   11  41    101  271 

1234554321           :    3   7     11   37    41    271

123456654321         :    3    7    11   13    37    239    4659

12345677654321       :   11   73   101  137   239    4649

Sicher  schon lange bekannt, bin heute  zufällig darauf  gestossen:-
Für längere Palindrome  reicht mein PC bzw Code  nicht aus.
Man erkennt ein bestimmtes Muter  bei eden  Primzahlen.
Allerdings  fehlt  eine Primzahl:         es   ist die 5. 
Bisher  konnte ich  diese Zahl  nicht finden.
Hängt das womöglich mit  unserem  Zahlensystem  (10)   zusammen ?

Gute Zeit OSWALD 

 
 

Benutzeravatar
__blackjack__
User
Beiträge: 13061
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@OSWALD: Da muss man nicht wirklich suchen, das sollte klar sein das Zahlen, die alle mit einer 1 enden, nicht durch 5 teilbar sind.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
OSWALD
User
Beiträge: 350
Registriert: Freitag 18. März 2022, 17:32

27.12.22
Heute ein erster Versuch eine GUI-Anwendung zu produzieren.
Leider ist es mir nicht gelungen, mehrere Menues zu erzeugen,
die auch erlauben daraus meine eigenen Funktionen
aufzurufen, etwa mit der Lambda-GFunktion.
Hier das Produkt.
OSWALD

Code: Alles auswählen


mport tkinter
from tkinter import *
 
from tkinter import ttk
import math
from math import *
import sys

  

w = Tk()
w.geometry("500x500+300+300")
w.title("                         D E R       R E C H N E R      von OSWALD ")
label1 = Label(w,text = "Hallo liebe Nutzer", padx = 10, pady=  4).pack()
label2 = Label(w,text = "", padx = 10, pady=  6).pack()
label3 = Label(w,text = "Fehlerhafte Einträge einfach korrigieren und weitermachen ",padx= 12,pady = 18).pack()
label4 =Label(w,text = " ",padx= 40,pady = 28).pack()
label5 = Label(w,text = " Auswertung beliebiger Terme  ", padx = 14, pady=  6).pack()
 


def evaluate(event):
 try: 
    res.configure(text = "Ergebnis: " + str(eval(entry.get())))
    zahl = int(z)
 except:
    sys.exit(0)
 
entry = Entry()
entry = Entry(w, width = 70 ) 
entry.bind("<Return>", evaluate)
entry.pack()
res = Label()
res.pack()
 
w.mainloop() 




OSWALD
User
Beiträge: 350
Registriert: Freitag 18. März 2022, 17:32

30.12.2022
Erneut Thema GUI-Anwendungen .
Aufruf von Apps aus dem Internet über
Button.Frames mit command und lambda-Befehlen.
Das vorliegende Progamm habe ich im
Internet gefunden. Ich will nun versuchen, das gleiche
Procedere über Menus und Buttons nachzuvollziehen.
Ein Gutes Neues Jahr OSWALD


Code: Alles auswählen



import subprocess
from tkinter import *

# Event handler
# start apps
def exec_app(app):
    # apps definieren die wir starten wollen
    apps = {
            "calc" : "C:/windows/system32/calc.exe",
            "paint" : "C:/windows/system32/mspaint.exe",
            "ie" : "C:/Program Files/Internet Explorer/iexplore.exe"
    }
    # per Argument übermittelten Prozess starten
    subprocess.Popen(apps[app])

#root des Fensters erstellen
root = Tk()
# Titel und minimale Größe des Fensters festlegen
root.title("Das ist eine Demo App")
root.minsize(width=250,height=50)
# Frame erstellen
frame = Frame(root)
frame.pack()
# Buttons erstellen
button1 = Button(frame,text="Start calc",command=lambda:exec_app("calc"))
button2 = Button(frame,text="Start paint",command=lambda:exec_app("paint"))
button3 = Button(frame,text="Start Internet Explorer",command=lambda:exec_app("ie"))
# Buttons platzieren
button1.pack(pady=10,padx=5,side=LEFT)
button2.pack(pady=10,padx=5,side=LEFT)
button3.pack(pady=10,padx=5,side=LEFT)
# Fenster-Loop starten
root.mainloop()

OSWALD
User
Beiträge: 350
Registriert: Freitag 18. März 2022, 17:32

03.01.2023
Hier der gleiche Code, mit nur einem Eintrag.
Unter 'Option Menue können weitere Einträge erfolgen.
Jetzt wird versucht auch Funktionen über Lambda zu
implementieren. Bin aber nicht sikcher, ob das möglich sein wird.
OSWALD

Code: Alles auswählen




import subprocess
from tkinter import *
# Event handler
# start apps
def exec_app(app):
    # apps definieren die wir starten wollen
    apps = {
            "Chrome" :"C:\Program Files\Google\Chrome\Application\chrome.exe" }            


    # per Argument übermittelten Prozess starten
    subprocess.Popen(apps[app])

#root des Fensters erstellen
root = Tk()
# Titel und minimale Größe des Fensters festlegen
root.title("Das ist eine Demo App")
root.minsize(width=250,height=50)
# Frame erstellen
frame = Frame(root)
frame.pack()

# OptionMenu
choices = ["Chrome",weitere Einträge möglich]
selection = StringVar(root)
selection.set("Chrome")
dd = OptionMenu(frame,selection, *choices)

# Button erstellen
button1 = Button(frame,text="Installation starten",command=lambda:exec_app(selection.get()))

# Steuerelemente platzieren
dd.pack(pady=10,padx=5,side=LEFT)
button1.pack(pady=10,padx=5,side=LEFT)

# Fenster-Loop starten
root.mainloop()
 


OSWALD
User
Beiträge: 350
Registriert: Freitag 18. März 2022, 17:32

Korrektur bei "Option Menue" notwendig
Oswald

Code: Alles auswählen

# OptionMenu
choices = ["Chrome","weitere Einträge möglich"]
selection = StringVar(root)
selection.set("Chrome")
dd = OptionMenu(frame,selection, *choices)


Benutzeravatar
Dennis89
User
Beiträge: 1152
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

schau dir mal im Unterforum "tkinter" ein paar Themen und Beispielcodes erfahrenen Programmier an und versuche dich gleich daran zu halten. Sonst endet das GUI-Programmieren womöglich schneller im Chaos als es dir lieb ist.

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
OSWALD
User
Beiträge: 350
Registriert: Freitag 18. März 2022, 17:32

8.01.2023
Einen Code zu schreiben, macht wenig Sinn ohne vorher
verstanden zu haben, was man schreiben will.
Dem Rat von Dennis89 zu folgen habe deshalb versucht,
zu begreifen wie das Prinzip von 'subprocess.run' funktioniert.
Von der Ebene des Hauptprozesses wird der Inhalt
des angegebenen Pfades auf eine, der vielen möglichen Sub-Ebenen
gebracht und angezeigt. Die nächste Aufgabe ist nun der Einbau in die
Command- Zeile eines Mennuebuttons.
Gute Zeit OSWALD

Code: Alles auswählen

import subprocess
subprocess.run(["C:\Program Files\Google\Chrome\Application\chrome.exe"] )
 
OSWALD
User
Beiträge: 350
Registriert: Freitag 18. März 2022, 17:32

10.1.2023
Nun ein erstes vollständiges Beispiel .
Aus drei Möglichkeiten kann gewählt werden.
Es ist vollständig aus dem Internet übernommen
und leicht übnerarbeitet.
Hier wird auch das Modul 'Canvas' und 'CALL' verwendet.
Jedenfalls ist dieses Beispiel sehr lehrreich.
Der richtige Pfad verhindert Frust.
GuteZeit OSWALD


Code: Alles auswählen



# -*- coding: cp1252 -*-
 
from tkinter import *
import subprocess
 
def comp():
     

    for i in range(3):
        subprocess.call(["C:/windows/system32/mspaint.exe"])
        #subprocess.call(["C:/windows/system32/calc.exe"])
        #subprocess.call(["C:/Program Files/Internet Explorer/iexplore.exe"])

def start():
    pop=Toplevel()
    pop.resizable(width=True, height=True)
    pop.grab_set()
    pop.focus_set()
    pop.title("PopUp")
    w=350
    h=250
    pop.geometry("%dx%d+%d+%d" %(w,h,(pop.winfo_screenwidth()-w)/2,(pop.winfo_screenheight()-h)/2))
 
    ca=Canvas(pop,bd=0,highlightthickness=0,bg='white')
    ca.pack(fill=BOTH, expand=1)
 
    cb=Canvas(ca,bd=0,highlightthickness=0,bg='white')
    cb.grid(row=0, sticky=N+S+E+W)            
 
    ca.grid_rowconfigure(0, weight=1)
    ca.grid_columnconfigure(0, weight=1)
        
    lb=Label(cb,text='ich bin jetzt auf popup',bg='yellow')
    lb.grid()
 
    comp()
    pop.destroy()
 
root=Tk()
root.title(                               "  Hier ein erstes Beispiel mit 'tkinter")
wt=root.winfo_screenwidth()
ht=root.winfo_screenheight()
w=600
h=450
root.geometry("%dx%d+%d+%d" % (w,h, (wt-w)/2, (ht-h)/2 ) )
 
# create a canvas with no internal border
can=Canvas(root,bd=0, highlightthickness=0)
can.pack(fill=BOTH, expand=1)
Button(can, text='Wenn der Pfad richtig gewählt ist, sollte es funktionieren',command=start).pack()
Button(can, text='Auf   Wiedersehen',command=root.destroy).pack()
 
root.mainloop()

/code]
OSWALD
User
Beiträge: 350
Registriert: Freitag 18. März 2022, 17:32

11.01.2023
Und nun, bevor es weiter geht, noch
ein kurzer Blick 'hinter die Kulissen',
also auf zwei verschiedene Ebenen.
Quod erat demonstrandum.
OSWALD

Code: Alles auswählen

import subprocess
import sys

code = "uft-8 "
result = subprocess.run ([ 'python3 ' ] , input=code, capture_output= True , encoding= 'UTF-8' )
print(result.stdout  )
print( result.stdout ) 
 
Benutzeravatar
__blackjack__
User
Beiträge: 13061
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Warum würde jemand von der undefinierten Variablen `uft` eine 8 abziehen wollen? Und wofür steht die Abkürzung `uft`?
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten