noobie在for循环中遇到if语句有问题
def abilityBuy():
totalPoints = 28
abilities = {
"Str":0,
"Con":0,
"Dex":0,
"Int":0,
"Wis":0,
"Cha":0
}
for i,v in abilities.items():
print "You have %s points." % totalPoints
text = "Enter stat for %s: " % i
stat = raw_input(text)
if stat == 18:
totalPoints = totalPoints - 16
elif stat == 17:
totalPoints = totalPoints - 13
elif stat == 16:
totalPoints = totalPoints - 10
elif stat == 15:
totalPoints = totalPoints - 8
elif stat == 14:
totalPoints = totalPoints - 6
elif stat == 13:
totalPoints = totalPoints - 5
elif stat == 12:
totalPoints = totalPoints - 4
elif stat == 11:
totalPoints = totalPoints - 3
elif stat == 10:
totalPoints = totalPoints - 2
elif stat == 9:
totalPoints = totalPoints - 1
elif stat == 8:
totalPoints = totalPoints - 0
abilities[i] = stat
print abilities
abilityBuy()
当跑步时,它假设推断出一个统计数字所需的点数 例如:如果stat等于18 将totalPoints减少16 这将给予总点数为12点的余数,但是当运行时,if语句似乎被忽略并且跳过它们,添加到字典并循环并表示totalPoints仍然等于28
我不知道它是否是造成问题或其他内容的缩进,我还有其他for循环if if语句并且它们按照它们的假设工作,但是这个没有似乎做了我要求的事情
对任何建议开放
感谢
Lyncius
答案 0 :(得分:1)
这是因为你的stat = raw_input
正在返回一个str值。 stat是一个str,在你的if语句中你试图将它与一个整数进行比较。 str == int
永远不会成功。要么将stat转换为int,要么将它与str进行比较......
stat = int(stat)
或
if stat == "18":
两者都可以解决
答案 1 :(得分:1)
答案 2 :(得分:0)
首先想到的是:raw_input()
返回一个字符串,但你的if语句将stat与整数进行比较,因此它们都不会评估为true。
一个简单的解决方案是转换它:int(stat)
,但是您需要添加一个检查,以便用户输入超出您测试的非数字或值(即,如果用户输入19或'a')。 / p>
答案 3 :(得分:0)
改变:
这 stat = raw_input(text)
要 stat = int(raw_inpur(text))
问题解决了