2016-10-05 2 views
-3

이것은 연습입니다.일부 파이썬 연습 및 일부 입력이 필요합니다

사용자가 '완료'를 입력 할 때까지 정수 번호 을 반복적으로 묻는 프로그램을 작성하십시오. '완료'를 입력하면 가장 큰 숫자와 가장 작은 숫자 인 을 인쇄하십시오. 사용자가 다른 번호를 입력하면 유효한 번호보다 이 try/except와 함께 붙잡고 적절한 메시지를 출력하고 번호를 무시합니다. 서적의 번호 5.1을 입력하고 그림과 같이 원하는 출력을 맞추십시오.

결과는 같아야합니다

Invalid input 
Maximum is 7 
Minimum is 4 

내 코드 :

largest = None 
smallest = None 
while True: 
    num = raw_input("Enter a number: ")   
    if num == "done" : break 
    if len(num) < 1 : break   
    try : 
     num = int(num) 
    except :  
     print "Invalid input" 
     continue   
print "Maximum", largest 
print "Minimum", smallest 

왜 프로그램이 가장 크고 작은를 인쇄되지 않는 이유는 무엇입니까?
내가 뭘 잘못하고 있니?

+6

둘 다 여전히 '없음'이기 때문에 절대로 다시 지정하지 않습니다. 고무 오리에 코드를 설명하면 곧 문제가 나타납니다. – jonrsharpe

+0

숫자를 저장하지 않고 '가장 큰'변수와 '가장 작은'변수를 절대로 '없음'에서 변경하지 마십시오. –

+1

호기심 - 지금 파이썬을 배우고 있다면 가장 최근 버전 (3.5)을 배우지 않는 이유는 무엇입니까? – Nicarus

답변

0

큰 값과 작은 값을 입력하지 않았습니다.

largest = float('-inf') # Always smaller than any number 
smallest = float('inf') # Always larger than any number 
while True: 
    num = raw_input("Enter a number: ")   
    if num == "done" : break 
    if len(num) < 1 : break   
    try : 
     num = int(num) 
    except :  
     print "Invalid input" 
     continue 
    # set largest and smallest 
    # initial inf forces first entry to reset the value 
    largest = max(largest, num) 
    smallest = min(smallest, num) 
    # Because None is always smaller than any integer 

print "Maximum", largest 
print "Minimum", smallest 
+0

일부 불쾌한 if/then 블록 - 왜 그냥'max()'와'min()'을 사용하지 않을까요? – Nicarus

+0

@Nicarus @ - 무한대를 초기 값으로 사용하여 수정하지 마십시오. – sabbahillel

+0

@Nicarus 방금 시작했습니다. 몇 가지 기능 만 알고 있지만 입력에 대해 감사 드리며 코드 에서처럼 사용했습니다. 위. –

관련 문제