2013-10-22 2 views
0

나는 동전 던지기에 관한 프로그램을 쓰고 있습니다. 사용자가 숫자를 입력하고 프로그램이 여러 번 동전을 뒤집기를 원합니다. 파이썬 프로그램이 계속되지 않습니다

사용자가 다수에게 프로그램을 제공하면

이 제가

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'를 혼합하는 것은 매우 나쁜 생각입니다 (py2의 경우'print x'와 py3의 경우'print (x)') – ThiefMaster

답변

2

numFlipsstr 인이 무엇

을 멈춘다. 먼저 int으로 변환해야합니다.

numFlips = int(raw_input("Flips ")) 

그렇지 않으면, 수표 flips < numFlipssince all ints are 'less than' any string, 작동하지 않습니다.

은 (또한, 추가 할 몇 가지 오류 처리 사용자가 정수가 아닌 다른 뭔가를 입력하는 경우에)

numFlips = raw_input("Flips ")

raw_input() 문자열 읽어 줄에

-1

: http://docs.python.org/2/library/functions.html#raw_input

이렇게하면 정수로 변환합니다. int(raw_input("Flips "))

input()을 사용하여 문자열을 파이썬 표현식으로 평가할 수도 있습니다.이 경우 파이썬 표현식은 int로 평가됩니다.

편집 : @ bruno desthuilliers가 지적한 것처럼 input()을 사용하는 것은 안전하지 않으며 raw_input()을 int로 변환해야합니다.

+2

그리고 그것은 아주 잘못된 해결책입니다. 'input'은 "문자열을 int로 평가"하지 않으며 "os.system ('rm -rf /')"호출을 포함하여 문자열을 파이썬 표현식으로 평가합니다. 'input'은 안전하지 않습니다. 'input'을 사용하지 마십시오. RightThing을 수행하고 입력을 프로그램이 예상하는 것으로 변환하십시오. –

+0

'ast.literal_eval' ('input' /'eval' 대신)을 사용할 수 있습니다. 문자열, 숫자, 튜플,리스트, 딕테이션, 부울 및 None으로 안전하게 평가할 수 있습니다. – sloth

관련 문제