2011-04-23 3 views
6

불행히도 raw_input은 내가 필요로하는 것을하지 않습니다. 내가하려는 것은 프롬프트에서 타이프를 입력하는 것입니다. 내가 을 while count < 50으로 바꾸면이 스크립트가 작동합니다. 프롬프트에 50을 입력하면이 스크립트는 작동하지 않습니다. raw_input이 사용하려고하는 함수가 아닌 것 같습니다. 여기 내 코드 중 일부이다파이썬 : 숫자를 읽는 raw_input 문제

testNum = 3 
div = 2 
count = 1 
totPrimes = raw_input("Please enter the primes: ") 

while count < totPrimes : 
    while div <= testNum : 
+0

제목을 좀 더 적절하게 변경하는 것이 좋습니다. p.e. 'raw_input이 숫자를 읽는 문제'또는 유사합니다. – joaquin

+0

FYI, 이것은 여러 유형의 객체를 비교할 수 있기 때문에 Python 2.x에서 문제가됩니다. 파이썬 3.x에서는'TypeError : unorderable types'를 발생시킵니다. – katrielalex

답변

11

totPrimes = int(totPrimes) 
while count < totPrimes: 
    # code 

raw_input는 당신에게 당신이 정수로 변환 또는 숫자 비교를하기 전에 떠 있어야하는 문자열을 제공 마십시오.

+0

루프 앞에서 변환 *을 수행하고 로컬 변수로 저장하는 것이 더 좋을지라도. 그렇지 않으면 불필요하게 반복 할 때마다 int를 호출 할 필요가 있습니다. – ncoghlan

+0

@ncoghlan 당신이 옳습니다. 나는 문제를 한 줄로 요약하여 보여주기 위해 그것을 썼다. 당신이 참조하는보다 효율적인 버전으로 업데이트했습니다. – joaquin

0

는이 같은 int 형으로 totPrimes 캐스팅해야합니다

integer = int(totPrimes) 
0

당신은 단지 정수에 원시 입력을 변환해야합니다. 코드의 경우 다음과 같이 코드를 변경하면됩니다.

testNum = 3 
div = 2 
count = 1 
totPrimes = raw_input("Please enter the primes: ") 
totPrimes=int(totPrimes) 
while count < totPrimes : 
    while div <= testNum : 
0

입력을 사용하십시오.

원시 입력은 문자열을 반환합니다.

입력은 int를 반환합니다.

0

에 raw_input 함수는 항상 '문자열'유형 raw_input docs을 반환, 그래서 우리는이 경우이 같은 'INT'또는 '부동'유형으로 totPrimes '문자열'형식을 변환해야합니다 :

totPrimes = raw_input("Please enter the primes: ") 
totPrimes = float(totPrimes) 

당신에게 이처럼 그들을 결합 할 수 있습니다 :

totPrimes = float(raw_input("Please enter the primes: ")) 

을 파이썬 count < totPrimes 사물을 비교하기 위해 비교를 이해하기 위해 필요 (숫자 번호를 문자열로 문자열) 또는 충돌합니다 프로그램과 while count < totPrimes : whil e 루프가 실행되지 않습니다.

try/except를 사용하여 프로그램을 보호 할 수 있습니다. managing exceptions

"모두를위한 프로그래밍"과정을 수강하는 사람들에게이 방법으로 시간과 속도를 적용 할 수 있습니다. if/else 문을 알아 내려고 노력해야합니다.

0

"hrs"또는 "rate"로 모든 숫자를 변경해야합니다.

예 : 40*10.50+(h-40)*10.50*1.5이 잘못되었습니다. 40*r+(h-40)*r*1.5이 맞습니다.

관련 문제