如何将函数的参数连接成一个字符串?

3

我正试图从changegame函数的属性中获取一个字符串,以便改变我正在开发的机器人的状态。

async def changegame(*game_chosen: str):
    """Changes the game the bot is playing"""
    game_str = discord.Game(name=game_chosen)
    try:
        await bot.change_status(game=game_str, idle=False)
        await bot.say("```Game correctly changed to {0}```".format(game_chosen))

这不会使字符串被识别,而是会得到以下结果:
游戏正确更改为('Test','string','123')。

你想让它做什么?将它们连接起来吗? - Two-Bit Alchemist
1
虽然有一个简单的答案,但很可能你应该将单个名称传递给changegame,而不是多个参数。你在哪里调用这个函数? - spectras
@spectras 不行,因为如果我把名字改成《英雄联盟》,它只会显示“联盟”,而忽略了其余部分。 - margobra8
2
答案是正确的,但@spectras是正确的。如果你想把它们作为一个参数调用,为什么还要定义它来获取多个参数呢?如果你只是把它们一起运行,那么这些参数之间有什么区别呢? - Two-Bit Alchemist
因为在某个时候,你将名称拆分成了三个字符串的列表。这就是你应该避免的。传递列表并在使用它的每个地方将其粘合在一起比仅仅修复它要麻烦得多。 - spectras
显示剩余4条评论
1个回答

5
为解决您的问题,请尝试简单的连接操作:
' '.join(map(str, game_chosen))

然而,你面临的更大问题是:
game_str = discord.Game(name=game_chosen)

您在将一个元组传递给 discord.Game,您确定这是正确的吗?如果您想像这样调用您的初始函数:changegame("League of Legends"),那么您需要修复您的函数定义:

async def changegame(game_chosen: str)

我猜您实际上想做的是这个。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接