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

x -=y只有一个条件分支,这意味着 ifhit < 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总是相同的值。
再次查看您的代码,x似乎是 hp,并且当 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在循环之外声明,则该值将永远保持不变,或者在循环三周后结束程序,或者永远不会结束。一定是这样的:

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 语句放进去:

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