2017-02-17 4 views
0

Ich schreibe ein Python-Programm, das auf eine Anfrage antwortet und eine Antwort an den Benutzer vokalisiert. Im Folgenden finden Sie ein Beispiel für zwei Funktionen. Wie kann ich dies tun, ohne eine globale Variable zu verwenden und immer noch eine sich nicht wiederholende, zufällige Antwort zu erhalten?Gibt ein sich nicht wiederholendes, zufälliges Ergebnis aus einer Liste innerhalb einer Funktion zurück

# stores prior response 

website_result = 'first_response.wav' 

def launch_website(): 

    # if service is offline return with default msg otherwise launch service 

    if is_connected() == 'FALSE': 
     arg = 'this_service_is_offline.wav' 
     return arg 
    else: 
     site = 'http://www.somesite.com' 
     launch_it(site) 

    return launch_website_response() 

def launch_website_response(): 

    # using the global variable inside function 

    global website_result 

    # possible responses 

    RESPONSES = ['first_response.wav', 'second_response.wav', 'third_response.wav'] 

    # ensures a non-repeating response 

    tmp = random.choice(RESPONSES) 
    while website_result == tmp: 
     tmp = random.choice(RESPONSES) 

    website_result = tmp 
    return website_result 
+0

Bitte überprüfen Sie die Einrückung und formatieren Sie den Code –

+0

Vielleicht haben Sie nur 'launch_website_response()' nehmen 'website_result' als Argument – JGut

Antwort

0

Ihre website_result Variable zeigt an, dass Sie eine Art persistenten Zustand haben. Vielleicht können Sie es in einer Textdatei speichern und jederzeit darauf zugreifen und es später ändern (das funktioniert, wenn Sie nicht zu viele Aufrufe benötigen, sonst werden Sie in E/A-Einschränkungen kommen).

Ich weiß nicht, über die Besonderheiten Ihrer Anwendung, aber es könnte passieren, dass Sie auch Ihre beiden Funktionen website_result als ein Argument nehmen können, wie von @JGut vorgeschlagen.

Verwandte Themen