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! 점프 투 파이썬
'Python' 카테고리의 다른 글
[Python] 파이썬 웹 표준 라이브러리 (0) | 2023.01.19 |
---|---|
[Python 간단정리 5] 정규 표현식 (0) | 2023.01.08 |
[Python 간단정리 4] 예외 처리 / lambda / 내장·외장 함수 (0) | 2023.01.07 |
[Python 간단정리 3] 클래스 / 모듈 / 패키지 (0) | 2023.01.06 |
[Python 간단정리 1] 파이썬 소개 및 설치 / 자료형 (0) | 2023.01.04 |
댓글