0

私はPythonを学んでいて、atmを失っています:

from random import randint

x = 10

y = 4

hit = randint(1,100)

while x > 0:

    if hit >= 50:

        print "you hit for %d" % y
        x -= y

    elif hit < 50:

        print "you miss"  

私がしようとしているのは、x = 0 になるまでヒットまたはミスした場合に毎回「新しい」を実行するループを実行することです。ありがとう。

4

3 に答える 3

2

条件付き分岐の 1 つにのみあります。x -=yつまり、hit < 50 x-=y実行されない場合、無限ループが発生するため、次のように変更する必要があります。

while x > 0:
    hit = randint(1,100)

    if hit >= 50:
        print "you hit for %d" % y

    elif hit < 50:
        print "you miss"
    x -= y

randintループの外にもあったのでhit、常に同じ値でした。
あなたのコードをもう一度見ると、xhp のようで、hp がなくなるとループが終了するので、x-=yその場合は問題ありません。

于 2013-03-24T02:56:49.150 に答える
2

ループのたびに異なる乱数が必要な場合は、乱数生成をループ内に配置します。と のhit = randint(1,100)間を移動します。while x > 0:if hit >= 50:

于 2013-03-24T02:56:55.453 に答える
0

がループ外で宣言されている場合hit、値は永久に同じままで、ループを 3 回周った後にプログラムが終了するか、終了しません。それはこれでなければなりません:

while x > 0:
    hit = random.randint(1,100)
    if hit >= 50:
        print "You hit for %d" % y
        x -= y
    elif hit < 50:
        print "You missed"

必須ではありませんが、1 から 100 までのランダムな整数は < または >= 50 であるため、防御的プログラミングの習慣を身に付けるのは良いことです。

    else:
        print "Error, something is wrong"
于 2013-03-24T03:10:06.593 に答える