4

编程新手,我正在学习,这对你们来说可能是一个非常简单的问题。

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

你从来没有真正将 i 设置为random.randint()

你说

for i in xrange(1):

0当您迭代时i 取 的值,xrange(1)然后您只需打印出 的结果random.randint(1, 100),而不是将其分配给 i。

试试这个

i = random.randint(1, 100)
于 2012-04-10T04:13:21.830 回答
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. 根据定义(对于整数!)只有其中一个条件为真,因此您实际上不需要同时检查它们。

例子:

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 回答
0

也许如果你真的分配了一些东西给i......

i = random.randint(1, 100)

还有一件事:这else部分永远不会被执行。每个整数要么 <= 70 要么 >= 71,所以else永远不会达到。

于 2012-04-10T04:14:32.077 回答