Seite 1 von 1

random.choice auf Funktionen anweden (Twitter-Bot)

Verfasst: Donnerstag 29. März 2018, 14:20
von 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!

Re: random.choice auf Funktionen anweden (Twitter-Bot)

Verfasst: Donnerstag 29. März 2018, 14:25
von __deets__
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])()

Re: random.choice auf Funktionen anweden (Twitter-Bot)

Verfasst: Donnerstag 29. März 2018, 17:35
von julemark1
Vielen Dank. Ich hab' natürlich das () am Ende vergessen...