Извиняюсь, если это дубликат, я провел тщательный поиск и не смог найти ответ на этот конкретный вопрос.
Я строю программу, которая будет принимать входные данные в формате «XdY» (то есть 4d6, 1d20, 3d10 и т. Д.) И генерировать нужный бросок костей. Мне нужно превратить входную строку в два отдельных значения для количества выпавших кубиков и количества сторон на указанном кубике. Например, учитывая
roll = "3d6"
Я хочу закончить с
number = int("3")
sides = int("6")
Я предполагаю решение, которое разделит исходную строку на одну строку, содержащую все слева от «d» и одну со всем справа от нее, при этом отбрасывая сам символ «d». На данный момент у меня есть программа, настроенная для обработки значений «число» и «стороны», но только если они вводятся как две отдельные целые.
3 ответа
Простое решение:
number, sides = map(int, roll.split('d'))
Просто разделите вашу roll
строку на 'd'
, преобразуйте полученные строки в числа и присвойте их number
и sides
соответственно.
ИЛИ ЖЕ:
>>> roll = "3d6"
>>> number,sides=(int(i) for i in roll.split('d'))
>>> number
3
>>> sides
6
Простое регулярное выражение будет хорошо работать:
match = re.match(r"(\d+)d(\d+)", "2d10")
m.group(1) # '2'
m.group(2) # '10'
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.