2013-10-22 48 views
0

我正在写一个关于硬币翻转的程序,我希望用户输入数字并让程序翻转多次硬币。python程序将不会继续

一旦用户提供了数程序停止

这是我

import random 
flips = 0 
heads=0 
tails=0 
numFlips = raw_input("Flips ") 
while flips < numFlips: 
    flips += 1 
    coin = random.randint(1, 2) 
    if coin == 1: 
     print('Heads') 
     heads+=1 
    if coin == 2: 
     print ('Tails') 
     tails+=1 
total = flips 
print(total) 
print tails 
print heads 
+3

和你的问题是? :) –

+0

请尝试遵循[PEP8](http://www.python.org/dev/peps/pep-0008/)中描述的样式准则,并保持代码的一致性。例如,混合'print(x)'和'print x'是一个非常糟糕的主意(你应该使用适合你的python版本的东西,例如'print x'代表py2,'print(x)'代表py3) – ThiefMaster

回答

2

numFlipsstr。您必须首先将其转换为int

numFlips = int(raw_input("Flips ")) 

否则,你的支票flips < numFlips将无法​​正常工作,since all ints are 'less than' any string

(另外,要添加一些错误处理的情况下,用户进入其他的东西比一个整数)

-1

在线

numFlips = raw_input("Flips ")

raw_input()读取的字符串:http://docs.python.org/2/library/functions.html#raw_input

将其转换为整数int(raw_input("Flips "))

也可以使用input()将字符串评估为一个python表达式,在这种情况下,该表达式将评估为int。

编辑:正如@bruno desthuilliers指出的那样,使用input()是不安全的,而应该将raw_input()转换为int。

+2

这是一个错误的解决方案。 'input'不会“将字符串评估为int”,它会将该字符串评估为Python表达式,不管它是什么,包括调用“os.system('rm -rf /')”。 'input'是不安全的。不要使用'input'。执行RightThing并将输入转换为程序所期望的内容。 –

+0

请注意,您可以/应该使用'ast.literal_eval'(而不是'input' /'eval'),它可以安全地评估字符串,数字,元组,列表,字典,布尔值和无。 – sloth