If var is empty, stay empty

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
dinemuatta
User
Beiträge: 6
Registriert: Freitag 9. Oktober 2015, 14:00

Heyho Hidiho.

Bin IT-Techniker und habe vor knapp nem Monat bei einer neuen Firma angefangen.

Die haben vor paar Monaten ein ERP-Programm gekauft in dem man mit Python kleine Scripts einfügen kann in Druckmustern.

Jetzt hab ich die Variable Stückpreis mit der Nummer 13.
Diese soll leer ausgegeben werden wenn die Variable Menge mit der Nummer 186 leer ist.
Ansonsten soll die Variable 13 ganz normal gedruckt werden.

Das Prob:
Ich war nie so der Coder. Wie gesagt IT-Techniker..

Das müsste also so ca aussehen oder?

if var186=empty
print nothing
else
print var13

Hoffe ihr könnt mir noch helfen :)
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@dinemuatta: die Wahrscheinlichkeit, dass jemand bei der Angabe "ein ERP-Programm" spontan weiß, um welches es sich handelt und sich damit auskennt, dürfte wohl sehr gering sein. Das Programm wird zudem wohl eine bestimmte API haben, mit dem man etwas in ein Druckmuster einfügen kann. Leer kann dann auch vieles sein. Solange man nicht zwischen leer und der Zahl 0 unterscheiden muß, geht die Prüfung aber per "if not var186:".
dinemuatta
User
Beiträge: 6
Registriert: Freitag 9. Oktober 2015, 14:00

Das funktioniert schon mit Angabe von der Variabelnummer. Und ich glaube man kann hier auch mit "0" arbeiten.
Es wurden schon einige Scripts angelegt nur gerade nicht so eines wie ich es brauche.

Problem eben ich bin ein totaler Kacknoob was Python angeht.
Somit wie genau müsste ich "if not var186:" jetzt benutzen?

Danke für die rasche Antwort
Benutzeravatar
Kebap
User
Beiträge: 687
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

dinemuatta hat geschrieben: Problem eben ich bin ein totaler Kacknoob was Python angeht.
Somit wie genau müsste ich "if not var186:" jetzt benutzen?
So ungefähr? :K

Code: Alles auswählen

if var186:
    print var13
Sei ein guter Kacknoob und lies ein Tutorial.
Zuletzt geändert von Kebap am Freitag 9. Oktober 2015, 14:44, insgesamt 1-mal geändert.
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
dinemuatta
User
Beiträge: 6
Registriert: Freitag 9. Oktober 2015, 14:00

So bis jetzt habe ich:

Code: Alles auswählen

menge1 = GetVarAsString (186)
preis1 = GetVarAsString (13)

if menge1 == 0:
   SaveString preis1 = (" ")
elif menge1 > 0:
   SaveString preis1
Jedoch spuckt er mir diesen Fehler aus:

Code: Alles auswählen

Fehler in Skript 'Preis1', Zeile 5:
    SaveString preis1 = (" ")
                    ^
SyntaxError: invalid syntax
Er mag glaube ich das Leerzeichen nicht?
Benutzeravatar
Kebap
User
Beiträge: 687
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

Schau mal, wie SaveString wirklich bedient werden muss. Syntax raten geht selten gut.
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
dinemuatta
User
Beiträge: 6
Registriert: Freitag 9. Oktober 2015, 14:00

besser so? :)

Code: Alles auswählen

menge1 = GetVarAsString (186)
preis1 = GetVarAsString (13)

if menge1 == 0:
   print preis1 (" ")
elif menge1 > 0:
   print preis1
Hier bringt er mir auch keinen Fehler mehr.
Jetzt muss es nur noch im Druck stimmen ansonsten meld ich mich nochmal.

Bzw werd ich sowieso noch öfters wies aussieht ^^
BlackJack

@dinemuatta: Nein, besser wäre es wenn Du Python lernen würdest und aufhören würdest zu raten.

Der erste ``if``-Zweig kann nie betreten werden weil eine Zeichenkette niemals gleich einer Zahl ist und beim ``elif`` ist es mehr oder weniger Zufall ob die Bedingung wahr ist weil dieser Vergleich einer Zeichenkette mit einer Zahl zwar während eines Programmlaufs immer gleich entschieden wird, aber nicht garantiert ist was grösser ist. Also entweder sind grundsätzlich alle Zeichenketten grösser als alle Zahlen, oder umgekehrt.
dinemuatta
User
Beiträge: 6
Registriert: Freitag 9. Oktober 2015, 14:00

Ja das hab ich auch grade bemerkt und natürlich konnte das nicht funktionieren.

Jetzt müsste doch alles stimmen oder? Zumindest läuft das Script ohne Probleme durch aber leider wird auf dem Ausdruck dann das Script statt der richtigen Ausgabe gedruckt.
(Übrigens die Nummer 13 wurde jetzt durch 210 getauscht)

Code: Alles auswählen

menge1 = GetVarAsFloat (186)
preis1 = GetVarAsFloat (210)

if menge1 < 1:
   print " "
elif menge1 > 0:
   print preis1
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Ohne Doku oder Beispiel Skripte wird dir da keiner helfen können.
dinemuatta
User
Beiträge: 6
Registriert: Freitag 9. Oktober 2015, 14:00

Hat sich erledigt aber danke trotzdem.

Hab mir aus paar anderen Druckmustern die Scripte angesehn und mal eins rauskopiert und angepasst und schwups hat gefunzt.

So siehts jetzt aus

Code: Alles auswählen

menge1 = GetVarAsFloat (186)
preis1 = GetVarAsFloat (210)

if menge1 > 0:
   SaveResult(preis1)
else:
   SaveResult (" ")
Antworten