PYTHON:简单的随机生成驱动if / else

时间:2012-04-10 04:10:50

标签: python if-statement xrange

新的编程,即时学习,这对你来说可能是一个非常简单的问题。

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)

我的问题是,无论生成什么数字,它总是给我相同的&#34;重力是一个婊子。你摔倒了,死了#34;

我哪里出错?

3 个答案:

答案 0 :(得分:5)

您实际上从未将我设置为random.randint()

你说

for i in xrange(1):

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

试试这个

i = random.randint(1, 100)

答案 1 :(得分:5)

除了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

答案 2 :(得分:0)

也许你实际上已经分配了i ...

i = random.randint(1, 100)

另一件事:else部分永远不会被执行。每个整数都是&lt; = 70或&gt; = 71,因此永远不会达到else