Übergabeparameter in if abfrage ?!

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
stigi
User
Beiträge: 64
Registriert: Dienstag 4. April 2006, 07:05

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:
Zuletzt geändert von stigi am Montag 15. Mai 2006, 08:39, insgesamt 1-mal geändert.
[img]http://img73.imageshack.us/img73/9951/stigismiley9cp.gif[/img] read between the lines for better smelling socks [img]http://img73.imageshack.us/img73/9951/stigismiley9cp.gif[/img]
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
stigi
User
Beiträge: 64
Registriert: Dienstag 4. April 2006, 07:05

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 ?
[img]http://img73.imageshack.us/img73/9951/stigismiley9cp.gif[/img] read between the lines for better smelling socks [img]http://img73.imageshack.us/img73/9951/stigismiley9cp.gif[/img]
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

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.
Zuletzt geändert von Masaru am Montag 15. Mai 2006, 12:19, insgesamt 1-mal geändert.
stigi
User
Beiträge: 64
Registriert: Dienstag 4. April 2006, 07:05

dankedön :lol:
[img]http://img73.imageshack.us/img73/9951/stigismiley9cp.gif[/img] read between the lines for better smelling socks [img]http://img73.imageshack.us/img73/9951/stigismiley9cp.gif[/img]
Antworten