2017-02-15 23 views
-5

想要一個使用windspeed和目標距離來確定箭頭是否會擊中目標的程序。有這麼遠但沒有打印任何結果。Python「將箭頭直飛程序」

#Code starts here 
#Will arrow hit target? 
import random 
from random import randint 



windspeed = randint(1,5) 
target_dist = randint(10, 100) 


def effect_over_distance(): 
    effect_over_distance = windspeed * target_dist 
    if effect_over_distance < 100: 
     chances = randint (1,3) 
     return chances 
    elif effect_over_distance > 100 < 200: 
     chances = randint (1,10) 
     return chances 
    elif effect_over_distance >200 < 300: 
     chances = randint (1,50) 
     return chances 

    else: 
     chances = randint (1,50) 
     return chances 


print chances 
+8

也許'打印effect_over_distance(''的打印chances'代替)? – ZdaR

+2

你也不需要在每個if/elif/else子句中返回機會。只需在函數結尾處執行一次即可。 – feedMe

+0

'elif's是錯誤的。如果'effect_over_distance'爲300,則'effect_over_distance> 100 <200'將爲'True'。你需要100 Matthias

回答

0

你必須計算的機會給你,從你返回你想要的chances(雖然你只需要使用一個return)的功能。變量chances對於主程序是未知的,所以print chances也應該產生NameError,因爲它是未定義的。

你應該打電話給你的函數返回的輸出分配給一個變量,如下所示:

# import random <-- This is overkill as you only need randint which you import below 
from random import randint 

windspeed = randint(1,5) 
target_dist = randint(10, 100) 

def effect_over_distance(): 
    effect_over_distance = windspeed * target_dist 
    if effect_over_distance <= 100: 
     chances = randint (1,3) 
    elif effect_over_distance <= 200: 
     chances = randint (1,10) 
    elif effect_over_distance <= 300: 
     chances = randint (1,50) 
    else: 
     chances = randint (1,50) 
    return chances 

foo = effect_over_distance() 
print foo 
+0

嘿傢伙!感謝所有的幫助!在這個編程世界中仍然非常新鮮,但得到如此好的建議真是太棒了。仍然需要完成代碼,以便它顯示True或False,如果effect_over_distance的值...達到那個階段,它變得令人上癮..哈哈 –