공부/파이썬

모두를 위한 프로그래밍 7주차

남오공 2022. 1. 13. 21:31
728x90

for 문을 이용하는 강의 

 

파이썬은 복수형을 이해하지 못하기 때문에 아래 예시에서는 리스트 형으로 이해하여 

오른쪽 처럼 출력하게 하게 된다

 

 

과제

 

5.2 Write a program that repeatedly prompts a user for integer numbers until the user enters 'done'. Once 'done' is entered, print out the largest and smallest of the numbers. If the user enters anything other than a valid number catch it with a try/except and put out an appropriate message and ignore the number. Enter 7, 2, bob, 10, and 4 and match the output below

 

5.2 사용자가 '완료'(done)를 입력할 때까지 정수를 입력하라는 메시지를 반복적으로 표시하는 프로그램을 작성하십시오. 
'완료'가 입력되면 가장 큰 숫자와 가장 작은 숫자를 인쇄합니다. 
사용자가 유효한 숫자가 아닌 다른 것을 입력하면 try/except로 이를 포착하고 적절한 메시지를 표시하고 숫자를 무시합니다.
7, 2, bob, 10 및 4를 입력하고 아래 출력과 일치시키시오

결과 값
Invalid input
Maximum is 10
Minimum is 2


작성한 코드는 

largest = 0
smallest = 1000
while True:
    num = input("Enter a number: ")


    if num == "done":
        break

    try:
        num = int(num)
    except:
        print("Invalid input")
        continue
    
 
        
    if num>largest:
        largest=num
    elif num<smallest:
        smallest=num
        
        
    

print("Maximum is", largest)
print("Minimum is", smallest)


이렇게 해서 아래처럼 결과가 잘 나오는데

뭐가 문제일까?

이런 오류가 나온다. 왜일까..  하여 다른 사람들 예제를 찾아보다가

largest = None
smallest = None
while True:
    num = input("Enter a number: ")


    if num == "done":
        break

    try:
        num = int(num)
    except:
        print("Invalid input")
        continue
    
    
        
    
    if largest == None:
        largest=num
    elif num>largest:
        largest=num


    
    if smallest ==None:
        smallest=num
    elif num<smallest:
        smallest=num
        
    

print("Maximum is", largest)
print("Minimum is", smallest)

 

이와 같이 작성하니까 제대로 점수가 맞춰쪘다.

꼭 none을 이용해야 하는 것인가..