Hallo,
ich habe eine Matrix berechnet. Jetzt möchte ich das Vergleichen mit einer Textdatei, die die Matrixwerte enthält. Oder allgemein, bspw. bei einer 3X3 Matrix möchte ich eingeben:
1 2 3
4 5 6
7 8 9
und das dann vergleichen mit einer Matrix, die in Python deklariert wurde.
Matrix mit Textdatei vergleichen
Das Problem ist, dass ich zwei unterschiedliche Formate habe. Zudem weiß ich nicht, wie ich eine Eingabe von drei Zeilen erzeuge in einer Variablen. Diese Variable soll dann mit einer in Python deklarierten Matrix 3*3 verglichen werden.
@Brando: Du musst halt Code schreiben der beide Werte in eine vergleichbare Form/Struktur bringt. Also beispielsweise den Dateiinhalt in die gleiche Struktur die Du als 3×3-Matrix bezeichnest. Wo aber keiner hier *genau* weiss was Du damit meinst. Zeig doch mal ein bisschen Code und Eigeninitiative.
Hier einmal mit widgets programmiert; weiß nicht ob die Matrizen richtig sind, und ob das Einlesen einer Vergleichsmatrix mit anschließendem Vergleich funktioniert. Habe Jupyter Notebooks noch nicht installiert. Der vorliegende Code schwebt deshalb etwas in der Luft
# GNU nano 2.2.6
File: ./home/pi/.ipython/profile_default/startup/la_scalar.py
# GNU nano 2.2.6
File: ./home/pi/.ipython/profile_default/startup/la_scalar.py
Code: Alles auswählen
from sympy.matrices import *
from sympy.printing import *
from IPython.display import display, HTML, Math, Latex, clear_output
from ipywidgets import widgets
from random import randint
text1 = widgets.Text()
button1 = widgets.Button(description="Auswerten")
button2 = widgets.Button(description="Neue Aufgabe")
x = Matrix()
y = Matrix()
latexWidget = widgets.Latex()
taskWidget = widgets.HTML()
taskWidget.value = "<b>Berechnen Sie:</b>"
mhbox1 = widgets.HBox((taskWidget, latexWidget))
mhbox2 = widgets.HBox((button1, button2))
def init_vectors(b):
global x, y, text1
x = Matrix(([randint(-20,20), randint(-20,20), randint(-20,20)]), ([randint(-20,20), randint(-20,20), randint(-20,20)]), ([randint(-20,20), randint(-20,20), randint(-20,20)]) )
y = Matrix(([randint(-20,20), randint(-20,20), randint(-20,20)]), ([randint(-20,20), randint(-20,20), randint(-20,20)]), ([randint(-20,20), randint(-20,20), randint(-20,20)]) )
text1.value = ""
display_task()
def display_task():
global x, y, latexWidget
clear_output()
a1 = latex(x)
a2 = latex(y)
a1 = a1.replace("left[", "left(")
a2 = a2.replace("left[", "left(")
a1 = a1.replace("right]", "right)")
a2 = a2.replace("right]", "right)")
str1 = "$\langle" + a1 + ", " + a2 + "\\rangle$"
latexWidget.value = str1
def evaluate(b):
global x, y, text1
z = x.dot(y)
clear_output()
display_task()
l = [ line.split() for line in text1.value]
if l==z:
display(HTML("<b><font color='green'>Richtig</font></b>"))
else:
display(HTML("<b><font color='red'>Falsch</font></b>"))
def exec_la_scalar():
init_vectors(button2)
button2.on_click(init_vectors)
button1.on_click(evaluate)
display(widgets.VBox((mhbox1, text1, mhbox2)))
Zuletzt geändert von Anonymous am Freitag 29. Januar 2016, 20:33, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
@Brando: Du hast da also einen Haufen Quelltext den Du noch gar nicht ausprobiert hast. Mach das doch erst einmal und dann isoliere das konkrete Problem, und zwar am besten so, dass man dafür möglichst wenig ”exotische” externe Abhängigkeiten hat. Dafür solltest Du erst einmal die Geschäftslogik von der GUI trennen, dann braucht man beispielsweise Jupyter Notebooks nicht zwingend.