首页 > 解决方案 > Python我正在尝试制作一个骰子滚轮,它可以添加总数并滚动多种骰子

问题描述

作为一种更熟悉 python 的方法,我想为 Dungeon and Dragons 制作一个掷骰子,但我遇到了一个问题。我已经到了输入“d4 + d6”之类的内容并获得类似 1+5 作为字符串的程度,但是我希望将随机数加在一起。但是,当我尝试将它们打印为 int 时,我得到了。回溯(最后一次调用):文件“C:\Users[redacted]\PycharmProjects\DndDice\main.py”,第 11 行,在 print(int(roll)) 中 ValueError:int() 以 10 为底的无效文字: '1 + 3' 我的代码是

import random 
while 1 == 1
d4 = random.randrange(1, 4)
d6 = random.randrange(1, 6)
roll = input("Roll a >")
if "d4" in roll:
    roll = roll.replace("d4", '{d4}')
if "d6" in roll:
    roll = roll.replace("d6", '{d6}')
roll = roll.format(d4 = d4, d6 = d6)
print(int(roll))

标签: python

解决方案


我认为您的主要问题是您正在尝试将字符串转换为 int。虽然这可以通过一些解析来实现;我认为最简单的方法是在滚动时存储数字。由于您已经在解析“d4”和“d6”,因此只需存储解析时滚动的数字,而不是重新组装新字符串并再次解析。

这是一个例子:

import random 
while 1 == 1:
    roll = 0
    d4 = random.randrange(1, 5)
    d6 = random.randrange(1, 7)
    
    roll_text = input("Roll a > ")
    if "d4" in roll_text:
        roll += d4
    if "d6" in roll_text:
        roll += d6
    print(roll)

一个问题是每个输入只解析一个“d4”和“d6”,但我相信这可以通过某种 for 循环而不是 if 语句来解决。

旁注:我认为 randrange 不包含上限。


推荐阅读