2017-12-04 7 views
0

Ich schreibe ein Programm, das Benutzer zu festgelegten Zeiten begrüßen konnte. Und wenn der Benutzer innerhalb einer bestimmten Zeit nichts antwortet, sendet das Programm eine weitere Nachricht.Python - Nur die erste innere Funktion wurde ausgeführt

Momentan verwende ich eine äußere Funktion mit zwei inneren Funktionen, da ich die äußere in eine andere Hauptdatei importieren wollte. Aber wenn ich den äußeren Funktionstest() anrufe, wurde nur die erste innere Funktion weekends() ausgeführt.

Dies ist mein Code.

import schedule 
import time 
from threading import Thread 

def test(): 

    def weekends(): 
     weekends_ans = None 
     def weekends_check(): 
      time.sleep(20) 
      if weekends_ans!=None: 
       return 
      print('\nWhat about watching a movie?') 
     Thread(target=weekends_check).start() 
     weekends_ans=input('Whats your plan for weekends?') 

    def monday(): 
     monday_ans = None 
     def monday_check(): 
      time.sleep(20) 
      if monday_ans!=None: 
       return 
      print('\nHave fun next week!') 
     Thread(target=monday_check).start() 
     monday_ans=input('Monday again.') 

    schedule.every().friday.at('17:00').do(weekends) 
    schedule.every().sunday.at('17:00').do(monday) 
    while True: 
     schedule.run_pending() 
     time.sleep(1) 

test() 

Jeder könnte helfen?

+1

Nebenbei bemerkt: Vergleichen Agains 'None' mit' wenn weekend_ans nicht anstelle der 'ist None' =' Operator – RunOrVeith

+0

Danke, aber doen't es Arbeit .. –

Antwort

0

Ist es dieser Teil

if weekends_ans!=None: return

eingeben Wenn es den Code macht kehrt und wird zum nächsten Teil nicht contine. (Es wird eine Rückkehr und dann weiter von unten Test())

Seitliche Anmerkung: Async-Programmierung auschecken. Schlaf zu verwenden ist fast immer eine schlechte Praxis, zB Link zu async: https://hackernoon.com/asynchronous-python-45df84b82434

+0

Danke, ich habe den Artikel von Async und das Bibliotheksdokument gelesen, aber ich habe immer noch keine Ahnung, wie man das Programm mit Async implementiert. Könnten Sie mir bitte ein Beispiel mit async geben, das die gleiche Funktionalität erreichen kann? –

Verwandte Themen