본문 바로가기
  • 실행력이 모든걸 결정한다
Python

[Python 간단정리 2] 제어문 / 함수 / 사용자 입출력

by 김코더 김주역 2023. 1. 5.
반응형

1. if문

1) if문의 기본 구조

- 조건문이 참이면 if 블록을 수행하고, 거짓이면 그 아래 블록(elif, else)으로 내려가며 맞는 조건을 찾아나가는 구조다. elif는 개수에 제한 없이 사용할 수 있다.

- 들여쓰기는 같은 깊이로 해야 한다.

score=75
if score<70:
    print("C")
elif score<80:
    print("B") # B가 출력된다.
else: 
    print("A")

- 조건문 블록에서 아무 일도 일어나지 않게 하려면 pass를 넣으면 된다.

pocket = ['candy', 'money', 'cellphone']
if 'money' in pocket:
    pass # 아무 일도 일어나지 않음
else:
    print("돈을 안 들고 나오셨네요.")

참고로, 수행할 문장이 한 줄이라면 다음과 같이 간략하게 코드를 작성할 수도 있다.

pocket = ['candy', 'money', 'cellphone']
if 'money' in pocket: pass # 아무 일도 일어나지 않음
else: print("돈이 없습니다")

 

 

2) 조건문에 올 수 있는 조건

(1) 비교연산자

- <, >, ==, !=, >=, <=

 

(2) 자료형

- 문자열, 리스트, 튜플, 딕셔너리 등의 값이 비어 있으면 거짓이 된다.

- 숫자형은 0이 거짓이 된다.

- None은 거짓이 된다.

 

(3) 논리연산자

- x or y

- x and y

- not x

print(0 or 1) # 1
print(0 and 1) # 0
print(not 0) # True

 

(4) in

- x in 리스트, x not in 리스트

- x in 튜플, x not in 튜플

- x in 문자열, x not in 문자열

print(1 in [1,2,3]) # True
print(1 not in (1,2,3)) # False
print('a' in 'apple') # True

 

 

 

2. while문

- while 조건이 맞는 동안에만 블록을 반복해서 실행한다.

a=0
while a<10: # a가 10이 되는 순간 반복문을 빠져나간다.
    a+=1
print(a) # 10

- while문을 강제로 벗어나야 하는 경우에는 break를 넣으면 된다.

a=0
while a<10:
    a+=1
    if a==5: break # a가 5가 되는 순간 break를 통해 while문을 빠져나간다.
print(a) # 5

- while문의 첫 부분(조건문)으로 돌아가게 하려면 continue를 넣으면 된다.

a=0
while a<10:
    a+=1
    if a%2==0: continue
    print(a) # 각각 1, 3, 5, 7, 9가 출력된다.

 

 

 

3. for문

1) for문의 기본 구조

for 변수 in 리스트(또는 튜플, 문자열):
    문장1
    문장2
    ...

- 아래 예시와 같이 리스트의 첫 요소부터 변수에 대입해서 사용할 수 있다.

arr = [1, 2, 3, 4, 5]
for i in arr:
    print(i) # 각각 1, 2, 3, 4, 5가 출력된다.

- 튜플과 문자열도 다음과 같이 사용할 수 있다.

arr = ((1,2),(3,4),(5,6))
for a,b in arr:
    print(a,b) # 각각 1 2, 3 4, 5 6이 출력된다.
str = "Python"
for c in str:
    print(c) # 각각 P, y, t, h, o, n이 출력된다.

- while문과 동일하게 내부에 break, continue문도 사용 가능하다.

 

 

2) range() 함수

- for문은 숫자 리스트를 자동으로 만들어주는 range() 함수와 같이 사용되는 경우가 많다.

- range(시작 숫자, 끝 숫자+1)로 리스트를 만들 수 있다. 시작 숫자를 생략하면 0부터 시작한다.

for i in range(0, 5):
    print(i) # 각각 0, 1, 2, 3, 4가 출력된다.
for i in range(5):
    print(i) # 각각 0, 1, 2, 3, 4가 출력된다.

- range() 함수로 구구단을 출력하는 예시다.

for i in range(1, 10):
    for j in range(1, 10):
        print(i*j, end=" ") # end 속성 : print 뒤에 출력할 내용을 지정 (기본값은 줄바꿈)
    print()

- range()의 3번째 매개변수를 통해 수의 간격을 줄 수도 있다.

for i in range(0, 10, 3):
    print(i) # 각각 0, 3, 6, 9 출력
for i in range(10, 0, -3):
    print(i) # 각각 10, 7, 4, 1 출력

 

 

3) 리스트 내포

(1) 기본 문법

- 리스트 안에 for문을 포함하는 기법을 리스트 내포라고 한다. 기본적인 문법은 이렇다.

[표현식 for 항목 in 반복 가능 객체 if 조건]

- for문을 2개 이상 사용하는 것도 가능하다.

[표현식 for 항목1 in 반복 가능 객체1 if 조건1
    for 항목2 in 반복 가능 객체2 if 조건2
    for 항목3 in 반복 가능 객체3 if 조건3
    ...]

 

(2) 예시

arr = [i*3 for i in range(5)]
print(arr) # [0, 3, 6, 9, 12]

 

arr = [i*3 for i in range(5) if i%2==0]
print(arr) # [0, 6, 12]

 

arr = [i*j for i in range(1, 10)
       for j in range(1, 10)]
print(arr)

 

 

 

4. 함수

1) 함수의 기본적인 구조

- def라는 예약어를 이용하여 함수를 만들 수 있다. 반환값은 return에 넣어주면 된다.

def sum(a,b):
    return a+b

print(sum(3, 5)) # 8

- 함수는 파라미터가 없을 수도 있고 반환값이 없을 수도 있다. 참고로, 반환값을 지정하지 않았다면 함수는 None을 반환한다.

 

 

2) 파라미터의 개수가 가변적인 경우

- 파라미터 앞에 *을 붙이면 된다. 물론 args는 임의로 정한 변수명이다.

def sum2(*args):
    sum=0
    for i in args:
        sum+=i
    return sum

print(sum2(1,2,3,4,5)) # 15

- 가변 매개변수를 다른 파라미터와 같이 쓰는 경우에는 가변 매개변수가 반드시 뒤에 와야한다.

def func(a, *args): # O
def func(*args, a): # X

 

 

3) 반환값이 여러 개인 경우

- 함수의 반환값을 여러 개로 지정했다면 내부적으로 하나의 튜플로 묶여 반환된다.

def func(a, b):
    return a+b, a*b

x = func(3, 5) 
y, z = func(3, 5)
print(x) # (8, 15)
print(y, z) # 8 15

- 물론 return문을 2번 사용한다고 2개의 결과값을 돌려주지 않는다.

 

 

4) 파라미터 초깃값 설정하기

- 파라미터에 초깃값을 설정해두면 나중에 호출할 때 해당 파라미터를 생략해도 이 초깃값이 사용된다. 초깃값말고 기본값이라고 부르는 사람도 있을 것 같다.

def func(a, b, c=3):
    print(a, b, c)
    
func(1, 2) # 1 2 3
func(1, 2, 3) # 1 2 3
func(1, 2, 4) # 1 2 3

- 초깃값을 지정한 파라미터는 반드시 뒤에 와야한다. 그렇게 하지 않으면 오류가 발생한다.

 

 

5) 함수 안에서 선언된 변수의 효력 범위

- 다른 프로그래밍 언어들과 동일하게, 함수 안에서 만들어진 변수는 함수 안에서만 사용되는 함수만의 변수다.

 

 

 

5. 사용자 입출력

1) 사용자 입력

- input() 메소드를 이용한다.

a=input("내용을 입력하세요: ")
print(a)

 

 

2) print()의 다양한 사용 예시

print("python" "is" "funny") # pythonisfunny
print("python"+"is"+"funny") # pythonisfunny
print("python","is","funny") # python is funny
print("python is funny", end='!') # python is funny! (end 속성 : print 뒤에 출력할 내용을 지정 (기본값은 줄바꿈))

 

 

3) 파일 입출력

(1) 파일 객체 생성

- open()이라는 파이썬 내장 함수를 통해 파일 객체를 반환받을 수 있다. 매개변수는 각각 파일명과 파일 열기 모드(w-쓰기, r-읽기, a-추가, b-바이너리)다.

f=open("file.txt", "w") # file.txt라는 이름의 새 파일 생성
f.close() # 파일 객체를 닫음

※ 파일 열기 모드는 생략 가능하며, 기본값은 r이다.

※ b는 w, r, a와 함께 사용된다. 예를 들어, rb는 바이너리 읽기 모드다.

 

(2) 파일 쓰기

- 파일 쓰기의 경우에는 파일 객체를 쓰기 모드(w)로 생성해야 한다.

f=open("file.txt", "w")
f.write("Hello\n")
f.write("Python")
f.close()

# file.txt
Hello
Python

※ 참고로, txt에는 문자열 형태로 저장된다.

-  추가 모드(a)는 쓰기 모드(w)와 달리 원래 있던 값을 유지하면서 새로운 값을 추가한다.

 

(3) 파일 읽기

- 파일 읽기의 경우에는 파일 객체를 읽기 모드(r)로 생성해야 한다.

- readline() 함수는 파일 내용을 한 줄씩 읽어오고, readlines() 함수는 모든 줄을 읽어와서 리스트로 만든다.

f=open("file.txt", "w")
f.write("Hello\n")
f.write("Python")
f.close()

f=open("file.txt", "r")
while True:
    line=f.readline()
    if not line: break # readline()은 더 이상 읽을 줄이 없을 경우 None을 리턴함
    print(line) # 각각 'Hello\n', 'Python' 출력
f.close()

f=open("file.txt", "r")
print(f.readlines()) # ['Hello\n', 'Python']

- read() 함수를 이용하는 방법도 있다. read() 함수는 파일의 내용 전체를 문자열로 리턴한다.

f=open("file.txt", "w")
f.write("Hello\n")
f.write("Python")
f.close()

f=open("file.txt", "r")
print(f.read())

 

(4) with문

- 파일을 열고(open) 닫는(close) 것을 자동으로 처리해주는 역할을 한다. with 블록을 벗어나는 순간 파일 객체가 자동으로 닫히기 때문에 편리하다.

with open("file.txt", "w") as f:
    f.write("Hello")

 

(5) 명령어 입력 인수

- sys 모듈을 통해 명령어로 입력받은 인수들을 받아올 수 있다. argv[0]는 파일 이름이 되고 argv[1]부터는 뒤에 따라오는 인수들이 차례로 argv의 요소가 된다.

# main.py
import sys

args=sys.argv
for i in args:
    print(i)

 

 

● 참고 자료 : Do it! 점프 투 파이썬

 

반응형

댓글