【发布时间】:2015-10-24 20:07:24
【问题描述】:
我正在尝试学习 Python,并且正在制作文本 rpg 作为练习。下面的函数旨在根据百分比随机分配 npc 统计数据,这些数据因班级而异。
def mob_Stat_Assign(self, level):
statCount = (3 * self.level)
while(statCount > 0):
statRoll = random.randrange(1, 101)
if(statRoll >= (100 - self.statS)):
self.strength += 1
elif((statRoll >= (100 - (self.statP + self.statS)) and (statRoll < (100 - self.statS))):
self.perception += 1
elif((statRoll >= (100 - (self.statE + self.statP + self.statS) and (statRoll <(100 - (self.statP + self.statS)))):
self.endurance += 1
elif((statRoll >= (100 - (self.statC + self.statE + self.statP + self.statS)) and (statRoll < (100 - (self.statE + self.statP + self.statS)))):
self.charisma += 1
elif((statRoll >= (100 - (self.statI + self.statC + self.statE + self.statP + self.statS)) and (statRoll < (100 - (self.statC + self.statE + self.statP + self.statS)))):
self.intelligence += 1
elif((statRoll >= (100 - (self.statA + self.statI + self.statC + self.statE + self.statP + self.statS)) and (statRoll < (100 - (self.statI + self.statC + self.statE + self.statP + self.statS))
self.agility += 1
else:
self.luck += 1
statCount -= 1
当我尝试编译时,我收到一个错误,指出语法无效,并且第一个 elif 语句末尾的冒号被突出显示。
我可以通过将 (100 -(self.statP + self.statS)) 放入一个变量并将其代入来解决此问题,但是在下一个 elif 语句中出现了同样的错误。 我确信我可以通过以类似方式为所有语句定义条件变量来修复整个函数,但我真的很想知道为什么这不能按原样工作。
我看不出两者之间的区别
(statRoll >= (100 - (self.statP + self.statS))
和
x = (100 - (self.statP + self.statS))
(statRoll >= x)
【问题讨论】:
-
仔细数括号。
-
使用更好的名称会有很大帮助。
statP是什么?为什么使用statRoll而不是roll?这是非常规的(即难以阅读)camelCase_Especially_With_Underscores。 docstring 总是一个好主意。
标签: python if-statement syntax-error