Study/Python

파이썬 기본기_입출력과 제어문

김 도경 2024. 9. 26. 17:20

[2024.09.26] 필수온라인 강의 Part1 파이썬 기본기 다지기 CH03 입출력과 제어문

입력과 출력

 

1. 사용자 입력(input)

   - 사용자로부터 데이터를 입력받을 때 사용

   - 사용자입력받기 : input() 함수 괄호 안에 입력한 내용을 '프롬포트 문자열'이라고 부름

   - 사용자로부터 입력을 요구하는 내용 적기

   - 변수대입 : input() 함수의 결과 값을 변수에 대입 - 무엇을 입력해도 결과형은 문자열 자료형

input("이름을 적어주세요. : ")
name = input('이름을 적어주세요. :')

: 뒤에 값은 직접 적을 수 있게 출력이 된다.

 

 

- input()함수의 결과는 항상 문자열 자료형이다. 

       -> 그렇기에 입력받은 문자열을 숫자로 변환해야 숫자연산에 사용 가능! : 바꿔줄 필요가 있다.

 

문자 -> 숫자 자료형으로 변환

int1 = int(string1)                    # int() 함수를 이용하여 숫자(정수)로 변환
float1 = float(string1)                # float () 함수를 이용하여 숫자(실수)로 변환

 

숫자 -> 문자 자료형으로 변환

string1 = str(int1)               # str() 함수를 이용하여 문자로 변환

 

2. 출력 (print)

 - print()함수는 자료형을 출력하는 함수

 - 큰따옴표(" ")로 둘러싸인 문자열은 더하기(+) 연산과 동일

print("파이썬" "프로그램")
print("파이썬" + "프로그램")

 

- 콤마 : 문자열 뛰어쓰기는 콤마

print("파이썬" , "프로그램")

 

3. 파일 입출력

 - 파일 처리

    - 파일 열기 (open) : open() 함수를 사용 - 파일 객체 = open(파일 경로, 파일 열기모드)

    - 파일 객체 = open(파일 경로, 파일 열기 모드)

         - open() 함수의 매개변수 : 파일 경로(path), 파일 열기 모드(mode)

         - mode(파일 열기 모드)의 종류 : w(write, 쓰기모드), a(append, 추가 모드), r (read, 읽기 모드)

   -   파일 쓰기 (write)
   -   파일 닫기 (close)

myfile = open("python.txt", "w")          #파일을 열고
myfile.write("Programming!")              #파일을 쓰고
myfile.close()                            #파일을 닫기

   -   파일 읽기 (read)

         - 파일을 읽기모드(r)로 열기
         -  readline() : 텍스트 한 줄씩 읽어서 반환
                               -  한 줄 씩 읽어 출력할 때 줄 끝에 \n 문자가 있다면 빈 줄도 같이 출력됨
         -  readlines() : 파일의 모든 줄을 읽어서 각각의 줄을 리스트로 반환
         -  strip() : 줄 바꿈(\n) 문자 제거

myfile = open("Python_read.txt", "w")
myfile.write("Programming! \n Hello")          # 2줄로 바꾸기
myfile.close()
read_file = open("Python_read.txt", "r")           # 만들어준 Python_read.txt 파일을 읽기 모드로 열기

text = read_file.readline()                        # readline() : 텍스트 한 줄씩 읽어서 반환

 

-> 실행을 한번 누르면 첫번째줄, 두번 누르면 두번째줄이 출력됨    : 한줄씩 출력을 하고 싶을 때 readline을 씀

# 한 줄 씩 읽어 출력할 때 줄 끝에 \n 문자가 있다면 빈 줄도 같이 출력됨
# 출력할 때마다 한 줄 씩 내려가서 출력됨
# 한 번 실행하면 "Programming! \n", 두 번 실행하면 "Hello" 출력됨
all_text = read_file.readlines()         # readlines() : 파일의 모든 줄을 읽어서 각각의 줄을 리스트로 반환

text_strip = read_file.readlines().strip()            # strip() : 줄 바꿈(\n) 문자 제거

 

조건문

- 참과 거짓을 판단하는 문장 : 참일 경우 실행 / 거짓일 경우 패스

 

  • if문
if 조건문 : 
    조건이 참일 때 수행할 문장
lecture= True

if lecture :
  print("파이썬을 정복할 수 있다")              -> 참이기에 출력됨

 

- 들여쓰기 주의 : if문에 속한 모든 문장은 들여쓰기가 필수이다.

- 콜론(:) 주의 : if 조건문 뒤에 반드시 콜론(:)을 삽입해야한다(파이썬의 문법구조! 약속임)

if 조건문 : 
	조건이 참일때 수행할 문장1
	조건이 참일때 수행할 문장2
	조건이 참일때 수행할 문장3
caffeine = True

if caffeine : 
  print("coffee")
  print("latte")
  print("cold brew")

 

  • else 문 
    - if문 뒤에 사용하며, if문 조건이 거짓일 때 실행되는 부분이다.
if 조건문 : 
	조건이 참일 때 수행할 문장1
else :
	조건이 거짓일때 수행할 문장2
lecture= False

if lecture :
  print("파이썬을 정복할 수 있다")
else :
  print("파이썬을 정복할 수 있다")

 

  • elif 문 
    - elif문은 세 개 이상의 조건을 연결할 때 사용하는 문이다.
if 조건문A : 
	조건A이 참일 때 수행할 문장1
elif 조건문B : 
	조건B이 참일 때 수행할 문장2
elif 조건문C : 
	조건C이 참일 때 수행할 문장3
else :
	모든 조건이 거짓일때 수행할 문장4
score = "C"

if score == "A":
  print("A class")
elif score == "B" :
  print("B class")
elif score == "C" :
  print("C class")
else :
  print("D class")

 

  • in / not in 연산자
    - 데이터 안에 찾고자 하는 것이 있는지 없는지 확인하는 연산자
if 'k' not in 'python' :
  print(True)
else:
  print(False)

 

  • Pass 키워드
    - 조건은 만족하지만 아무일도 수행하고 싶지 않을 때 사용
    - 프로그래밍의 전체 골격은 잡아두고, 내부에 처리할 내용은 추후에 만들고자 할 때 사용됨

  • 관계 연산자
    -두 개의 값을 비교하여 그 값을 참 또는 거짓으로 판별하는 연산자 ( == , != , < , > , <= , >=)

  • 논리 연산자 : 논리 값을 판단해주는 연산자
    - not (논리 부정) : 한 개의 값이 False면 결과 값으로 True 반환, True이면 결과 값으로 False 반환
print(not True)    -> False
print(not False)   -> True

- and (논리 곱) : 두 개의 값이모두 True인 경우에만 결과 값으로 True 반환, 나머지는 모두 False 반환
- or (논리 합) : 두 개의 값이 모두 False인 경우에만 결과 값으로 False 반환, 나머지는 모두 True 반환

 

반복문

 

  • for 반복문
    - 특정 코드를 반복 작업 하고 싶을 때 사용
    - 리스트, 튜플, 문자열의 첫번째부터 마지막요소까지 차례로 변수에 대입하여 반복적으로 수행
for 변수 in 리스트(또는 튜플, 문자열) :
	반복적으로 수행할 문장1
    
for 반복자 in 반복할 수 있는 것 : 
	반복적으로 수행할 문장1
for i in range(5):                           # range() 함수를 사용하여 0부터 5미만까지 5번 반복 
  print("Selena 파이썬 프로그래밍")          # print("Selena 파이썬 프로그래밍") 코드를 5번 반복하고 싶을 때

 

  • 문자열 반복
    : 문자열은 문자의 나열, 큰따옴표 or 작은 따옴표로 입력됨, for문에 문자하나하나가 들어감
myList = 'Korea'

for a in myList:
  print(a)                -> 각각 K, o, r, e, a 다른 줄로 출력

 

  • 리스트 반복
    - 리스트는 여러 가지 자료를 저장할 수 있는 자료형
    - 요소(element)는 리스트 안에 있는 각각의 내용을 의미
    - 인덱스(index)는 리스트 안에 있는 값의 위치를 의미
    - 리스트를 이용한 for문은 요소 하나하나가 변수에 들어가며, 차례차례 반복
myList = ['korea', 'usa', 'japan']

for a in myList:
  print(a)                    -> korea, usa, japan 가 각각 줄로 출력

 

 

  • 딕셔너리 반복
    - 딕셔너리는 키를 기반으로 여러 자료를 저장하는 자료형
    - 키(key)는 딕셔너리 안에서 값을 접근할 때 사용하는 것
    - 값(value)은 딕셔너리 안에서 각각의 내용을 의미
    - 딕셔너리를 이용한 for문은 딕셔너리 안에 있는 키(key)가 변수에 들어감
myDictionary = {"name" : "Selena", "job" : "data scientist"}   # 딕셔너리 생성

for key in myDictionary:                   # 딕셔너리 안에 있는 키(key)가 변수로 들어감
  print(key, ":", myDictionary[key])       # key 값과 myDictionary[key] 내용을 반복문으로 출력

 

  • 범위 반복
    - range() 함수
        range(A) : 매개변수로 숫자 한 개 입력           : 0부터 A-1까지의 정수로 범위 생성
        range(A, B) : 매개변수로 숫자 두 개 입력        : A부터 B-1까지의 정수로 범위 생성
        range(A, B, C) : 매개변수로 숫자 세 개 입력    : A부터 B-1까지의 정수로 범위 생성하는데 앞 뒤 숫자가 C만큼의 차이를 가짐

    - list() 함수
        범위를 리스트로 변경하면 범위 안에 어떤 값이 있는지 확인 가능
print(range(5))                -> range(0, 5) 출력

# list() 함수를 이용해 범위를 리스트로 변경하면 범위 내부에 어떤 값이 있는지 확인 가능
# range() 함수의 매개변수 개수에 따른 결과 값 출력
print(list(range(5)))                       -> [0, 1, 2, 3, 4] : 0부터 5개
print(list(range(5, 10)))                   -> [5, 6, 7, 8, 9] : 5부터 10미만까지
print(list(range(5, 10, 2)))                -> [5, 7, 9]  : 5부터 10미만까지인데, 더하기 2씩

 

-for문에 적용하기

for i in range(5):
  print(i)
  
  for i in range(3, 20, 4):        # 3부터 시작해서, 20 미만의 수를 4간격으로 
  print(i)

 

  • while 반복문
    - 조건을 만족하는 한, 반복적으로 문장을 실행
    - bool 표현식이 참인 동안 계속 무한 반복
    - 반드시 무한반복이 되지 않게 끝날 수 있게 해주기
while 조건 :
	반복을 수행할 문장1
	반복을 수행할 문장2
	반복을 수행할 문장3
	....
count = 0

while count < 5:                  # count 변수가 5가 될 때까지 반복하여 count 출력
  print("count:", count)
  count = count + 1             -> count: 0 count: 1 count: 2 count: 3 count: 4 출력

 

 

  • break 키워드
    - 반복문을 벗어날 때 사용하는 키워드
    - 무한 반복문을 만들고 반복을 벗어나기 위해서 사용
a = 10                       # a를 10으로 초기 값을 부여하여 반복문의 조건은 항상 참이 나옴 -> # 그래서 무한 반복문이 됨
count = 0

while a > 3:                 # 반복문 조건은 'a가 3보다 클 때 반복을 시켜줘'  
  count = count + 1
  a = a + 1
  if count > 20:             # break 키워드를 통해 'count가 20보다 클 때 반복을 멈춰' 실행하여 무한 반복문을 빠져나옴
    break
  print("a = ", a, "\t count =", count)

print("반복문 종료")

 

  • continue 키워드
    - 반복문의 현재 반복을 생략할 때 사용하는 키워드
    - 현재 반복을 생략하고, 다음 반복으로 넘어갈 때 사용
num = 0

while num < 10:           # 반복문 조건은 'num이 10보다 작을 때 반복을 시켜줘'  
  num = num + 1 
  if num <= 5:            # num이 5 이하일 때 continue 키워드를 사용하여 -> # 현재 반복을 생략하고 다음 반복으로 넘어가서 print가 안 됨
    continue              # num이 5 초과일 때 print 됨  
  print(num)                -> 6, 7, 8, 9, 10 만 출력됨

 

함수

 

- 입력 -> 함수 -> 출력 의 구조

- 반복적으로 사용되는 기능을 함수로 사용

- 입력만 바뀌고 같은 코드가 반복되는 경우, 특정 코드들을 모아두는 용도로 사용됨
- 함수는 def 키워드 사용하여 생성

def add(x, y):       # add 함수 정의 : 매개변수 x와 y를 입력으로 받기
  return x + y       # x + y 코드를 계산하여 출력
  
z = add(3, 6)      # add 함수를 호출하여 인수로 3과 6 입력
	print(z)       # z값에 함수의 결과를 출력하여 저장
  • 매개변수 : 함수에 입력으로 전달된 값을 받는 변수 
def 함수 이름(매개변수) :
	수행할 문장1
	수행할 문장2
	....
	reture 결과

 

1. 디폴트 매개변수

- 매개변수의 값이 입력되지 않으면 디폴트 값으로 자동 입력

- 매개변수가 여러 개인 경우 뒤의 매개변수부터 디폴트 값을 가질 수 있음

def 함수이름(매개변수 = 디폴트 값) : 
	수행할문장1
	reture 결과
def add(x, y=3):         # add 함수 정의  : 매개변수 x와 y를 입력으로 받기
           # y는 디폴트 매개변수로 입력이 없다면 디폴트 값으로 자동 입력
	return x + y         # x + y 코드를 계산하여 출력
  
z = add(3, 6)            # z값에 함수의 결과를 출력하여 저장 
print(z)

z = add(3)               # y 매개변수에 입력이 없다면 디폴트 값으로 자동 입력 
print(z)

 

2. 가변 매개변수

- 원하는 만큼의 인자를 받을 수 있는 함수를 가변 매개변수를 사용한다고 표현
- *매개변수 : 가변 매개변수는 매개변수 앞에 *를 붙임 

- 가변 매개변수는 리스트처럼 사용이 가능

- 제약 사항 : 뒤에 일반 매개변수X, 하나만 사용가능

def 함수이름(*매개변수):
	수행할 문장1
	reture 결과
def menu(*values):                          # values라는 가변 매개변수 : menu 함수를 통해 카페 메뉴 출력
    print("Selena 카페의 메뉴는? ")         # 가변 매개변수는 리스트처럼 사용

    for value in values:
      print(value)
      
menu('코코아','캐모마일','얼그레이','에이드')       # 정의한 menu 함수 호출 : 인수로 4가지 메뉴 입력

 

3. 키워드 매개변수

- 매개변수의 이름을 지정해서 입력하여 함수 호출
- 키워드 매개변수를 넘겨줄 때 매개변수의 순서와 상관없이 나열 가능

def 함수(매개변수A, 매개변수B, 매개변수C) : 
	수행할 문장1
	reture 결과
def add(x=1, y=2, z=3):            # x,y,z는 디폴트 매개변수
  return x + y + z                 # x + y + z 코드를 계산하여 출력
  
  add(y=5, z=5, x=1)

 

- 키워드 매개변수를 사용하여 add 함수 호출
- 키워드 매개변수를 넘겨줄 때 매개변수의 순서와 상관없이 나열 가능
- 키워드 매개변수는 x, y, z

 

  • 인수
    - 함수를 호출할 때 전달하는 입력 값
함수(인수1, 인수2)

 

  • reture
    - 함수를 호출한 곳으로 결과 값을 반환
def 함수이름(매개변수)
    실행문
    return 되돌려 주는 결과 값
변수 = 함수이름(인수)

 

- 1개의 리턴 값을 사용할 때

def returnTest() :                  # returnTest 함수 정의하고 함수를 호출하여 return 값 확인
  return "되돌려 주는 결과 값"

value = returnTest()
print(value)

 

- 2개의 리턴 값을 사용할 때

def returnTest() :                       # returnTest 함수 정의하고 함수를 호출하여 return 값 확인
  a = 3
  b = 4
  return a, b                            # 반환되는 두 개의 값을 차례대로 value1, value2에 저장하여 출력

value1, value2 = returnTest()            # a는 value 1으로, b는 value2로 들어가게됨
print(value1)
print(value2)