Seite 4 von 4

Re: Werte an ein Shell Script übergeben

Verfasst: Mittwoch 29. April 2015, 09:19
von Kalli87
@Sirius3: Was soll ich dazu sagen? Du hast in allem Recht und ich geb dir auch recht was das betrifft.

Laut Script wird man 2 mal gefragt ob man sich sicher ist mit dem was man tut. Zusätzlich wird auch noch eine Log-Datei angelegt mit dem Namen der Person die das ausgeführt hat.
Das berücksichtige ich schon mit Messageboxen. Was ich aber nicht machen kann ist das die Patienten-ID mit dem dazugehörigem Namen zu filtern bzw. anzuzeigen. Dazu bräuchte ich wieder Datenbankzugriff.

Zu deinem Mehrwert, ich kann die Patienten-ID´s nochmal anzeigen lassen bei den "blödsinnigen" Ja/Nein-Abfragen.

Ich versteh schon worauf du hinaus willst aber ich kann schlecht auf die Barrikaden steigen.

Re: Werte an ein Shell Script übergeben

Verfasst: Mittwoch 29. April 2015, 09:34
von Sirius3
@Kalli87: willst Du Programmierroboter sein, oder jemand, der Mängel anspricht und Lösungen dafür bietet? Ein guter Programmierer hinterfragt auch seine Randbedingungen. Was ist das wirkliche Problem, das es zu lösen gilt? Selbständig denken ist ja nicht gleichzusetzen mit "auf die Barrikaden steigen".
Vielleicht ärgern sich alle schon Jahrelang, dass sie die Namen zu den Nummern nicht angezeigt bekommen, wissen aber gar nicht, dass Abhilfe einfach möglich wäre. Beim Mergen müssen ja nicht nur Dateien kopiert, sondern auch die Datenbank angepasst werden. Woher kommen die Nummern? Gibt es vielleicht schon die Möglichkeit, die Nummern von dort direkt zu übernehmen. Als Programmierer muß man den gesamten Lösungsraum im Blick haben. Auch wenn man nicht alles im Detail verstehen kann, die groben Zusammenhänge müssen immer klar sein. Und aus allen Möglichkeiten ist es Deine Aufgabe, die beste zu finden und wenigstens ins Gespräch zu bringen.

Re: Werte an ein Shell Script übergeben

Verfasst: Donnerstag 30. April 2015, 09:06
von Kalli87
Grüße, mal kurz und einfach.

Wenn ich mehrere Entry-Felder habe und prüfen will ob was eingetragen ist oder nicht.
Kann ich doch alles in eine if-Abfrage packen.
z.B.

Code: Alles auswählen

if self.name.get() or self.alte_id.get() or self.neue_id.get() == "":
    tkinter.messagebox.showerror('Fehler', 'Daten wurden nicht vollständig angeben')
Wenn ich es so schreibe kommt jedes mal die Fehlermeldung bzw. die Messagebox, setze ich das ganze in eine Klammer:

Code: Alles auswählen

if (self.name.get() or self.alte_id.get() or self.neue_id.get()) == "":
    tkinter.messagebox.showerror('Fehler', 'Daten wurden nicht vollständig angeben')
Kommt keine Messagebox mehr egal ob ein Entry-Feld leer ist oder mehrere leer sind.

Gibts da ein trick?

Re: Werte an ein Shell Script übergeben

Verfasst: Donnerstag 30. April 2015, 09:37
von snafu
Schreib es lieber so:

Code: Alles auswählen

if not all(entry.get() for entry in {self.name, self.alte_id, self.neue_id}):
    tkinter.messagebox.showerror('Fehler', 'Daten wurden nicht vollständig angeben')
Bei deiner `or`-Variante ist das Verhalten nämlich ganz anders als du es vermutlich erwartest.

Re: Werte an ein Shell Script übergeben

Verfasst: Donnerstag 30. April 2015, 09:41
von Kalli87
danke snafu
und ja is richtig, hab es anders erwartet und war überfragt was schief läuft

Re: Werte an ein Shell Script übergeben

Verfasst: Donnerstag 30. April 2015, 10:14
von Sirius3
@Kalli87: "or" hat eine niedrigere Priorität als ==, und "a or b" liefert als Ergebnis a wenn a sich nicht zu False evaluiert sonst b.

Also bei Deiner ersten Variante ist die if-Bedingung erfüllt wenn entweder self.name nicht leer ist, self.alte_id nicht leer ist oder self.neue_id leer ist.

Mit Klammern wird zuerst die or evaluiert, also wenn self.name nicht leer ist, wird self.name mit dem leeren String verglichen, wenn self.alte_id, dann self.alte_id, sonst self.neue_id. Die if-Bedingung wird also nur erfüllt, wenn alle Felder leer sind.

@snafu: wenn man drei Elemente linear durchgeht, ist ein Set die falsche Datenstruktur, ein Tuple wäre wohl geeigneter.

Re: Werte an ein Shell Script übergeben

Verfasst: Donnerstag 30. April 2015, 12:07
von Hyperion
Sirius3 hat geschrieben: @snafu: wenn man drei Elemente linear durchgeht, ist ein Set die falsche Datenstruktur, ein Tuple wäre wohl geeigneter.
Stilistisch ja, aber rational sehe ich keinen Unterschied, wenn die Reihenfolge egal ist... :K (Bei einer Liste bliebe sogar die Reihenfolge gleich) Ob man "dann" von falsch sprechen kann, bezweifel ich aber doch.

Re: Werte an ein Shell Script übergeben

Verfasst: Donnerstag 30. April 2015, 12:21
von Sirius3
@Hyperion: falsch in dem Sinne, dass die Eigenschaften eines Sets gar nicht benutzt wird.

Re: Werte an ein Shell Script übergeben

Verfasst: Donnerstag 30. April 2015, 12:30
von /me
Kalli87 hat geschrieben:und ja is richtig, hab es anders erwartet und war überfragt was schief läuft
Bei Bedingungen wird nur überprüft, ob der Ausdruck an sich wahr ist. In der Dokumentation findest du unter Boolean Operations eine Aufzählung der Ausdrücke die als wahr oder falsch betrachtet werden.

Code: Alles auswählen

>>> bool(0)
False
>>> bool(2)
True
>>> bool('')
False
>>> bool('x')
True
Wenn du eine Verkettung mit or hast, dann wird so lange überprüft, bis ein Ausdruck wahr ist. Bei and wird überprüft bis ein Ausdruck falsch ist. Der letzte überprüfte Ausdruck wird dann zurückgegeben.

Code: Alles auswählen

>>> print(1 or 2 or 3)
1
>>> print(1 and 2 and 3)
3
>>> print([] or 2)
2
>>> print([] and 2)
[]
>>> print([1] or 2)
[1]
>>> print([1] and 2)
2

Re: Werte an ein Shell Script übergeben

Verfasst: Donnerstag 30. April 2015, 16:05
von snafu
Sirius3 hat geschrieben:@snafu: wenn man drei Elemente linear durchgeht, ist ein Set die falsche Datenstruktur, ein Tuple wäre wohl geeigneter.
Hatte ich dann auch gedacht. Aber ich musste weg. Daher gab's auch keine vernünftige Erklärung, warum die andere Variante nicht funktioniert hat.

Re: Werte an ein Shell Script übergeben

Verfasst: Donnerstag 30. April 2015, 16:07
von snafu
Hyperion hat geschrieben:
Sirius3 hat geschrieben: @snafu: wenn man drei Elemente linear durchgeht, ist ein Set die falsche Datenstruktur, ein Tuple wäre wohl geeigneter.
Stilistisch ja, aber rational sehe ich keinen Unterschied, wenn die Reihenfolge egal ist... :K (Bei einer Liste bliebe sogar die Reihenfolge gleich) Ob man "dann" von falsch sprechen kann, bezweifel ich aber doch.
Naja, es mag bei drei Elementen recht egal sein, aber z.B. das Hashen der Elemente ist ja völlig unnötig, wenn man sie linear durchlaufen will. Ich stimme da schon zu, dass ein Tupel sinnvoller wäre. Wobei ich dann eher eine Liste genommen hätte.