新的编程,即时学习,这对你来说可能是一个非常简单的问题。
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;
我哪里出错?
答案 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
。