Verschachtelungen: if-Anweisungen in Funktionsdefinitionen in Python (Verschachtelungen: if-Anweisungen in Funktionsdefinitionen in Python), Lektion, Seite 724085
https://www.purl.org/stefan_ram/pub/if_funktionen_python (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Python-Kurs

Verschachtelungen: if-Anweisungen in Funktionsdefinitionen in Python 

Suiten können auch verschachtelt werden. Es ist also möglich, daß eine Suite eine andere Suite enthält. Dies kann beispielsweise verwendet werden, um eine if-Anweisung in eine Funktionsdefinition einzubauen.

Beispiel

Die Funktion »ast« gibt die durch ihren Argumentwert angegebene Anzahl von Sternen aus (bis zu maximal vier).

Protokoll

def ast( n ):

if n > 0:
print( end='*' )

if n > 1:
print( end='*' )

if n > 2:
print( end='*' )

if n > 3:
print( end='*' )




ast( 1 ); ast( 2 ); print()

***

Man beachte wie die Einrückungen der verschachtelten Suiten sich bei der Verschachtelung addieren: Eine Zeile aus einer Suite, die in einer anderen Suite enthalten ist (die selber nicht in einer anderen Suite enthalten ist), wird daher noch weiter  nach rechts eingerückt.

Ausschnitt aus dem obigen Skript

def ast( n ): # nicht eingerueckt

# Beginn der def-Suite
if n > 0: # Einrueckung um 4 Positionen

# Beginn der if-Suite
print( end='*' ) # Einrueckung um 4 + 3 Positionen
# Ende der if-Suite

if n > 1: # Einrueckung um 4 Positionen

    u.s.w.

Allgemein wird empfohlen, am Anfang einer Suite immer vier Zeichen  weiter nach rechts einzurücken. Nach dem Ende einer Suite wird deren Einrückung dann wieder aufgehoben und zur Einrückung zurückgekehrt, die verwendet wurde, bevor die beendete Suite begann. (Falls mehrere verschachtelte Suiten gleichzeitig enden, orientiert man sich nur an der äußersten.)

Übungsaufgaben

/   Schreiben einer Funktionsdefinition

Schreiben Sie eine Definition einer Funktion »printHallo«, die einen Parameter »p« besitzt und »Hallo« ausgibt, wenn sie mit ›True‹ aufgerufen wird. Wenn sie mit ›False‹ aufgerufen wird, dann soll sie nichts tun. In der Funktion soll eine if-Anweisung (kein if-Ausdruck) verwendet werden, um es zu erreichen, daß »Hallo« ausgegeben wird, wenn »p« gleich ›True‹ ist. Es darf angenommen werden, daß diese Funktion immer nur mit ›True‹ oder ›False‹ aufgerufen wird.

Wenn die Funktion mit der folgenden Dokumentation versehen wird, sollte sie den folgenden Test bestehen.

Dokumentation
    """
Gibt "Hallo" aus, genau dann,
wenn der Argumentwert gleich true ist.
>>> z = printHallo( True )
Hallo
>>> z == None
True
>>> z = printHallo( False )
"""
Test
from doctest import testmod
testmod()

/   Schreiben einer Funktionsdefinition

Schreiben Sie eine Definition einer Funktion »printFalse«, die einen Parameter »p« besitzt und »False« ausgibt, wenn sie mit ›False‹ aufgerufen wird. Wenn sie mit ›True‹ aufgerufen wird, dann soll sie nichts tun. In der Funktion soll eine if-Anweisung (kein if-Ausdruck) verwendet werden, um es zu erreichen, daß »Hallo« ausgegeben wird, wenn »p« gleich ›False‹ ist. Es darn angenommen werden, daß diese Funktion immer nur mit ›True‹ oder ›False‹ aufgerufen wird.

/   Refaktor einer Funktionsdefinition

Überarbeiten Sie die folgende Funktionsdefinition mit einer lambda-Bindung, so daß sie »def« an Stelle von »lambda« und eine if-Anweisung an Stelle eines if-Ausdrucks enthält, aber die definierte Funktion sich unter gleichen Umständen gleich verhält wie bei Verwendung der bisherigen Definition.

Hierbei sollen nur die bisher behandelten Möglichkeiten der Sprache verwendet werden.

lambda-Bindung
main = lambda: print( 'richtig' if input() == 'Billard' else 'falsch' )

/   Erweiterung einer Funktionsdefinition

Erweitern Sie die folgende Funktionsdefinition so, daß sie (zusätzlich zu »n«) ausgibt: „Vorrat verbraucht, nachbestellen!“, genau dann wenn »n« kleiner als »1« ist. Verwenden Sie hierzu eine if-Anweisung, die hinter der derzeit vorhandenen Ausgabeanweisung eingefügt werden soll. Es darf angenommen werden, daß diese Funktion immer nur mit einer ganzen Zahl aufgerufen wird.

Paraphrase der zu erstellenden if-Anweisung (Pseudocode)
Wenn n  kleiner als Eins ist, dann schreibe „Vorrat verbraucht, nachbestellen!“
Quelltext
def vorratAusgeben( n ):
print( n )

 

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram724085 stefan_ram:724085 Verschachtelungen: if-Anweisungen in Funktionsdefinitionen in Python Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd724085, slrprddef724085, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/if_funktionen_python