본문 바로가기
공부/파이썬

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

by 남오공 2022. 1. 13.
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을 이용해야 하는 것인가..

댓글