User Tools

Site Tools


inputs_param

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
inputs_param [2017/07/04 14:27] gginputs_param [2017/07/05 11:03] (current) gg
Line 6: Line 6:
  
 Die folgenden Beispiele lesen einen Namen und Alter als Kommandozeilenparameter ein, prüfen die Parameter auf Korrektheit und geben Sie dann wieder aus.\\ Die folgenden Beispiele lesen einen Namen und Alter als Kommandozeilenparameter ein, prüfen die Parameter auf Korrektheit und geben Sie dann wieder aus.\\
-Geprüft wird, ob der Vorname mit einem Grossbuchstaben startet und sonst nur Kleinbuchstaben enthält und ob das Alter zwischen 1 und 99 ist und nicht mit einer 0 startet. Es gibt **elegantere Möglichkeiten** zu prüfen, ob eine Zahl zwischen 1 und 99 ist, nämlich könnte man den **String in eine Zahl umwandeln**. Hier wird aber gezeigt, wie man einen String prüft, ob er passt. Bietet eine Programmiersprache keine vernünftige Möglichkeit einzelne Zeichen zu vergleichen (Bash, Perl) so werden reguläre Ausdrücke verwendet.+Geprüft wird, ob der Vorname mit einem Grossbuchstaben startet und sonst nur Kleinbuchstaben enthält und ob das Alter zwischen 1 und 99 ist und nicht mit einer 0 startet. Es gibt **elegantere Möglichkeiten zu prüfen**, ob eine Zahl zwischen 1 und 99 ist, nämlich könnte man den **String in eine Zahl umwandeln**. Hier wird aber gezeigt, wie man einen String prüft, ob er passt. Auch gibt es **elegantere Möglichkeiten** Fehler auszugeben. Man könnte **Fehler sammeln und alle gemeinsam ausgeben**. Bietet eine Programmiersprache keine vernünftige Möglichkeit einzelne Zeichen zu vergleichen (Bash, Perl)so werden reguläre Ausdrücke verwendet.
  
 ==== Bash ==== ==== Bash ====
Line 450: Line 450:
 php input.php Werner 30 php input.php Werner 30
 </code> </code>
 +
 +==== Python ====
 +Python bietet mit **OptParse** oder **ArgParse** ziemlich gute Module für Programmparameter an. Hier soll aber gezeigt werden, wie es mit Bordmitteln funktioniert.
 +=== Code ===
 +<code python>
 +import sys
 +
 +# Funktion definieren
 +def checkName(name):
 +  # ist die Länge korrekt
 +  if len(name) == 0:
 +    return False
 +
 +  firstCharacter = True
 +  for c in name:
 +    if firstCharacter:
 +      # ist das erste Zeichen ein Grossbuchstabe?
 +      if c < 'A' or c > 'Z':
 +        return False
 +      firstCharacter = False
 +    else:
 +      # sind alle anderen Zeichen Kleinbuchstaben?
 +      if c < 'a' or c > 'z':
 +        return False
 +
 +  # Alle Bedingungen sind erfüllt
 +  return True
 +
 +def checkAge(age):
 +  # ist die Länge korrekt?
 +  if len(age) <= 0 or len(age) > 2:
 +    return False
 +
 +  # Fängt das erste Zeichen zwischen 1 und 9 an?
 +  if age[0] < '1' or age[0] > '9':
 +    return False
 +
 +  # Ist das zweite Zeichen (falls vorhanden) zwischen 0 und 9?
 +  if len(age) == 2:
 +    if age[1] < '0' or age[1] > '9':
 +      return False
 +
 +  # Alle Bedingungen sind erfüllt
 +  return True
 +
 +# Die Anzahl der Parameter prüfen
 +if len(sys.argv) != 3:
 +  print("Usage: "+sys.argv[0]+" [Name] [Alter]")
 +  sys.exit(1)
 +
 +# sprechendere Namen verwenden
 +name = sys.argv[1]
 +age  = sys.argv[2]
 +
 +# Die Parameter prüfen
 +if not checkName(name):
 +  print("Der Name muss mit einem Grossbuchstaben beginnen und darf sonst nur Buchstaben enthalten")
 +  sys.exit()
 +if not checkAge(age):
 +  print("Das Alter muss mit 1-9 beginnen, darf nur Zahlen enthalten und maximal 99 sein")
 +  sys.exit()
 +
 +# Ausgabe
 +print("Dein Name ist "+name+" und du bist "+age+" Jahre alt")
 +</code>
 +=== Ausführen ===
 +Die Datei input.py mit obigen Quelltext füllen und so zum Laufen bringen:
 +<code bash>
 +python3 input.py
 +</code>
 +
 +===== Übungen =====
 +  * Lese eine ganze Zahl als Programmparameter ein und berechne die Fakultät dieser Zahl
 +  * Erweitere die obigen Beispiele um einen weiteren Parameter. Lese zusätzlich das Geburtsdatum ein (inklusive Prüfungen!) und gib es aus
 +  * Baue einen kleinen Taschenrechner, der addieren und subtrahieren kann
 +  * Erweitere den Taschenrechner um die Multiplikation und Division
inputs_param.1499171243.txt.gz · Last modified: 2017/07/04 14:27 by gg