2014-02-11 52 views
0

我一直在测试一些我的代码,由于某种原因,我的if语句被忽略。第一条if语句有效,但第二条if语句不成立,我试图将其更改为elif,但它仍然无效。提前致谢。如果声明不发生

import random 


diff = input("What is the ritual difficulty? ") 
level = input("How many ritual levels do you have that pertain to this ritual? ") 

bag = [] 

for success in xrange(10): 
    bag.append("Success") 

bag.append("Flaw") 
bag.append("Fail") 

extra = level - diff 

if extra >= 1: 
    extra = extra/2 

    int(extra) 
    for chance in xrange(extra): 
     bag.append("Success") 

if extra < 0: 
    for chance in xrange(extra): 
     bag.append("Flaw") 
     bag.append("Fail") 
     bag.append("Backlash") 

print bag 

random.shuffle(bag) 

outcome = bag.pop() 

print "The outcome of the ritual is: ", outcome 
+0

@Wooble他在质询说第二if语句是一个被忽略。 –

+3

如果额外<0,那么xrange(extra)将为空 –

+0

@PeterdeRivaz我从来没有在python中工作,但如果这是真的,如果额外<0 xrange将是空的,那么这将意味着for循环将立即退出它看起来像if语句被忽略。 –

回答

3

你第二if将进入如果difflevel大。然而,即使没有得到进入它,它不会actally做一些事情:

if extra < 0: 
    for chance in xrange(extra): 
     bag.append("Flaw") 
     bag.append("Fail") 
     bag.append("Backlash") 

xrange功能将产生一个空的“名单”(这实际上不是一个列表,为documentation for xrange解释)为负值,即什么都不会被附加到包里。

+0

(假设你想通过使用'xrange(-extra)'来解决这个问题。 – geoffspear

+0

@Wooble可能或者可能是'extra/-2'(就像其他的'if'一样):我不太了解在这里执行的模糊仪式能够分辨出什么是正确的和什么是错误的;-) –

0

它不会被忽略,但是当您在xrange(extra)上运行for循环且extra为负时,显然此循环会立即终止。

P.S:你可能会想尝试xrange(-extra),而不是...