2014-10-17 5 views
0

저는 파이썬으로 코딩하는 것에 익숙하며 숫자 입력을 요구하는 루프를 작성하려고합니다. 사용자가 입력 할 때까지 읽습니다. "done"을 입력하면 루프를 빠져 나와 변수 인 number, count 및 average가 인쇄됩니다. (목록에 아무것도 저장하려고하지 않음)'done'이 입력 될 때까지 입력/루프를 try/except로 사용하는 루프

또한 "유효하지 않은"내용을 인쇄하고 사용자가 정수가 아닌 항목을 입력 한 경우 루프를 계속 진행하기를 원합니다.

불행히도 "유효하지 않은 입력"을 반환하고 "완료"를 입력해도 루핑을 유지합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 누구든지 올바른 방향으로 나를 가리킬 수 있습니까?

number = 0 
count = 0 
avg = 0 
inp = 0 
while True: 
    try: 
     inp = int(raw_input('Enter a number: ')) 
     if inp is 'done':  
      number = number + inp 
      count = count + 1 
      avg = float(number/count) 
      break 
    except: 
     print 'Invalid input' 
print number 
print count 
print float(avg) 
+1

당신은'INT (뭔가)'지금'동일 할 수있다 '방법 done''에 대한 몇 가지 생각을 주어진 적이 ????? 그리고 기적적으로''inp''가''done''이된다면,'number = number + inp'에 의해 무엇을 달성하기를 희망 했습니까? –

+1

제외 : 특정 예외를 포착하지 않고'except'를 사용하면 코드를 디버그하기가 더 어려워 질 수 있습니다. – bernie

+0

감사합니다 barak, 어떤 이유로 int() 부분이 너무 많이 내 마음을 교차하지 않았다. 하지만 "완료"를 inp에 할당 할 수 있도록 그 부분을 망가 뜨리지 않으면 inp를 사용하여 숫자에 추가 한 다음 해당 값을 number에 할당하여 나중에 프로그램이 숫자의 합계를 인쇄하도록했습니다. 'done'으로 루프를 깨뜨린 후 루프의 반복을 통해 입력되었습니다. 대신 if 문 본문의 정수로 사용자 입력을 변환해야합니까? – RTheAwesome

답변

0
sum = 0.0 
count = 0 
while True: 
    inp = raw_input('Enter a number: ') 
    if inp == 'done': 
     break 
    try: 
     sum += int(inp) 
     count += 1 
    except ValueError: 
     print 'Invalid input' 
print sum 
print count 
if count != 0: # Avoid division by zero 
    print sum/count 
+0

작동하지만 try/except를 사용하면서 수행하고 싶습니다. – RTheAwesome

+0

try/except를 사용하여 답변을 편집했습니다. – Tuomas

+0

오! 나는 지금 어디서 잘못되었는지 알아 본다. 감사! – RTheAwesome

관련 문제