我如何让我的python代码查看字符串?

cngwdvgl  于 2023-04-08  发布在  Python
关注(0)|答案(1)|浏览(117)

我正在为DnD制作一个不和谐的Python机器人。我已经让机器人识别!roll命令,如果它们都是间隔开的,我已经让它识别等式。例如,!roll d6 + d6 × d20
我正在努力让机器人接受一个命令,这是所有在一个“字”,例如,!roll d6+d6×d20。我试图使一个代码,将分离这个“字”在操作。结果应该看起来像第一个例子。
我有一些代码,我将添加到下面的我已经。我在一个操作的时间,所以我只需要帮助工作的一个,然后我可以只使用它的所有其他人。
还有,我现在只是让它打印“e”作为一个指示。如果需要,请更改它。我很感激我能得到的任何帮助。

prompt = "!roll 2d8 + d20 /d4+ d6"
a = "+"
b = "×"
c = "÷"
d = "/"
e = "<"
f = ">"
g = "%"
h = "*"
sp = " "

for x in prompt:
    e = prompt.index(x)
    if (x == a) and (prompt[e -1] == " ") and (prompt[e+1] == " "):
        continue
    else:
        print("e")

print(prompt)
ajsxfq5m

ajsxfq5m1#

如果你想尝试一下,这里有一个不需要正则表达式的方法:

from random import randint

def roll(dice_string):
    result = ""
    for index in range(len(dice_string)):
        char = dice_string[index]
        if char.isdigit() and (index == len(dice_string) - 1 or not dice_string[index + 1].isdigit()):
            result += char + ")"
        else:
            result += char
    result = result.replace('d', '~~~')
    result = result.replace('~~~', 'randint(1, ')
    result = result.replace('x', '*')
    result = result[6:]
    print(result)
    try:
        result = eval(result)
    except Exception as e:
        print("Whoops:", e)
    return int(result)

print(roll("!roll d6+d6xd20"))

不可否认,这是一个有点黑客,但它似乎是工作。

相关问题