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