对于循环未正确执行,不附加到列表

时间:2018-02-20 02:42:42

标签: python

我正在尝试为个人项目创建一个不和谐机器人,以便在Python编程中更好地完成自己。但是,我遇到了一个问题。当机器人获得这段代码时:

def bloodbath(tribs):
    event = "null"
    for person in tribs:
        bloodbath_type = ["bloodbath_solo","bloodbath_duo"]
        output = ["Bloodbath Day."]
        type = random.choice(bloodbath_type)
        if type == "bloodbath_solo":
            output.append((random.choice(bloodbath_solo)) % (person))
        else:
            if len(current_duo) < 2:
                current_duo.append(person)
                if len(current_duo) == 2:
                    output.append((random.choice(bloodbath_duo)) % (current_duo[0], current_duo[1]))
                    current_duo.clear()
        return output

await self.bot.say(bloodbath(tributes))

出现了一些问题。 第一:for person in tribs循环只运行一次,或者根本不运行。这是一个输出的例子。

https://imgur.com/gallery/gIhnS

我想要的是将循环附加到输出列表6次或更少(取决于是否有需要2个人的情况)并将其返回到机器人,它可以将其输入到聊天中。

这是整个代码的加速器。

https://hastebin.com/lumekazula.py

1 个答案:

答案 0 :(得分:0)

return output行打破循环并立即返回。为了更好地理解这个问题,请尝试以下方法:

def spam():
    for item in [1, 3, 5, 7, 9, 11]:
        return item * 2

print(spam())  # -> 2

output = []return output移至循环外部。你应该能够弄清楚其余部分。