Youtube '동빈나' - [이코테 2021 강의 몰아보기] 영상을 보고 복습하는 글입니다.
3. 기본 입출력
ㄱ. 기본 입출력
▶모든 프로그램은 적절한 입출력 양식을 가지고 있음.
▶자주 사용되는 표준 입력 방법
- input() 함수 : 한줄의 문자열을 입력 받는 함수.
- map() 함수 : 리스트의 모든 원소에 각각 특정한 함수를 적용할 때 사용하는 함수.
ex) 공백을 기준으로 구분된 데이터(한줄)를 입력받을 때,
list(map(int, input().split())) : input()으로 한줄의 문자열을 입력받으면, split()으로 공백을 기준으로 구분하고, 구분된 각 원소를 정수형으로 바꿔준 후에, list로 만들어주어 저장.
ex) 공백을 기준으로 구분된 데이터의 개수가 많지 않으면,
a, b, c = map(int, input().split()) : list로 만들어주지 않고, 각 변수에 저장.
+) 우측은 packing, 좌측은 unpacking이라 할 수 있음.
# 데이터의 개수 입력
# 각 데이터를 공백을 기준으로 구분하여 리스트로 저장.
# 내림차순 정렬
* list(map(int, input().split()))은 코딩테스트에서 자주 쓰이므로 차근차근 뜯어보겠다.
-> Input = 10,20,30,40,50이라 가정하면
>> data = list(input())
['1', '0', ' ', '2', '0', ' ', '3', '0', ' ', '4', '0', ' ', '5', '0']
>> data = list(input().split())
['10', '20', '30', '40', '50']
>> data = list(map(int(input().split())) # 모든 원소를 int형으로.
[10,20,30,40,50]
ㄴ.빠르게 입력받기 : 사용자로부터 입력을 최대한 빠르게 받아야하는 경우
- system 라이브러리에 정의된 sys.stdin.readline() 메서드를 이용!
단, 입력 후 Enter가 줄바꿈 기호\n로 입력되므로 rstrip()메서드를 이용해서 오른쪽에 붙어있는 줄바꿈 기호를 제거할 수 있음. (좌측 사진은 rstrip() 안 쓴 경우)
import sys
data = sys.stdin.readline().rstrip() #한줄로 입력된 데이터가 data에 저장.
print(data)
* 2진탐색, 정렬, 그래프 관련 문제에서 시간초과를 예방하기위해 자주 쓰임.
ㄷ. 자주 사용되는 표준 출력 방법
▶파이썬의 기본 출력인 print() 함수는 콤마를 이용하여 띄어쓰기로 구분 출력 가능하다.
▶print()는 기본적으로 출력 이후에 줄바꿈을 수행한다.
- 줄 바꿈을 원하지 않는 경우, 'end' 속성 이용!
a = 1
b = 2
print(a,b)
print(7, end= " ")
print(8, end= " ") # end 속성의 값으로 공백문자
answer = 7
print("정답은 " + str(answer) + "입니다.")
# python에서 문자열은 정수형과 더하기연산으로 출력안되기 때문에, str으로 바꿔준 후 출력.
1,2 출력 후에 기본적으로 줄 바꿈 수행. end속성 이용하면 줄바꿈 X
▶f-string : 특정한 문자를 간단하게 사용하기 위한 문법.
- 문자열 앞에 접두사 'f'를 붙여 사용하고, 중괄호 안에 변수명을 기입하여 문자열과 정수(다른 자료형들)를 함께 사용 가능!
5. 조건문
ㄱ. 조건문
▶조건문 : 프로그램의 흐름을 제어하는 문법
조건에 따라 프로그램의 로직을 설정할 수 있다.
▶파이썬에서 코드의 블록을 들여쓰기로 지정한다. (들여쓰기는 4개의 공백문자가 일반적이다.)
▶기본적인 형태 : if ~elif ~else형태
if 조건문 1: 조건문 1이 True일 때 실행
elif 조건문 2: 조건문 1이 False, 조건문2가 True일 때 실행
else : 조건문 1,2가 모두 False일 때 실행
x = 15
if x>= 10:
print("x는 10 이상이다.")
if x>=0:
print("x는 0 이상이다.")
if x>=30:
print("x는 30 이상이다.")
ㄴ. 비교 연산자
▶특정한 두 값을 비교할 때 이용
비교 연산자 | 설명 |
X == Y | X와 Y가 서로 같을 때 참(True)이다. |
X != Y | X와 Y가 서로 다를 때 참(True)이다. |
X > Y | X가 Y보다 클 때 참(True)이다. |
X < Y | X가 Y보다 작을 때 참(True)이다. |
X >= Y | X가 Y보다 크거나 같을 때 참(True)이다. |
X <= Y | X가 Y보다 작거나 같을 때 참(True)이다. |
* 다른 프로그래밍 언어와 다르게 파이썬에서는 '0 < x and x < 20' 이 아닌 '0< x < 20' 이라고 적을 수 있음.
ㄷ. 논리 연산자
▶논리 값 사이의 연산을 수행할 때 이용 (python은 ! , && 이런 기호를 쓰지 않음!)
논리 연산자 | 설명 |
X and Y | X와 Y 모두 참일 때 참(True)이다. |
X or Y | X 와 Y 중에 하나만 참이어도 참(True)이다. |
not X | X가 거짓(False)일 때 참(True)이다. |
ㄹ. 기타 연산자
▶다수의 데이터를 담는 자료형을 위해 in 연산자 , not in 연산자가 제공된다. -> 원소가 포함되어있는지를 확인하는 연산자
▶리스트, 튜플, 문자열, 딕셔너리 모두에서 사용이 가능하다.
in 연산자와 not in 연산자 | 설명 |
X in 리스트 | 리스트 안에 X가 들어있을 일 때 참(True)이다. |
X not in 문자열 | 문자열 안에 x가 들어있지 않을 때 참(True)이다. |
ㅁ. 파이썬의 pass 키워드 : 아무것도 처리하고 싶지 않을 때 사용
ex) 디버깅 과정에서 일단 조건문의 형태만 만들어 놓고 조건문을 처리하는 부분을 비워놓고 싶은 경우
score = 85
if score >= 80:
pass # 나중에 작성할 소스코드 (만약 pass를 안적어주면 오류발생하기 때문에)
else:
print("성적이 80점 미만입니다.")
print("프로그램을 종료합니다.") # 출력결과는 해당 문장만 출력된다.
ㅂ. 조건문의 간소화
▶조건문에서 실행될 소스코드가 한줄인 경우, 줄바꿈을 하지 않고 표현한다.
score = 85
if score>=80: result = "Success"
else: result = "Fail"
print(result)
▶조건부 표현식(Conditional Expression) : if~else문을 한줄에 작성할 수 있음.
score = 85
result = "Success" if score>=80 else "Fail" # [if실행문] [if문] [else] [조건 else실행문]
print(result)
6. 반복문
▶특정한 소스코드를 반복적으로 실행하고자 할때 사용하는 문법 (for문, while문)
▶코딩 테스트에서는 for문이 while문보다 더 간결한 경우가 많음.
ㄱ. while문
# while문
i = 1
result = 0
# 1~9 홀수 합 구하기.
while i <= 9: #i<=9가 참일 때까지 반복
if i % 2 == 1 :
result += i
i += 1
print(result)
▶while 반복문에서의 무한 루프(끊임없이 반복되는 반복 구문)는 코딩테스트에선 구현할 일이 거의 없으니 유의해야한다.
-> 반복문을 작성한 뒤에는 항상 반복문을 탈출할 수 있는지 확인!
ㄴ. for문
# for문 : 특정한 변수 i를 이용하여 'in'뒤에 오는 데이터(리스트, 튜플 등)에 포함된 원소를 1번째 인덱스부터 차례대로 방문.
array = [9, 8, 7, 6, 5] # array = (1,2,3,4,5) 튜플도 가능.
for x in array:
print(x)
▶for 반복문에서 연속적인 값을 차례대로 순회할 때는 range()를 주로 사용한다.
range(시작 값, 끝 값+1) 형태로 사용 - but, 인자를 1개만 넣으면 자동으로 시작값은 0.
result =0
for i in range(1,10): # 1부터 9까지
result += i
print(result)
▶파이썬의 continue 키워드 : 반복문에서 남은 코드의 실행을 건너뛰고, 다음 반복을 진행하고자 할 때 사용.
result = 0
for i in range(1,10):
if i % 2 == 0:
continue # i가 짝수일때는 result에 값을 더하지 않기 위해 사용.
result += i
print(result)
▶파이썬의 break 키워드 : 반복문을 즉시 탈출하고자 할 때 사용
i = 1
while True:
print("현재 i의 값:", i)
if i == 5:
break # i가 5일 때까지 while문 반복
i += 1
예제) 학생들의 합격여부 판단 예제 - 특정 번호의 학생은 제외하기 (continue 사용)
scores = [90, 85, 77, 65, 97]
cheating_student_list = [2, 4] # 부정행위한 학생 번호
for i in range(5):
if i + 1 in cheating_student_list:
continue
if scores[i] >= 80:
print(i+1, "번 학생은 합격입니다.")
ㄷ. 중첩된 반복문 (ex-구구단 예제)
#2단부터 9단까지의 구구단
for i in range(2, 10):
for j in range(1, 10):
print(i, "X", j, "=", i*j)
print("===========")
▶총 8*9 = 72번 반복하는 것이다.
다음 글은 「파이썬 기초문법」의 마지막 글로 '함수와 람다 표현식, 라이브러리'를 복습하는 글이 될 것이다.
'언어 > Python' 카테고리의 다른 글
[colab] 1. 코랩 설치 및 기초 명령어 (0) | 2021.01.17 |
---|---|
파이썬 기초 문법2 (함수와 람다 표현식, 라이브러리) (0) | 2021.01.02 |
라즈베리파이의 GPIO (0) | 2020.11.06 |
Beautiful Soup 사용하여 html 분석하기 (0) | 2020.09.07 |
기상청 날씨 데이터 cmd창에서 직접 불러오기 (0) | 2020.09.05 |