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]