2013-10-22 49 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