4

プログラミング、im学習は初めてで、ここはおそらくあなたにとって非常に単純な問題です。

import random

def run_stair_yes():
    print "\nRunning in stairs is very dangerous!"
    print "Statistique shows that you have 70% chance of falling"
    print "\nroll the dice!"


    for i in xrange(1):
        print random.randint(1, 100)

    if i <= 70 :
        print "\nWell, gravity is a bitch. You fell and die."

    elif i >= 71 :
        athlethic()

    else: 
            print "im boned!"
            exit(0)

私の問題は、どんな数が生成されても、それは常に私に同じ「重力は雌犬です。あなたは倒れて死ぬ」ということです。

どこが間違っていますか?

4

3 に答える 3

6

jamylak のアドバイスに加えて、コードを改善するための一般的な指針:

  • 複数行のプロンプトは、複数のprintステートメントではなく、三重引用符で囲まれた文字列構文を使用して作成する方が適切です。そうすれば、一度だけ書く必要があり、余分な改行文字 ( )printはすべて必要ありません。\n

例:

print """
Running on the stairs is dangerous!

You have a 70% chance to fall.

Run on the stairs anyway?
"""
  • 確率計算では [1-100] の範囲のランダムな整数を使用していますが、おそらく浮動小数点数を使用する方が自然です。(どちらの方法でも動作します。)

  • 番号が<= 70であるかどうかを確認してから、 であるかどうかを確認する必要はありません>= 71。定義上 (整数の場合!)、これらの条件の 1 つだけが true になるため、実際には両方をチェックする必要はありません。

例:

random_value = random.random() # random number in range [0.0,1.0)
if random_value < 0.7:
    pass #something happens 70% of the time
else:
    pass #something happens the other 30% of the time

またはよりコンパクトに:

if (random.random() < 0.7):
    pass #something happens 70% of the time
else:
    pass #something happens 30% of the time
于 2012-04-10T04:24:15.997 に答える
6

実際に i をrandom.randint()

あなたは言う

for i in xrange(1):

i は、0を反復処理するときに の値を取得し、 i に代入するのではなくxrange(1)、 の結果を出力するだけです。random.randint(1, 100)

これを試して

i = random.randint(1, 100)
于 2012-04-10T04:13:21.830 に答える
0

たぶん、実際に何かを割り当てた場合i...

i = random.randint(1, 100)

もう 1 つ、このelse部分は決して実行されることはありません。すべての整数は <= 70 または >= 71 であるため、elseに到達することはありません。

于 2012-04-10T04:14:32.077 に答える