首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的python程序返回一个ValueError?

为什么我的python程序返回一个ValueError?
EN

Stack Overflow用户
提问于 2021-03-16 13:39:48
回答 1查看 46关注 0票数 0

我正在试着写一个类似于D&D掷骰子游戏的程序。它将提示用户输入他们想要做的卷的量,输入他们的卷,并输出结果。将有三个主要函数,get_damage:接受用户输入,如果攻击高于防御,则显示损害计数。如果防御能力更强,则将伤害显示为0。get_roll:假设要模拟一个有无限可能的骰子和面孔的diceroll,看起来像10d3或20d50 (100个骰子有3个面,或20个骰子有50个面)。它将选取一个随机数,并将卷数之和相加,以显示一个整数。最后,我有一个main_menu函数,它将询问用户要玩的回合的数量,接受输入,并显示预期的结束。

例如,我的预期交换是这样的:

你想玩几轮?:(用户输入,例如2)输入玩家1的攻击和玩家2的防御:(用户输入,例如10d4,5d3)输入玩家1的攻击和玩家2的防御:(用户输入,例如4d6,1d600)

输出:玩家1攻击: 10d4,玩家2防御: 5d3,伤害:0,玩家1攻击: 4d6,玩家2防御: 1d600,伤害: 12

问题是,我得到了一个错误,说"ValueError:随机范围()的空范围(10,5,-5)“。我的代码附在下面。有没有人能对此有所了解?

代码语言:javascript
复制
 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):
    complete = random.randint(repeat,torandom)
    return complete

def main_menu():
  a = int(input("How many rolls do you want to do? "))
  c = 0
  list = []
  for roll in range (0, a):
    print("Input Player 1 and Player 2's rolls for round", roll + 1, ": ")
    b = input()
    list = list + b.split(",")
  for element in range (0, a):
    attack = list[c]
    defense = list[c + 1]
    attack1 = get_roll(attack)
    defense1 = get_roll(defense)
    print("Player 1 Attack: " + str(attack) + ", " + "Player 2 Defense: " + str(defense) + ", " + ">> Damage: " + str(get_damage(attack1, defense1)))
    c = c + 2
EN

回答 1

Stack Overflow用户

发布于 2021-03-16 13:49:15

I in range(Repeat)的完成:

= random.randint(repeat,torandom)返回complete

您希望在1和torandom之间滚动,而不是在repeattorandom之间滚动。你需要对所有的循环求和,所以只在循环结束后才返回。

代码语言:javascript
复制
complete = 0
for i in range(repeat):
  complete += random.randint(1, torandom)
return complete

如果您对该特性感到满意,您可以使用generator expression将其压缩为一行程序。

代码语言:javascript
复制
return sum(random.randint(1, torandom) for i in range(repeat))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66649649

复制
相关文章

相似问题

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