首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于"get_roll“函数,我如何拆分用户的输入,例如,"1d3",意思是一个3面骰子的1次滚动,作为一个随机整数?

对于"get_roll“函数,我如何拆分用户的输入,例如,"1d3",意思是一个3面骰子的1次滚动,作为一个随机整数?
EN

Stack Overflow用户
提问于 2020-12-06 10:19:20
回答 2查看 426关注 0票数 1
代码语言:javascript
复制
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()

样本输出

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-06 11:26:04

您可以像这样使用random.randint

代码语言:javascript
复制
import random

def get_damage(attack, defense):
  if attack > defense:
    return attack - defense
  else:
    return 0

def get_roll(rollstring):
    repeat = int(rollstring.split('d')[0])
    torandom = int(rollstring.split('d')[1])
    for i in range(repeat):
        result = random.randint(repeat, torandom)
    return result
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]
    attack = get_roll(attack)
    defense = get_roll(defense)
    print ("Attack: ", attack, "Defense: ", defense, "Damage: ", get_damage(attack, defense))
    z = z + 2

main_menu()

我修复了你的一些代码。

票数 0
EN

Stack Overflow用户

发布于 2020-12-06 10:23:17

代码语言:javascript
复制
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))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65164040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档