@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.
Werte an ein Shell Script übergeben
@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.
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.
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.
Wenn ich es so schreibe kommt jedes mal die Fehlermeldung bzw. die Messagebox, setze ich das ganze in eine Klammer:
Kommt keine Messagebox mehr egal ob ein Entry-Feld leer ist oder mehrere leer sind.
Gibts da ein trick?
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')
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')
Gibts da ein trick?
Schreib es lieber so:
Bei deiner `or`-Variante ist das Verhalten nämlich ganz anders als du es vermutlich erwartest.
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')
@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.
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.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
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.Sirius3 hat geschrieben: @snafu: wenn man drei Elemente linear durchgeht, ist ein Set die falsche Datenstruktur, ein Tuple wäre wohl geeigneter.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
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.Kalli87 hat geschrieben:und ja is richtig, hab es anders erwartet und war überfragt was schief läuft
Code: Alles auswählen
>>> bool(0)
False
>>> bool(2)
True
>>> bool('')
False
>>> bool('x')
True
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
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.Sirius3 hat geschrieben:@snafu: wenn man drei Elemente linear durchgeht, ist ein Set die falsche Datenstruktur, ein Tuple wäre wohl geeigneter.
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.Hyperion hat geschrieben: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.Sirius3 hat geschrieben: @snafu: wenn man drei Elemente linear durchgeht, ist ein Set die falsche Datenstruktur, ein Tuple wäre wohl geeigneter.