2016-04-30 61 views
0

我要说实话:我真的不知道我在做什么。VicBot骰子滚轮(Python 2.7)

我想使它成为VicBot(用于Python 2.7)可以在命令“/ roll xdy”上“滚动”“骰子”,其中x是死亡数量,y是这些死亡数量的边数。

所以,更直接,我需要能够请求变量x≥y,并让他们显示“(可变)+(可变)=(总)”

所有VicBot的可以在这里找到:https://github.com/Vicyorus/VicBot

(如果你想知道:我不小心上传了这个问题,我结束之前)

+0

我刚刚进行了编辑以改善代码格式,但是我并没有真正理解你的第三段,所以它的格式仍然有点奇怪。也许你可以澄清你的意思是“x变量≥y”(例如用一个具体的例子)? – Blckknght

+0

By x我指的是“骰子”的数量,而我指的是那个“骰子”上的边数,它与您可能收到的最高数相关。所以“2d6”或“2个小于或等于6的变量”。假设我选择的数字是3和6,我的意思是“(变量1)+(变量2)=(总和)”将是“3 + 6 = 9”。我还会试图澄清那个段落a位在我的文章。 – Viper

+0

如果你在控制台程序中这样做,你会知道如何处理问题的随机数部分?也就是说,你是否对这个问题的聊天机器人部分感到困惑,或者更多关于计算'3d6'的结果?我从来没有听说过'VicBot',并且没有兴趣阅读大量的代码来了解它,但是我可以把关于随机数的东西放在一起,如果那是你实际询问的。 – Blckknght

回答

0

我不知道很多关于你的聊天机器人,也不是我真的想通过所有的代码来挖你”已经包含在你的问题中了(对于我来说,如果它是你写的代码,而不是附带的示例代码BOT)。

我能做的是解决模具滚动的问题。这很容易。所有你需要的是Python的random模块和一些字符串操作和格式化代码。

import random 

def roll_dice(dice_string): 
    """Parse a string like "3d6" and return a string showing the die rolls and their sum""" 
    number_of_dice, number_of_sides = map(int, dice_string.split("d")) 
    rolls = [random.randint(1, number_of_sides) for _ in range(number_of_dice)] 
    output_string = "{} = {}".format(" + ".join(map(str(rolls)), sum(rolls)) 
    return output_string 

输出示例:

>>> roll_dice("5d6") 
'6 + 6 + 5 + 5 + 6 = 28' 
>>> roll_dice("5d6") 
'1 + 5 + 1 + 2 + 2 = 11' 
>>> roll_dice("3d100") 
'16 + 83 + 56 = 155' 
>>> roll_dice("1d20") 
'18 = 18' 

希望的码是相当自我解释。函数中的四个语句每个都会做一件事:解析输入,生成请求的随机数,将它们格式化为字符串以输出,最后返回字符串。第二行代表实际的随机数生成,可能会将其作为一个单独的函数提取出来(使用整型参数并返回一个整数列表)。