Seite 1 von 1

Übergabeparameter in if abfrage ?!

Verfasst: Montag 15. Mai 2006, 08:34
von stigi
Moin

ehm ich hab 2 Parameter die ich bei Scriptaufruf mitgeb. diese beiden werte möchte ich in ner if-abfrage verwenden.

Code: Alles auswählen

import sys

param1 = sys.argv[1]
param2 = sys.argv[2]

wert1=raw_input()
wert2=raw_input() 

if (wert1 <= param1 or wert2 <= param2):
    print "in der schleife"
else:
    print "nicht in der schleife"
der code ist nur beispielhaft. bei mir isses jetzt so wenn ich jetzt z.b. 10 und 10 mitgeb wird das hallo trotzdem ausgegeben, wenn ich in der if anweisung anstatt param1 und param2 10 und 10 schreib funktionierts...
was is daran jetzt falsch ? :cry:

Re: Übergabeparameter in if abfrage ?!

Verfasst: Montag 15. Mai 2006, 08:38
von gerold
Hi stigi

Code: Alles auswählen

param1 = int(sys.argv[1])
param2 = int(sys.argv[2])
sys.argv[x] ist immer ein String. Du solltes Zahlen nur mit Zahlen vergleichen.

mfg
Gerold
:-)

Verfasst: Montag 15. Mai 2006, 08:40
von stigi
ohje danke ja :roll: ich finds lustig, ich hab grad mein posting nochmal durchgelesen und ich hatte mich da so unverständlich ausgedrückt, dass ich selber nicht mehr wusste was ich wollte lol :lol:
aber deine antwort hat mir zu 100% geholfen danke :D

kann ich daraus einfach

Code: Alles auswählen

param1 = int(sys.argv[1])
param2 = int(sys.argv[2])
machen oder ?

Verfasst: Montag 15. Mai 2006, 10:39
von Masaru
Joa, kannst du ... aber falls dann die übergebenen Parameter doch keine Integer sind (sondern z.B. Buchstabensalat, einfache Strings, probiers einfach auch mal selber im Interpreter aus ;) ), dann knallt dir das Script mit einem ValueError um die Ohren.

Du könntest es aber wie folgt absichern:

Code: Alles auswählen

import sys

if len(sys.argv) != 3:
    sys.exit("Fehler: Script benoetigt genau zwei Parameter")
    # hier bricht nun dank dem sys.exit() dein Script ab, 
    # wird im weiteren auch verwendet

try:
    param1 = int(sys.argv[1])
except ValueError:
    sys.exit("Fehler: Erster Parameter muss ein Integer sein")

try: 
    param2 = int(sys.argv[2])
except ValueError:
    sys.exit("Fehler: Zweiter Parameter muss ein Integer sein")
Etwas "komfortabler" kannst du aber auch parametrisierte oder gar mit Optionen zu versehende Command-Line Scripte/Programme mit dem Python Modul optparse (!!!: Link für Version 2.4.2) aufwerten.

Verfasst: Montag 15. Mai 2006, 12:10
von stigi
dankedön :lol: