Список с функциями - PullRequest
       5

Список с функциями

0 голосов
/ 12 сентября 2018

Я пытаюсь составить список функций, из которых я могу случайным образом извлечь одну из функций. Я попробовал несколько методов, и оба пытались заставить его активно выбирать вторую функцию в списке и просто пытались сделать ее случайной. Оба терпят неудачу.

Список работает нормально, если в нем есть текст вместо функций. q = [opt1(), opt2(), opt3()] также активирует функцию, несмотря на то, что я не вызываю их.

Как мне сделать так, чтобы он случайно вытаскивал одну из функций из списка?

import random

def opt1():
    print("hej1")

def opt2():
    print("hej2")

def opt3():
    print("hej3")

q = [opt1(), opt2(), opt3()]

health = "100"
p = "1"
print("you have ", p, " potions")
print("Your health is ", health,)
while True:
    a = input("A =")
    if a == "add":
        health = int(health)
        p = int(p) + 1
        print("you have ", p, " potions")
        print("Your health is ", health,)
        a = input("A =")
    if a == "fight":
        q[1]
        #random.choice(q)

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Вам просто нужно удалить () s при добавлении функций в список.Таким образом, эта строка является проблемой:

q = [opt1(), opt2(), opt3()]

, включив (), что вы делаете, вызывая функцию и добавляя результат вызова функции в список, а не добавляя саму функцию всписок.Этот код ниже должен быть примерно то, что вам нужно

import random

def opt1():
    print("hej1")

def opt2():
    print("hej2")

def opt3():
    print("hej3")

q = [opt1, opt2, opt3]
randomFunction = random.choice (q)
randomFunction()
0 голосов
/ 12 сентября 2018

Сначала настройте список q следующим образом:

q = [opt1, opt2, opt3]

В противном случае вы уже вызываете функции.

Затем я предлагаю вам определить индекс:

ind = random.randint(0,len(q)-1)

Выбирает случайную функцию из списка.Теперь осталось сделать только квадратные скобки:

q[ind]()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...