python - 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))
解决方案
我认为您的主要问题是您正在尝试将字符串转换为 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 不包含上限。
推荐阅读
- php - WooCommerce 用户注册后重定向到特定页面
- css - 是否有一个选择器查看表 td 的内容并决定应用背景红色,例如,如果 td 包含“$-”,则为负数
- statistics - 我们如何比较同一调查的两个数据集(不同大小和来自两个不同的人群)。调查包含名义类别
- javascript - 问题不断重复
- ios - 使用 iOS 的不正确的特征长度
- html - 如何修改 Excel 的 VBA 代码以与 Access 表一起使用?
- html - 具有两个字段的可点击列表项:序列号和名称
- python - 如何使用 tkinter python 将变量设置为 text_areas 中的文本?
- c# - Auth0 WebApi asp.net 核心设置
- terraform - 在 IBM 云上运行 terraform 导入时出现 Terraform 崩溃错误