Seite 1 von 1

Innerhalb einer Funktion eine Funktion einsetzen

Verfasst: Dienstag 26. Juli 2022, 17:10
von l.b.2404
Hallo Python-Forum!

Ein Freund und ich sind gerade an der Umsetzung eines Projektes... dabei wäre es ganz gut eine Funktion innerhalb einer Funktion laufen lassen zu können, ersichtlich im nachstehenden Code.

Code: Alles auswählen

def welcome_loginnumber():
    print('Wilkommen in der vorzeitigen xyz-Umgebung!')
    print()
    update='xyz_P1_D1'
    print('Derzeitiger Stand ist: '+update)
    print()
    print('Tippe deine Nutzernummer ein: ')


loginnumber=0 #NUTZERNUMMER

while loginnumber < 1 or loginnumber > 2:
    welcome_loginnumber()
    loginnumber = int(input('eingeben:'))
    if loginnumber == 1:
        print('hallo leon')

    elif loginnumber == 2:
        print('hallo dominik')

    else:
        print('Es scheint als hättest du keine Zugansgberechtigung. Versuche es noch einmal. Programm wird neugestartet...')

def description_xyz() :
    print(' abcd')



def action():[b]
    print('Was möchtest du als nähhstes tun?')
    print()
    print('____________________________________')
    print('1. - Beschreibung abcd')
    print('2. - FM')
    print('3. - Programme')
    action_1=input('eingeben (1,2,3): ')
    if action_1 == 1:
        description_asct()
 action()
Unresolved reference 'description_xyz' ist die Fehlermeldung

Wie könnte man das lösen? Hat da jemand eine Idee?

LG Leon

Re: Innerhalb einer Funktion eine Funktion einsetzen

Verfasst: Dienstag 26. Juli 2022, 17:13
von __deets__
Bitte den Code in die dafuer vorgesehenen Code-Tags stecken, das ist der </>-Knopf im vollstaendigen Editor. Und statt Fehlermeldungen aus dem Kopf zu beschreiben, bitte die vollstaendige Fehlermeldung ebenfalls in Code-Tags hier einstellen.

Re: Innerhalb einer Funktion eine Funktion einsetzen

Verfasst: Dienstag 26. Juli 2022, 18:21
von Sirius3
Strings setzt man nicht mit + zusammen, sondern nutzt Format-Strings. Das mit dem `update` sieht aber noch komisch aus; ›derzeitiger Stand‹ läßt ja vermuten, dass sich das ändern läßt, steht aber nicht so im Code.
Man mischt keine Funktionsdefinitionen und Code, der direkt ausgeführt wird; der sollte auch in einer Funktion stehen.
Warum nennst du Deine Variable `loginnumber` um dann einen Kommentar `NUTZERNUMMER` dahinter zu schreiben? Was denn nun?
Man setzt keine Dummy-Werte, nur damit eine while-Schleife starten kann, sondern nutzt dann eine while-True-Schleife.
Warum hat `action_1` eine 1? Variablennamen sollten aussagekräftig sein, irgendwelche Nummern an Namen sind das nicht.
`action_1` muß in eine Zahl umgewandelt werden. `description_asct` ist nirgends definiert. Was bedeutet `asct`? Benutzt keine Abkürzungen.

Code: Alles auswählen

def welcome_loginnumber():
    print('Wilkommen in der vorzeitigen xyz-Umgebung!')
    print()
    update = 'xyz_P1_D1'
    print(f'Derzeitiger Stand ist: {update}')
    print()
    print('Tippe deine Nutzernummer ein: ')


def login():
    while True:
        welcome_loginnumber()
        user_number = int(input('eingeben:'))
        if user_number in [1, 2]:
            break
        print('Es scheint als hättest du keine Zugansgberechtigung. Versuche es noch einmal. Programm wird neugestartet...')
    return user_number

def description_abcd():
    print(' abcd')


def action():
    print('Was möchtest du als nähhstes tun?')
    print()
    print('____________________________________')
    print('1. - Beschreibung abcd')
    print('2. - FM')
    print('3. - Programme')
    action = int(input('eingeben (1,2,3): '))
    if action == 1:
        description_abcd()

def main():
    user_number = login()
    if user_number == 1:
        print('hallo leon')
    elif user_number == 2:
        print('hallo dominik')
    action()

if __name__ == "__main__":
    main()

Re: Innerhalb einer Funktion eine Funktion einsetzen

Verfasst: Dienstag 26. Juli 2022, 18:46
von l.b.2404
Sirius3 hat geschrieben: Dienstag 26. Juli 2022, 18:21 Strings setzt man nicht mit + zusammen, sondern nutzt Format-Strings. Das mit dem `update` sieht aber noch komisch aus; ›derzeitiger Stand‹ läßt ja vermuten, dass sich das ändern läßt, steht aber nicht so im Code.
Man mischt keine Funktionsdefinitionen und Code, der direkt ausgeführt wird; der sollte auch in einer Funktion stehen.
Warum nennst du Deine Variable `loginnumber` um dann einen Kommentar `NUTZERNUMMER` dahinter zu schreiben? Was denn nun?
Man setzt keine Dummy-Werte, nur damit eine while-Schleife starten kann, sondern nutzt dann eine while-True-Schleife.
Warum hat `action_1` eine 1? Variablennamen sollten aussagekräftig sein, irgendwelche Nummern an Namen sind das nicht.
`action_1` muß in eine Zahl umgewandelt werden. `description_asct` ist nirgends definiert. Was bedeutet `asct`? Benutzt keine Abkürzungen.

Code: Alles auswählen

def welcome_loginnumber():
    print('Wilkommen in der vorzeitigen xyz-Umgebung!')
    print()
    update = 'xyz_P1_D1'
    print(f'Derzeitiger Stand ist: {update}')
    print()
    print('Tippe deine Nutzernummer ein: ')


def login():
    while True:
        welcome_loginnumber()
        user_number = int(input('eingeben:'))
        if user_number in [1, 2]:
            break
        print('Es scheint als hättest du keine Zugansgberechtigung. Versuche es noch einmal. Programm wird neugestartet...')
    return user_number

def description_abcd():
    print(' abcd')


def action():
    print('Was möchtest du als nähhstes tun?')
    print()
    print('____________________________________')
    print('1. - Beschreibung abcd')
    print('2. - FM')
    print('3. - Programme')
    action = int(input('eingeben (1,2,3): '))
    if action == 1:
        description_abcd()

def main():
    user_number = login()
    if user_number == 1:
        print('hallo leon')
    elif user_number == 2:
        print('hallo dominik')
    action()

if __name__ == "__main__":
    main()
[/quote]