ich bin gerade dabei folgende aufg. zu machen:
"Dem Skript soll in der Kommandozeile ein Satz mit 5 Wörtern übergeben werden"
ich habe die aufg. so gelöst
import sys
variabel = sys.argv[0]
wort1 = sys.argv[1]
wort2 = sys.argv[2]
wort3 = sys.argv[3]
wort3 = sys.argv[4]
wort3 = sys.argv[5]
print len(sys.argv)
wo gebe ich jetzt die wörter ein, damit das programm die wörter findet?
python übung
in der Kommandozeile:
Code: Alles auswählen
python skript.py Das ist ein kurzer Satz.
-
- User
- Beiträge: 11
- Registriert: Samstag 10. Mai 2014, 14:56
aso jetzt weiß ich was die kommandozeile ist
-
- User
- Beiträge: 11
- Registriert: Samstag 10. Mai 2014, 14:56
ich habe ein problem bei der nächsten aufgabe:
"Werden mehr oder weniger Wörter übergeben, so soll eine entsprechende Nachricht ausgegeben und das Programm verlassen werden.
(Hinweis: mit dem Befehl “exit” wird ein Programm sofort beendet.)"
meine lösung:
das klappt aber nicht. ich bekomme folgende fehlermeldung:
syntaxerror: Non-ASCII character `\xf6` in file C:... finger2.py on line 10, but no encoding declared;
"Werden mehr oder weniger Wörter übergeben, so soll eine entsprechende Nachricht ausgegeben und das Programm verlassen werden.
(Hinweis: mit dem Befehl “exit” wird ein Programm sofort beendet.)"
meine lösung:
Code: Alles auswählen
import sys
variabel = sys.argv[0]
wort1 = sys.argv[1]
wort2 = sys.argv[2]
wort3 = sys.argv[3]
wort3 = sys.argv[4]
wort3 = sys.argv[5]
print len(sys.argv)
if len(sys.argv) >6:
print zu viele Wörter
exit
if len(sys.argv)<6:
print zu wenige Wörter
exit
syntaxerror: Non-ASCII character `\xf6` in file C:... finger2.py on line 10, but no encoding declared;
Zuletzt geändert von Anonymous am Sonntag 18. Mai 2014, 13:40, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
Grund: Quelltext in Python-Code-Tags gesetzt.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Du musst ein Encoding angeben, also etwa ganz am Anfang:
utf-8 halt dann passend durch das Encoding ersetzen, welches du nutzt. Und außerdem kann ``print`` Strings ausgeben, nicht zufälliges Zeug was dahinter steht, also wirst du deine Ausgabe in einen String packen müssen.
Code: Alles auswählen
# -*- coding: utf-8 -*-
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
@needphython: Die Fehlermeldung hast Du doch jetzt selber erfunden, beziehungsweise so halb abgeschrieben. `syntaxerror` steht da sicher nicht *so*. Und die Fehlermeldung ist länger und enthält einen Verweis auf ein PEP das man dazu vielleicht mal lesen könnte.
Die Aufgabenstellung behauptet `exit` sei ein Befehl — das ist falsch, das ist eine Funktion, und man sollte sie auch aus dem `sys`-Modul importieren. Denn das die momentan bei CPython ”einfach so” vorhanden ist, das ist nicht dokumentiert und damit auch nichts worauf man sich verlassen sollte. Andererseits sollte man mit `exit()` sowieso sparsam umgehen und ich sehe nicht dass man das für diese Aufgabe tatsächlich braucht. Die lässt sich problemlos ohne lösen.
Es steht übrigens soweit ich das sehe nirgends, dass Du die fünf Wörter an durchnummerierte Namen binden sollst. Das ist schlechter Programmierstil und ausserdem machst Du das auch noch falsch, denn man würde, wenn schon, dann doch auch fünf verschiedene Variablen erwarten und nicht nur drei.
Die Aufgabenstellung behauptet `exit` sei ein Befehl — das ist falsch, das ist eine Funktion, und man sollte sie auch aus dem `sys`-Modul importieren. Denn das die momentan bei CPython ”einfach so” vorhanden ist, das ist nicht dokumentiert und damit auch nichts worauf man sich verlassen sollte. Andererseits sollte man mit `exit()` sowieso sparsam umgehen und ich sehe nicht dass man das für diese Aufgabe tatsächlich braucht. Die lässt sich problemlos ohne lösen.
Es steht übrigens soweit ich das sehe nirgends, dass Du die fünf Wörter an durchnummerierte Namen binden sollst. Das ist schlechter Programmierstil und ausserdem machst Du das auch noch falsch, denn man würde, wenn schon, dann doch auch fünf verschiedene Variablen erwarten und nicht nur drei.