Python 编写简短的RPG脚本有困难

Python 编写简短的RPG脚本有困难,python,Python,编写一个名为“compute_xp”的函数,该函数接受两个参数,这两个参数的顺序是整数和布尔值。如果布尔值为false(失败),函数将返回44993;如果布尔值为true(胜利),函数将返回44993加整数参数 这是我的代码,但当我输入一个值以使语句为真时,我总是得到一个错误的答案。在原始代码示例中,如果b==44993:将参数b与44993进行比较 由于b应为布尔值,因此此比较将始终返回false 以下是我的解决方案: def compute_xp(i, b): if b: r

编写一个名为“compute_xp”的函数,该函数接受两个参数,这两个参数的顺序是整数和布尔值。如果布尔值为false(失败),函数将返回44993;如果布尔值为true(胜利),函数将返回44993加整数参数


这是我的代码,但当我输入一个值以使语句为真时,我总是得到一个错误的答案。

在原始代码示例中,如果b==44993:将参数
b
44993
进行比较
由于
b
应为布尔值,因此此比较将始终返回
false

以下是我的解决方案:

def compute_xp(i, b):
  if b:
      return 44993 + i
  else:
      return 44993  

如果b:
检查
b
的布尔值,那么如果
b
true
,则将执行
返回44993+i
。如果
b
false
,则将执行
return 44993

为什么要将布尔变量与数字进行比较?尝试:

def compute_xp(i, b):
    if b:
        return 44993 + i
    else:
        return 44993 
或者更简短地说:

def compute_xp(i, b):
    return 44993 + i if b else 44993

我想你应该重新考虑一下

下面是我要做的:

def compute_xp(int_value, bool_value):
    if b == True:
        #If the battle is won run this code block
        #return 44993, int_value (this would return two seperate things," (44993, int_value) ")
        return 44993 + i
    else:
        #If the battle is lost, run this code
        return 44993
您编写代码不起作用的原因是,您试图将布尔值解释为整数,
如果b==44993
,那么它当然将始终为false,因为
True
false
都不是
==44993

因此,我的代码所做的是显式检查布尔值,因此只有在
b==True
的情况下,它才会
返回44993+i


我以注释的形式在代码中添加了一行额外的内容<代码>返回44993+i似乎不是一个有用的返回。返回
44993,i
将返回一个元组,索引0将是一个整数,索引1将是您的int\u值。

试试这个。请记住,布尔值只能有两个值中的一个为true或false,因此不能将其设置为等于一个数字

def compute_xp(x,y):
    if y == True:
        return (x + 44993)
    else:
        return 44993

我认为您只需要if not b而不是if b==44993,预期的输出是什么?专业提示:尝试使用更具描述性的变量名。如果您使用(例如)
def compute\u xp(extra\u xp,battle\u won):
,那么错误会变得更加明显:
如果battle\u won==44993:
没有任何意义。@0x5453除非您是那些不在乎的独角兽,对吗?还是像一个牛仔建筑工人?嗯…请通过解释他和你的代码之间的区别以及为什么它很重要,让你的答案对OP更有用。只有代码的答案并没有真正的帮助。“你为什么要这样做或那样做”并不是一个有效的开始回答的方式。能否请您进一步详细说明OP的错误之处,以及您为什么以这种方式更改代码?
def compute_xp(x,y):
    if y == True:
        return (x + 44993)
    else:
        return 44993