Python

[혼공파]2주차_자료형과 조건문

hongchaewon 2024. 1. 13. 17:05

*본 블로그는 노트북 화면에 최적화되어 있습니다.

   

     안녕하세요! 한빛미디어 혼공학습단 11기로 활동하게 된 홍채원입니다.

     이번 혼공은 윤인성 저자의 「혼자 공부하는 파이썬 - 개정판」과 함께 달려봅니다:)

     2주차에서는 다음과 같은 내용을 다루어 보았습니다.

 

          2. 자료형

             3) 변수와 입력

             4) 숫자와 문자열의 다양한 기능

          3. 조건문

             1) 불 자료형과 if 조건문

             2) if~else 와 elif 구문

 

     처음 적어보는 블로그라 많이 미숙할텐데요, 좋게 봐주시면 감사하겠습니다 😊

     그럼 지금부터 시작합니다!

 

 

 


 

 

 

02-3. 변수와 입력

 

   파이썬은 변수 없이는 설명이 불가한 것 같습니다. 변수란 값을 저장할 때 사용하는 식별자입니다. 간단히 말해, 원주율 값 3.14159265... 를 π라고 정의해서 사용하는 것과 같은 원리입니다. pi라는 이름의 저장공간에 3.14159265를 넣고 pi라는 이름을 호출하면 저장공간의 값을 꺼내 출력합니다. 

>>> pi = 3.14159265
>>> pi
3.14159265

 

   변수를 활용하는 방법은 변수선언, 변수할당, 변수참조로 세 가지가 있습니다. 

#변수 선언과 할당
pi = 3.14159265
r = 10

#변수 참조
print("원주율 =", pi)
print("반지름 =", r)
print("원의 둘레 =", 2 * pi * r) #원의 둘레
print("원의 넓이 =", pi * r * r) #원의 넓이

 

   책을 읽고 공부하면서 파이썬은 자료형을 미리 선언해야 하는 다른 프로그래밍 언어들과는 다르게 변수에 자료형을 저장하지 않아서 같은 변수에 여러 종류의 자료형을 넣을 수 있다고 합니다. 저는 C언어를 얕게 공부해본 적이 있어 변수마다 int와 같은 자료형을 선언하는 것에 익숙한데, 그렇지 않은 파이썬이 아직은 조금 낯선 것 같습니다. 이 부분에 대해서는 추후에 더 공부해보도록 하겠습니다!

 

 

   변수를 활용할 때에는 기존의 연산자와 = 연산자를 함께 사용하는 복합 대입 연산자가 있습니다.

+= 숫자 덧셈 후 대입 -= 숫자 뺄셈 후 대입
*= 숫자 덧셈 후 대입 /= 숫자 나눗셈 후 대입
%= 숫자의 나머지를 구한 후 대입 **= 숫자 제곱 후 대입

 

   위는 숫자에 적용할 수 있는 복합 대입 연산자였고, 문자열도 비슷한 구조의 복합 대입 연산자를 사용할 수 있는데 대표적으로 += 는 문자열 연결 후 대입, *= 는 문자열 반복 후 대입이라는 뜻을 가지고 있습니다. 

 

 

   파이썬은 명령 프롬프트에서 사용자로부터 데이터를 입력받을 때 input() 함수를 사용합니다. input의 괄호 안에 입력한 내용은 프롬프트 문자열이라고 하고, 사용자에게 입력을 요구하는 안내 내용이 들어갈 수 있습니다. 괄호 안의 입력 안내 내용에 원하는 내용을 입력하고 Enter 키를 누르면 사용자가 입력한 값이 input 함수의 결과로 나오는 것을 확인할 수 있습니다. 

>>> string = input("인사말을 입력하세요> ")
인사말을 입력하세요> 안녕하세요
>>> print(string)
안녕하세요

 

   위의 예제에서 input() 함수의 결과를 string에 대입하였는데, 대입한 값의 자료형이 어떻게 되는지 살펴보겠습니다. 자료형에는 type() 함수를 사용합니다. string 변수에 '안녕하세요' 라는 문자열을 대입했으니 자료형도 문자열이겠고, 그를 'str'을 통해 확인할 수 있었습니다.

>>> number = input("숫자를 입력하세요> ")
숫자를 입력하세요> 5161
>>> print(number)
5161
>>> print(type(number))
<class 'str'>

 

   input 함수는 사용자가 무엇을 입력해도 결과는 무조건 문자열 자료형임을 확인할 수 있습니다. number에 대입한 5161도 'str'로 확인되는 것을 볼 수 있습니다. 이렇게 input 함수의 입력 자료형은 항상 문자열이기 때문에 입력받은 문자열을 숫자로 변환(cast 라고 불립니다)해야 숫자 연산에 활용할 수 있습니다. 이 과정에서 사용되는 두 가지 함수를 알아보겠습니다.

  • int() 함수 : 문자열을 int 자료형으로 변환. int는 정수형을 의미
  • float() 함수 : 문자열을 float 자료형으로 변환. float는 실수형 또는 부동소수점을 의미.

   문자열을 숫자로 바꾸는 것처럼 숫자를 문자열로 변환하는 것도 가능합니다. str() 함수를 사용하면 됩니다. 

 

 

   지금까지의 내용을 종합하여 사용자에게 숫자 두 개를 입력받고, 입력받은 두 수 의 덧셈, 뺼셈, 곱셈, 나눗셈 연산을 하는 간단한 프로그램을 짜보겠습니다. 

input_a = float(input("첫 번째 숫자> "))
input_b = float(input("두 번째 숫자> "))

print("덧셈 결과: ", input_a + input_b)
print("뺄셈 결과: ", input_a - input_b)
print("곱셈 결과: ", input_a * input_b)
print("나눗셈 결과: ", input_a / input_b)
# 실행 결과
첫 번째 숫자> 51
두 번째 숫자> 61
덧셈 결과:  112.0
뺄셈 결과:  -10.0
곱셈 결과:  3111.0
나눗셈 결과:  0.8360655737704918

 

 

 

 

 

 

02-4. 숫자와 문자열의 다양한 기능

 

   이번 챕터에서는 format() 함수로 숫자를 문자열로 변환하는 몇 가지 형태를 살펴봅니다. format 함수는 중괄호 {} 를 포함한 문자열 뒤에 마침표 . 를 찍고 format() 함수를 사용하는데, 중괄호의 개수와 format 함수 안 매개변수의 개수는 반드시 같아야 합니다. 그러면 출력할 때 중괄호가 format 안의 매개변수로 대체되면서 숫자가 문자열로 출력되는 것입니다. 예시로 보여드리겠습니다. 

format_a = "{}만원".format(500)
format_b = "전공 공부 열심히 하여 장학금 {}만원 받기".format(500)
format_c = "{} {} [}".format(31, 51, 61)
format_d = "{} {} [}".format(1, "문자열", True)

print(format_a)
print(format_b)
print(format_c)
print(format_d)
#실행 결과
500만원
전공 공부 열심히 하여 장학금 500만원 받기
31 51 61
1 문자열 True

 

   format 함수는 이 외에도 출력할 정수에 기호를 넣어주거나, 숫자 형태를 다양하게 출력할 수 있습니다. 

#정수
output_a = {:d}.format(17)

#특정 칸에 출력하기
output_b = "{:5d}".format(17)      #5칸
output_c = "{:10d}".format(17)     #10칸

#빈칸을 0으로 채우기
output_d = "{:05d}".format(17)     #양수
output_e = "{:05d}".format(-17)    #음수
#실행 결과
# 각각의 output_알파벳을 print() 함수로 출력했음을 전제.

#기본
17
#특정 칸에 출력하기
   17
        17
#빈칸을 0으로 채우기
00017
-0017

 

   정수 출력이 d였다면 부동소수점을 출력하는 float 자료형 출력에서는 {:f}를 사용합니다. 부동소수점은 {:15.3f}와 같이 .을 입력하고 뒤에 몇 번째 자릿수까지 표시할지 지정하면 소수점 아래 자릿수가 지정됩니다. 그리고 의미없는 0을 제거하고 출력하고 싶을 때 {:g} 를 사용합니다. 

 

 

   upper() 함수는 문자열의 알파벳을 대문자로, lower() 함수는 문자열의 알파벳을 소문자로 만듭니다. 

>>> a = "Hello Python Programming...!"
>>> a.upper()
'HELLO PYTHON PROGRAMMING...!'
>>>a.lower()
'hello python programming...!'

 

    왼쪽의 공백을 제거하는 lstrip() 함수와 오른쪽의 공백을 제거하는 rstrip() 함수도 있습니다. 사실 거의 사용하지는 않지만(ㅎㅎ) 출력 결과를 깔끔하게 만들 때 유용하게 쓸 수 있을 것 같습니다. 

 

   문자열 내부에 특정 문자가 어디에 위치하는지 확인할 때 왼쪽부터 찾아서 처음 등장하는 위치를 찾는 find() 함수와 오른쪽부터 찾아서 처음 등장하는 위치를 찾는 rfind() 함수가 있습니다. (이번 챕터에 정말 다양한 함수를 배우네요...! 복습을 열심히 해야할 것 같습니다😅) 여기서 중요한 것은 문자열은 가장 앞글자를 0번째로 센다는 것입니다.

>>> output_a = "안녕안녕하세요".find("안녕")
>>> print(output_a)
0
>>> output_b = "안녕안녕하세요".rfind("안녕")
>>> print(output_b)
2

 

   위 예제에서 처음으로 나오는 안녕은 왼쪽부터 봤을 경우 0번째에 있는 것이기에 0이라는 출력값을 갖고 오른쪽부터 봤을 경우 처음으로 나오는 안녕은 2번째부터 등장하기 때문에 2라는 출력값을 갖는 것입니다. 

 

   문자열 내부에 어떤 문자열이 있는지 확인하려면 in 연산자를 사용합니다. 있는지 없는지의 여부만을 보기 때문에 출력값이 True 또는 False로 나옵니다. 문자열을 특정한 문자로 자를때는 split() 함수를 사용합니다. 

 

 

 

 

 

 

03-1. 불 자료형과 if 조건문

 

   어느새 조건문에 대해 다룰 챕터 3까지 왔네요! 만드는 형태에 따라 무한에 가까운 형태를 만들 수 있는 숫자나 문자열과는 달리 이라고 불리는 BooleanTrueFalse의 값만을 출력합니다. 불은 비교연산자를 통해 만들 수 있습니다. 

== 같다 != 다르다
< 작다 > 크다
<= 작거나 같다 >= 크거나 같다
not 아니다 불을 반대로 전환한다.
and 그리고 피연산자 두 개가 모두 참일 때 True를 출력하며 그 외에는 모두 False 출력.
or 또는 피연산자 두 개 중에 하나만 참이라도 True를 출력하며,두 개가 모두 거짓일 때만 False 출력

 

   

   파이썬에서 if 조건문은 조건에 따라 코드를 실행하거나 실행하지 않게 만들고 싶을 때 사용하는 구문입니다. 예제를 살펴보겠습니다. 

#입력을 받습니다.
number = input("정수 입력> ")
number = int(number)

#양수 조건
if number > 0:
   print("양수입니다")

#음수 조건
if number < 0:
   print("음수입니다")
   
#0 조건
if number == 0:
   print("0입니다")

 

 

 

 

 

 

03-2. if~else와 elif 구문

 

   오전과 오후처럼 이분법적으로 구분되는 상황이 많습니다. 그래서 프로그래밍 언어는 else 구문 기능을 제공합니다. if 조건문 뒤에 사용하며, if 조건문의 조건이 거짓일 때 실행되는 부분입니다. 예제를 통해 알아보겠습니다. 

#입력을 받습니다.
number = input("정수 입력> ")
number = int(number)

#조건문을 사용합니다.
if number % 2 == 0:
   print("짝수입니다")
else:
   print("홀수입니다")
#실행 결과
정수 입력> 51
홀수입니다

 

   이렇듯 조건문이 이분법적으로 구분된다면 if~else 구문이 굉장히 효율적입니다. 그러나 조건 비교를 여러번 하게 된다면 세 개 이상의 조건을 연결해서 사용하는 방법이 필요합니다. 그럴 때 사용하는 구문이 바로 elif 구문입니다. elif를 사용하여 계절을 구하는 코드를 작성해보겠습니다. 

#날짜/시간과 관련된 기능을 가져옵니다. 
import datetime

#현재 날짜/시간을 구하고 '월'을 변수에 저장합니다.
row = datetime.datetime.now()
month = now.month

#조건문으로 계절을 확인합니다.
if 3 <= month <= 5:
   print("현재는 봄입니다.")
if 6 <= month <= 8:
   print("현재는 여름입니다.")
if 9 <= month <= 11:
   print("현재는 가을입니다.")
if 12 <= month <= 2:
   print("현재는 겨울입니다.")
#실행 결과
현재는 겨울입니다. #코드 작성 시기가 1월이었으므로.

 

 


 

   파이썬 프로그래밍을 위한 많은 기초지식을 배워가는 2주차 학습내용이었던 것 같습니다. 

2주차 기본 미션을 해보겠습니다! 블로그를 작성하며 참고한 책인 윤인성 저자의 「혼자 공부하는 파이썬 - 개정판」 페이지 187쪽 3번 문제를 풀고 본인이 태어난 해와 띠를 출력하는 프로그램입니다. 다음 글에서 만나요. 읽어주셔서 감사합니다:)

str_input = input("태어난 해를 입력해 주세요> ")
birth_year = int(str_input)

if birth_year % 12 == 0:
   print("원숭이 띠입니다.")
elif birth_year % 12 == 1:
   print("닭 띠입니다.")
elif birth_year % 12 == 2:
   print("개 띠입니다.")
elif birth_year % 12 == 3:
   print("돼지 띠입니다.")
elif birth_year % 12 == 4:
   print("쥐 띠입니다.")
elif birth_year % 12 == 5:
   print("소 띠입니다.")
elif birth_year % 12 == 6:
   print("범 띠입니다.")
elif birth_year % 12 == 7:
   print("토끼 띠입니다.")
elif birth_year % 12 == 8:
   print("용 띠입니다.")
elif birth_year % 12 == 9:
   print("뱀 띠입니다.")
elif birth_year % 12 == 10:
   print("말 띠입니다.")
elif birth_year % 12 == 11:
   print("양 띠입니다.")
#실행 결과
태어난 해를 입력해 주세요> 2004
원숭이 띠입니다.

'Python' 카테고리의 다른 글

[혼공파]3주차_ 반복문  (2) 2024.02.01
[혼공파]1주차_파이썬이란?, 자료형  (2) 2024.01.04