[이코테] 1. 파이썬 문법 부수기(3/4) - 입출력, 조건문, 반복문

nang_zz·2022년 7월 14일
0

이코테2021

목록 보기
3/5
post-thumbnail

동빈나님의 이코테 2021을 보고 정리한 게시글입니다.


입출력, 조건문, 반복문

입출력

표준 입력 방법

  • input() : 한 줄의 문자열을 입력 받는 함수
  • map() : 리스트의 모든 원소에 각각 특정한 함수를 적용할 때 사용
#공백을 기준으로 구분된 정수형 데이터 입력
data = list(map(int, input().split()))

#공백을 기준으로 구분된 데이터의 개수가 많지 않을 때
a, b, c = map(int, input().split())

빠르게 입력 받기

사용자로부터 input() 함수 보다 입력을 최대한 빠르게 받아야 하는 경우

  • sys 라이브러리에 정의되어 있는 sys.stdin.readline() 메서드 이용
  • 단, 입력 후 엔터(Enter)가 줄 바꿈 기호로 입력되므로 rstrip() 메서드 함께 이용
import sys

#문자열 입력 받기
data = sys.stdin.readline().rstrip()

표준 출력 방법

기본 출력은 print() 함수 이용

  • 각 변수를 콤마(,)를 이용하여 띄어쓰기로 구분하여 출력 가능
  • print()는 기본적으로 출력 이후에 줄 바꿈 수행
    - 줄 바꿈을 원치 않는 경우 'end' 속성을 이용
a = 1
b = 2
print(a, b)
print(7, end=" ")
print(8, end=" ")

#출력할 변수
answer = 7
print("정답은 " + str(answer) + "입니다.")

[실행 결과]

1 2
7 8 정답은 7입니다.

간단하게 출력하기(f-string)

문자열 앞에 접두사 'f'를 붙여 사용(파이썬 3.6부터)
중괄호 안에 변수명을 기입하여 간단하게 문자열과 정수 함께 넣을 수 있다.

answer = 7
print(f"정답은 {answer}입니다.")

[실행 결과]

정답은 7입니다.



조건문

프로그램의 흐름을 제어하는 문법

x = 15

if x >= 10:
	print("x >= 10")
    
if x >= 0:
	print("x >= 0")
    
if x >= 30:
	print("x >= 30")

[실행 결과]

x >= 10
x >= 0

💡 들여쓰기

파이썬은 코드의 블록(Block)을 들여쓰기(Indent)로 지정

조건문의 기본 형태

if ~ elif ~ else로, elif나 else 부분은 경우에 따라서 사용하지 않아도 된다.

if 조건문 1:
	조건문 1이 True일 때 실행되는 코드
elif 조건문 2:
	조건문 1에 해당하지 않고, 조건문 2가 True일 떄 실행되는 코드
else:
	위의 모든 조건문이 모두 True 값이 아닐 때 실행되는 코드

[예제]
성적이 90점 이상일 때: A
성적이 90점 미만, 80점 이상일 때: B
성적이 80점 미만, 70점 이상일 때: C
성적이 70점 미만일 때: F

score = 85

if score >= 90:
	print("학점: A")
elif score >= 80:
	print("학점: B")
elif score >= 70:
	print("학점: C")
else:
	print("학점: F")

[실행 결과]

학점: B

비교 연산자

특정한 두 값을 비교할 때 이용

비교 연산자설명
X == YX와 Y가 서로 같을 때 참(True)
X != YX와 Y가 서로 다를 때 참(True)
X > YX가 Y보다 클 때 참(True)
X < YX가 Y보다 작을 때 참(True)
X >= YX가 Y보다 크거나 같을 때 참(True)
X <= YX가 Y보다 작거나 같을 때 참(True)

논리 연산자

논리 값(True/False) 사이의 연산을 수행할 때 사용

논리 연산자설명
X and YX와 Y가 모두 참(True)일 때 참(True)
X or YX와 Y중에 하나만 참(True)이어도 참(True)
not XX가 거짓(False)일 때 참(True)

기타 연산자(in, not in)

다수의 데이터를 담는 자료형 리스트, 튜플, 문자열, 딕셔너리에서 in연산자와, not in 연산자 제공

연산자설명
x in 리스트리스트 안에 x가 들어가 있을 때 참(True)
x not in 문자열문자열 안에 x가 들어가 있지 않을 때 참(True)

pass 키워드

아무것도 처리하고 싶지 않을 때 사용

예시) 디버깅 과정에서 일단 조건문 형태만 만들어 놓고 조건문을 처리하는 부분은 비워놓고 싶은 경우

score = 95

if score >= 90:
	pass # 나중에 작성할 소스코드
else:
	print("학점: F")
    
print("프로그램을 종료합니다.")

[실행 결과]

프로그램을 종료합니다.

조건문의 간소화

조건문에서 실행될 소스코드가 한 줄인 경우, 굳이 줄 바꿈을 하지 않고 간략하게 표현 가능.

score = 85

if score >= 80: result = "Success"
else: result = "Fail"

print(result)  #Success

조건부 표현식(Conditional Expression)은 if ~ else문을 한 줄에 작성할 수 있도록 해줌.

score = 85

result = "Success" if score >= 80 else "Fail"

print(result)  #Success

조건문 내에서의 부등식

파이썬에서는 다른 프로그래밍 언어와 다르게 조건문 안에서 수학의 부등식을 그대로 사용 가능.

ex) x > 0 and x < 200 < x < 20은 같은 결과 반환




반복문

특정 소스코드를 반복적으로 실행하고자 할 때 사용하는 문법

  • 파이썬에서는 while문과 for문이 있는데, 어떤 것을 사용해도 상관 없지만, 코딩 테스트에서 실제 사용 예시를 확인해 보면, for문이 더 간결한 경우가 많다.

  • 반복문에서 끊임없이 반복되는 구문인 무한 루프(Infinite Loop)를 유의해야함.

while문

예시) 1부터 9까지 모든 정수의 합 구하기

i = 1
result = 0

#i가 9보다 작거나 같을 때 아래 코드를 반복적으로 실행
while i <= 9:
	result += i
    i += 1
    
print(result)  #45

예시) 1부터 9까지 홀수의 합 구하기

i = 1
result = 0

#i가 9보다 작거나 같을 때 아래 코드를 반복적으로 실행
while i <= 9:
	if i % 2 == 1:
		result += i
    i += 1
    
print(result)  #25

for문

in 뒤에 오는 데이터(리스트, 튜플 등)에 포함되어 있는 원소를 첫 번째 인덱스부터 차례대로 하나씩 방문

for 변수 in 리스트:
	실행할 소스코드
  • for문에서 연속적인 값을 차례대로 순회할 때는 range()를 주로 사용
    - range(시작값, 끝값 + 1) 형태로 사용
    - 인자를 하나만 넣으면 자동으로 시작 값 0

예시) 1부터 9까지 모든 정수의 합 구하기

result = 0

#i는 1부터 9까지 모든 값을 순회
for i in range(1, 10):
	result += i
    
print(result)  #45

continue 키워드

반복문에서 남은 코드의 실행을 건너뛰고, 다음 반복을 진행하고자 할 때 사용

예시) 1부터 9까지 홀수의 합 구하기

result = 0

for i in range(1, 10):
	if i % 2 == 0:
    	continue
	result += i
    
print(result)  #25

break 키워드

반복문을 즉시 탈출하고자 할 때 사용

예시) 1부터 5까지 정수 차례대로 출력

i = 1

while True:
	print("현재 i의 값:", i)
    if i == 5:
    	break
    i += 1

[실행 결과]

현재 i의 값: 1
현재 i의 값: 2
현재 i의 값: 3
현재 i의 값: 4
현재 i의 값: 5

enumerate

인덱스와 리스트의 값 모두 전달하여 pythonic하게 반복문 작성가능

예시)

rainbow = ['빨', '주', '노', '초', '파', '남', '보']

#range 사용
for idx in range(len(rainbow)):
    print(f'무지개의 {idx + 1}번 째 색은 {rainbow[idx]}')

#enumerate 사용
for idx, color in enumerate(rainbow):
	print(f'무지개의 {idx + 1}번 째 색은 {color}')

[실행 결과]

무지개의 1번 째 색은 빨
무지개의 2번 째 색은 주
무지개의 3번 째 색은 노
무지개의 4번 째 색은 초
무지개의 5번 째 색은 파
무지개의 6번 째 색은 남
무지개의 7번 째 색은 보
profile
블로그 이전했어요. fine-dev.site

0개의 댓글