2011-11-13 75 views
1

這是一個更大的問題的一部分,但我遇到了一些問題,如果/ elif函數。Python if/elif問題與random.randint

def fish(): 
    import random 

    score = 0 

    i = random.randint(0,39) 

    if i == [0,19]: 
     print("You caught nothing!") 
    elif i == [20,39]: 
     print("You caught a Minnow! +10 points.") 
     score += 10 
    print(i) 
    print(score) 
fish() 

當我運行這個時,我得到的只是randint數字,0表示得分。我不確定我在這裏做錯了什麼。

+1

您的問題無關'random.randint'和無關的if/elif的邏輯;它與比較值有關。想清楚你所期望的'i == [0,19]'是什麼意思,爲什麼它應該是這個意思。 –

回答

1

你是一個整數比較列表。

做你想做什麼,這裏有一個方法:

if i in range(0, 20): 
    print("You caught nothing!") 
elif i in range(20, 40): 
    print("You caught a Minnow! +10 points.") 
    score += 10 
6

是的,恩......這不是它的工作原理。你正在比較一個整數到一個列表。

if 0 <= i < 20: 
     print("You caught nothing!") 
    elif 20 <= i < 40: 
     print("You caught a Minnow! +10 points.") 
     score += 10 
+0

啊,謝謝。我顯然是新手。 – apichel

0

你想要做的是:

if i in range(20): 
    print("You caught nothing!") 
elif i in range(20,40): 
    print("You caught a Minnow! +10 points.") 
    score += 10 

或許更好:

if i < 20: 
    print("You caught nothing!") 
else: 
    print("You caught a Minnow! +10 points.") 
    score += 10 
0

iint,您將int與012的列表進行比較個S,你應該:

if i in range(19) 
... 
elif i in range(20,39):