random.choice auf Funktionen anweden (Twitter-Bot)

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
julemark1

Hallo zusammen, ich möchte einen Twitter-Bot erstellen und habe mich für Python entschieden. (Vor dem heutigen Tag bin ich noch nie mit Python in Berührung gekommen, also bitte habt Nachsicht!) Der folgende Code funktioniert an sich. Mein Problem liegt nun allerdings darin, dass ich auch die drei verschiedenen def-Funktionen, also nv_random, an_random und nn_random zufällig auswählen lassen möchte. Bisher bin ich so weit gekommen:

Code: Alles auswählen

import random, time, tweepy

verb = ["verb1", "verb2", "verb3"]
adjektiv = ["adj1", "adj2", "adj3"]
nomen = ["nomen1", "nomen2", "nomen3"]

def nv_random():
    return random.choice(nomen) + " " + random.choice(verb) + "."

def an_random():
    return random.choice(adjektiv) + " " + random.choice(nomen) + "."

def nn_random():
    return random.choice(nomen) + "-" + random.choice(nomen) + "."

consumer_key = 'xxxxxxxxxxxxxxxxxxxxxxxxxxx'
consumer_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxx'
access_token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxx'
access_token_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxx'
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

while True:
    postthis = nv_random()
    if len(postthis) <= 140:
        api.update_status(status=postthis)
        time.sleep(60)
Im Netz habe ich nur folgenden Vorschlag gefunden (alternativ auch mit eckigen Klammern zwischen den runden), der hat aber nicht funktioniert:

Code: Alles auswählen

while True:
    postthis = random.choice(nv_random,an_random,nn_random)
Ich hoffe, ihr versteht mein Problem und könnt mir eventuell weiterhelfen. :)

Vielen Dank!
__deets__
User
Beiträge: 14539
Registriert: Mittwoch 14. Oktober 2015, 14:29

Doch, das funktioniert schon so (mit den eckingen Klammern natuerlich):

Code: Alles auswählen

import random

def foo():
    print("foo")

def bar():
    print("bar")

random.choice([foo, bar])()
julemark1

Vielen Dank. Ich hab' natürlich das () am Ende vergessen...
Antworten