python - 对于“get_roll”函数,我将如何拆分用户的输入,例如“1d3”,即 3 面骰子的 1 次掷骰,作为随机整数?
问题描述
import random
def get_damage(attack, defense):
if get_roll(attack) > get_roll(defense):
return get_roll(attack) - get_roll(defense)
else:
return 0
def get_roll(rollstring):
def main_menu():
x = int(input("How many rolls do you want to take?: "))
z = 0
list = []
for roll in range(0,x):
print("Input attack and defense roll", roll + 1, ": ", end="")
y = input()
list = list + y.split(",")
for element in range(0, x):
attack = list[z]
defense = list[z+1]
print ("Attack: ", attack, "Defense: ", defense, "Damage: ", get_damage(attack, defense))
z = z + 2
main_menu()
样本输出
How many rolls do you want to take? 3
Input attack and defense roll 1: 1d3,1d3
Input attack and defense roll 2: 1d6,1d3
Input attack and defense roll 3: 1d6,1d10
Attack:1d3, Defense:1d3 : Damage: 0
Attack:1d6, Defense:1d3 : Damage: 2
Attack:1d6, Defense:1d10 : Damage: 0
解决方案
import random
rollstring = '5d5'
num_rolls, sides = rollstring.split('d')
rolls = []
for roll in range(int(num_rolls)):
rolls.append(random.choice(range(int(sides))))
print(rolls)
print(sum(rolls))
推荐阅读
- apache-spark - 在没有持久化或缓存的情况下,Spark 是否会在每次操作时从磁盘读取数据?
- javascript - 如何使用javascript在emojiable textarea中将值设置为null
- assembly - 我的 `cat` 函数中是否存在潜在错误?
- c# - C# 使用哪种模式来为长时间运行的任务提供同步和发布/订阅方案
- xslt - 第一次匹配获取遍历子节点的子子属性值
- paypal - 贝宝结帐中的特定行项目
- java - UML 类图 - 用于扩展通用抽象类的符号?
- angular - Angular Reactive Form patchValue() 不填充连接到 mat-autocomplete 的输入
- c# - 如何防止 .NET 变成 EXEC 的 SELECT 语句中的参数嗅探?
- reactjs - React 项目中的图标文件夹默认被忽略