2017-02-15 4 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

代わりに '印刷chances'のたぶん'印刷effect_over_distance() '? – ZdaR

+2

また、すべてのif/elif/else節で 'チャンスを返す '必要はありません。関数の最後に一度だけ実行してください。 – feedMe

+0

'elif'sが間違っています。 'effect_over_distance'が300の場合、' effect_over_distance> 100 <200'は 'True'になります。 '100 Matthias

答えて

0

あなたは(あなただけreturn単一を使用する必要がありますが)あなたが欲しいchancesを返すされているから、あなたのためのチャンスを計算する関数を持っています。変数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

ねえねえ!すべての助けをありがとう!このプログラミングの世界ではまだ非常に新鮮ですが、そのようなアドバイスを得るのは素晴らしいことです。 effect_over_distanceの値がtrueの場合はTrueまたはFalseを表示するようにコードを終了する必要があります。その段階になると、中毒性が増します。haha –

関連する問題