벌써 챕터 7까지 왔다. 절반 이상은 왔다는 소리다. 조금 더 힘내서 파이팅 해보자~ㅎㅎ

 이번 장에서는 입력 함수와 또 다른 loop문인 while에 대해서 공부해보자. 우리가 지금까지 출력 함수인 print()를 자주 써왔다. 우리는 지금까지 출력 값으로 variable 또는 지정된 값만 넣어서 사용했다. 그러면 그때그때 값이 다르게 출력하고 싶으면 어떻게 해야 하는가? 바로 입력 함수인 input()을 사용하면 원하는 값을 출력할 수 있다. variable도 초기값을 설정해서 사용하는 것이 아니라 직접 입력해서 원하는 값을 넣어 사용할 수 있는 것이다. 

 

  • How the input() Function Works

 그러면 지금부터 어떻게 input()을 사용하는지 천천히 알아보자. 흔히 우리가 알고 있는 입력 함수는 프로그램을 실행하면 콘솔 창에 값을 입력하고 엔터키를 누르면 입력되는 방식이었다. 그렇다면 파이썬은??? 크게 다르지 않다. 우리가 알고 있는 방식으로 하면 충분히 값을 입력할 수 있을 것이다. 아래 예제를 살펴보고 사용법을 알아보자.

 

message = input("Tell me something, and I will repeat it back to you : ")
print(message)

결과
Tell me something, and I will repeat it back to you : hi		# 입력값 : hi
hi

 

 예제를 살펴보면 input() 안에 설명글을 적을 수 있는 걸 알 수 있다. 저 글은 실제로 입력되는 값은 아니며 어떤 입력값을 입력해야 하는지 도와주는 글로 쓸 수 있다.

 다음으로 알아야 할 내용은 우리가 입력하는 모든 값은 string type으로 저장된다는 것이다. 이 말이 무슨 말이냐면.... 우리가 입력값으로 20을 입력한다고 해도 숫자 20이 아니라 문자열 '20'으로 입력된다는 것이다. 그렇기 때문에 우리가 다른 type을 입력값으로 지정하기 위해서는 아래 예제와 같이 사용해야 한다. 아래 예제를 살펴보고 다른 type으로 입력값을 넣는 방법에 대해 알아보자.

 

age = int(input("How old are you?"))	# int(a) : a type을 int type으로 변환
print(type(age))			# age type 확인
print(age)

결과
How old are you? 23			# 입력값 : 23
<class 'int'>
23

 

 책에서는 값을 입력 후 int()로 변환하여 다시 대입하고 있지만 이렇게 한번에 처리하는 것도 가능하기 때문에 과정을 생략해봤다. int()외에도 float(), list() 등등으로 변환할 수 있기 때문에 경우에 맞게 사용하면 type 지정을 더 쉽게 할 수 있다.

 다음으로는 modulo poerator에 대해서 나오는데 일반적으로 알고 있는 연산자와 지금 나온 연산자 등 밑에 표로 정리했으니 파이썬에서 자주 쓰는 연산자에 대해서 정리해보고 넘어가자.(이외에도 많이 있지만 그것은 구글링!!!!!^^)

 

연산자 의미 example
+ 더하기 2 + 1 = 3
- 빼기 2 - 1 = 1
* 곱하기 2 * 1 = 2
/ 나누기 2 / 1 = 2
** 제곱 2 ** 3 = 8
// 3 // 3 = 1
% 나머지 3 % 2 = 1

 

  • Introducing while Loops

 다음으로 loop문인 while()에 대해 배워보자. 앞서 배웠던 for()문의 형태와는 조금 다른 형태를 가지고 있다. 더 간단한 형태를 띄고 있는데 while()문은 조건문만 적으면 완성되기 때문에 for()문처럼 초기값, 초기값에 쓰이는 값, 조건문 이렇게 많이 필요한 것이 아니라 조건문 하나만 쓰면 되기 때문에 사용법은 더 간단하다. 그렇기 때문에 조건문에서 쓰이는 variable이나 무한 loop가 되지 않게 설정하는 조건 등은 다른 곳에서 미리 설정을 해줘야 한다는 점도 있다. 먼저 아래 예제를 살펴보고 while()문의 사용법을 알아보도록 하자.

 

current_number = 1			# 초기값 설정
while current_number <= 5:		# 조건문 설정
    print(current_number)		# 내용
    current_number += 1			# 무한 loop에 걸리지 않는 조건 설정
    	
결과
1
2
3
4
5

 

 예제를 살펴보니 형태는 더 간단하지 않은가? 대신 신경써야 할 조건들이 존재할 뿐이다. 주의만 한다면 잘 이용할 수 있을 것 같다. 위의 예제 외에도 책에서 다른 종료 방법에 대한 예제가 몇 개 추가되어 있으니 실행해보고 자신이 원하는 스타일로 만들어보도록 하자.

 다음으로 여기서 새로 나온 키워드 두 개가 있는데 break와 continue이다. 이 두 키워드를 알아보도록 하자.

 

  • break

 break는 말 그대로 멈춘다는 의미이다. 우리가 loop문을 쓸 때 가장 주의해야 하는 점이 무엇인가? 바로 무한 loop가 걸리지 않게 조건을 만들어 줘야 되는 것이다. 그 때 자주 사용하는 것이 break이다. break는 특정 loop문을 강제로 멈추는 기능을 하고 있으며 특정 조건 만족 시 break문이 실행되게 한다면 깔끔하게 loop문을 종료시킬 수 있는 것이다. 아래 예제를 살펴보고 break문의 사용법에 대해 알아보자.

 

prompt = "\nPlease enter the name of a city you have visited:"
prompt += "\n(Enter 'quit' when you are finished.) "
while True:							# 무한 루프
    city = input(prompt)
    if city == 'quit':						# 무한 루프 종료 조건
        break							# 무한 루프 종료
    else:
        print(f"I'd love to go to {city.title()}!")


결과
Please enter the name of a city you have visited:
(Enter 'quit' when you are finished.) efjkld
I'd love to go to Efjkld!

Please enter the name of a city you have visited:
(Enter 'quit' when you are finished.) ejfaie
I'd love to go to Ejfaie!

Please enter the name of a city you have visited:
(Enter 'quit' when you are finished.) quit			# 종료

 

  • continue

 continue는 우리가 영화나 드라마에서 많이 본 단어인데 to be continue..... 이런 식으로 항상 마무리될 때 나오는 멘트였다. 이와 같이 기능을 유추해보면 무난히 진행하는 기능을 가지고 있을 것 같지만 그게 맞다...ㅎㅎ 조건문을 설정은 했지만 별다른 실행할 내용이 없을 때 넘어가게 해주는 녀석이 바로 continue이다. break와는 정반대의 기능을 가지고 있으며 아래 예제를 살펴보고 어떻게 사용하는지 알아보자.

 

current_number = 1
while current_number < 10:
    current_number += 1
    if current_number % 2 == 0:		# 짝수 조건
        continue			# 현재 진행되고 있는 while문 생략(간단 종료?)
    print(current_number)

결과
3
5
7
9

 

 위의 예제는 설명을 하면 위의 while문 조건을 살펴보면 current_number가 1~9까지 총 9번 실행된다. 그 중에서 %2의 조건이 있으므로 짝수인 2, 4, 6, 8에서는 continue가 실행되므로 print가 실행되지 않고 그때의 loop문은 간단 종료가 되는 것이다. 어떻게 보면 break와 햇갈릴 수도 있는데 한 줄로 정리하면 이렇게 된다.

  • break : loop문 전체 종료(뒤에 몇 번이 남았건 종료)
  • continue : loop문 현재 실행되고 있는 구간만 종료(생략 기능)

 

  • Using a while Loop with Lists and Dictionaries

 마지막으로 while()문과 list, dic type을 사용하는 방법에 대해 알아보자. 예제가 1~2개 나와있기에 실행은 해보았지만 역시 list는 for문으로 쓰는 것이 더 편한 것 같다는 생각이 든다. while문은 포괄적인 형태(전체를 감싼다는 느낌?)로 쓰는 것이 좋고 for문은 list나 조그마한 기능들을 만드는 데 적절하다고 생각한다. list 예제는 각자 실행해보고 모르는 점이 있으면 질문해주길 바란다. dic type 예제는 아래 예제를 실행해보고 사용법에 대해 알아보자.

 

responses = {}
polling_active = True
while polling_active:									# 무한 루프
    name, response = input("Please your name and favorite mountain : ").split()		# 두 변수에 값 저장
    responses[name] = response
    repeat = input("Would you like to let another person respond? (yes/ no) ")
    if repeat == 'no':									# 종료 조건
        polling_active = False								# 무한 루프 종료
print("\n--- Poll Results ---")
for name, response in responses.items():						# 전체 요소 출력
    print(f"{name} would like to climb {response}.")

결과
Please your name and favorite mountain : sara backdusan			# 입력 : sara, backdusan
Would you like to let another person respond? (yes/ no) yes		# 진행
Please your name and favorite mountain : dangon dokdo			# 입력 : dangon, dokdo
Would you like to let another person respond? (yes/ no) no		# 종료

--- Poll Results ---
sara would like to climb backdusan.
dangon would like to climb dokdo.

 

 위의 예제에서 입력 함수에서 .split() method를 사용하였는데 이 method는 두 개 이상의 변수에 입력값을 대입하고 싶을 때 사용하는 method이다. defalt값으로는 ' '(공백)으로 값을 나누며 split(','), spilt(':') 등등 괄호 안의 값에 따라 값을 나누는 기준이 달라진다.

 

 이번 장은 입력 함수와 또 다른 loop문인 while문에 대해서 알아봤다. 인제 파이썬에서 기본적으로 아는 조건, 반목, 입력, 출력, 여러 type 등은 학습이 완료된 것 같다. 책도 그렇게 느꼈는지 우리가 지금까지 배운 것을 바탕으로 function, 즉 함수를 만드는 장이 나온다. 이때까지 배운 것을 바탕으로 만들면 간단하기 때문에 당황하지 말고 천천히 공부해보도록 하자.(역시나 모르면 구글링!!!!^^)

'Python > No Starch Press_Python' 카테고리의 다른 글

Chapter9. Classes  (0) 2020.05.08
Chapter8. Functions  (0) 2020.04.28
Chapter6. DICTIONARIES  (0) 2020.04.17
Chapter5. IF STATEMENTS  (0) 2020.04.10
chapter4. working with lists  (0) 2020.04.10
블로그 이미지

Mr.HB

프로그래밍 이야기

,