Funktion innerhalb einer Funktion aufrufen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
erdmulch
User
Beiträge: 230
Registriert: Samstag 17. Juli 2010, 19:50

Hallo zusammen,

kann mir jemand sagen, wie ich innerhalb einer Funktion eine Funktion aufrufen kann?
siehe folgendes Beispiel.
Es kommt immer die Fehlermeldung:
NameError: name 'functionB' is not defined

Code: Alles auswählen

def functionB():
    print("Funktion B wurde aufgerufen")

def functionA():
    print("Funktion A wurde aufgerufen")
    funktionB()
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

Joa, mal deutsch mal englisch schreiben geht halt nicht. Schau mal genau hin.
erdmulch
User
Beiträge: 230
Registriert: Samstag 17. Juli 2010, 19:50

geht aber trotzdem nicht...
dies ist auch nur ein Beispiel.

Code: Alles auswählen

def functionB():
    print("Function B wurde aufgerufen")

def functionA():
    print("Function A wurde aufgerufen")
    functionB()
functionA()
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

Doch, genau dieser Code von dir geht bei mir.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@erdmulch: wenn Dein eigentliches Programm nicht funktioniert, hilft es nichts, funktionierende Beispiele zu posten.
erdmulch
User
Beiträge: 230
Registriert: Samstag 17. Juli 2010, 19:50

ja, ihr habt ja recht.
ich weiß nun auch wo der Fehler leigt.
die if Anweisung hat immer den Wert False.

kann mir jemand sagen woran das liegt?
wir haben ja den Monat 7 im Jahr, eigentlich müsste es hier doch True sein, oder nicht?

Code: Alles auswählen

 #prüfen ob der Zeitraum zwischen Mai und August liegt, wenn diese Bedingung wahr ist, wird ein Text ausgegeben
    if time.strftime("%m")>= "5" and time.strftime("%m")<= "8":
        print(IF-Anweisung hat funktioniert)
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

man sollte einen Monat nicht per Stringvergleich vergleichen. Nimm das datetime-Modul:

Code: Alles auswählen

if 5 <= datetime.datetime.now().month <= 8:
    print("juhu")
Benutzeravatar
__blackjack__
User
Beiträge: 13080
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@erdmulch: Probier's doch einfach aus:

Code: Alles auswählen

In [226]: time.strftime("%m")
Out[226]: '07'

In [227]: time.strftime("%m") >= "5"
Out[227]: False
Ist an sich ja auch eine doofe Idee da mit der Zeichenkettendarstellung zu arbeiten. Es gibt das `datetime`-Modul mit so schönen Datums-Objekten.

Code: Alles auswählen

In [228]: from datetime import date as Date

In [229]: Date.today()
Out[229]: datetime.date(2018, 7, 2)

In [230]: Date.today().month
Out[230]: 7

In [231]: Date.today().month >= 5
Out[231]: True

In [232]: 5 <= Date.today().month <= 8
Out[232]: True
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten