Python - 입출력, 조건문, 반복문, 함수

harold·2021년 5월 16일
0

python

목록 보기
1/3

목표

  • 입출력, 조건문, 반복문, 함수에 대해서 알아보기

기본 입출력


input() 함수

  • 한 줄의 문자열을 입력 받는 함수

map() 함수

  • 리스트의 모든 원소에 각각 특정한 함수를 적용할 때 사용

예시) 공백을 기준으로 구분된 데이터를 입력 받을 때는 다음과 같이 사용

  • list( map ( int, input().split() ) )

예시) 공백을 기준으로 구분된 데이터의 개수가 많지 않다면?

  • a, b, c = map( int, input().split() )

< 예시 >

# 데이터의 개수 입력
n = int( input() )

# 각 데이터를 공백을 기준으로 구분하여 입력
data = list( map( int, input().split() ) )
data.sort( reverse = True )

# 각 데이터를 문자열로 출력
data2 = input().split()

# 세개의 변수를 입력받아 출력
a, b, c = map( int, input().split() )

print( n )
print( data )
print( data2 )
print( a, b, c )

< 결과 값 >

입력 ==========

5

10 20 30 40 50

50 40 30 20 10

1 2 3

출력 ==========

5

[50, 40, 30, 20, 10]

['50', '40', '30', '20', '10']

1 2 3

빠르게 입력받기

  • 사용자로부터 입력을 최대한 빠르게 받아야 하는 경우
  • 파이썬의 경우 sys 라이브러리에 정의되어 있는 sys.stdin.readline() 메서드 이용
    • 단, 입력 후 엔터(Enter)가 줄 바꿈 기호로 입력되므로 rstrip() 메서드 함께 사용

< 예제 >

import sys

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

< 결과 값 >

입력 ==========

1 2 3 4 5

출력 ==========

1 2 3 4 5

자주 사용되는 표준 출력 방법

  • 파이썬에서 기본 출력은 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

  • 파이썬 3.6부터 사용 가능
  • 문자열 앞에 접두사 'f'를 붙여 사용
  • 중괄호 안에 변수명을 기입하여 간단히 문자열과 정수를 함께 넣음

< 예제 >

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)로 지정
  • 파이썬 스타일 가이드라인에서는 4개의 공백 문자를 사용하는것을 표준으로 설정

< 예제 >

score = 85
if score >= 70 : 
  print( '성적이 70점 이상입니다. ')
  if score >= 90 :
    print('우수한 성적입니다.')
else :
  print('성적이 70점 미만입니다.')
  print('조금 더 분발하세요.')

print( '프로그램을 종료합니다.')

< 결과 값 >

성적이 70점 이상입니다. 

프로그램을 종료합니다.

조건문의 기본 형태

  • 기본형태는 if ~ elif ~ else 이다.
    • 조건문을 사용할 때 elif 혹은 else 부분은 경우에 따라 사용하지 않아도 된다.

< 예제 >

a = -15

if a >= 0 :
  print( "a >= 0")
elif a >= -10 :
  print("0 > a >= -10")
else:
    print("-10 > a")

< 결과 값 >

-10 > a

비교 연산자

  • 특정한 두 값을 비교할 때 이용
    • 대입 연산자(=) 같음 연산자(==)의 차이점에 유의

논리 연산자

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

< 예제 >

if True or False:
 print("Yes")
 
a = 15

if a <= 20 and a >= 0 : 
 print( "Yes" )

< 결과 값 >

Yes

Yes

기타 연산자

  • 다수의 데이터를 담는 자료형을 위해 in 연산자not in연산자 가 제공된다.
    • 리스트 , 튜플 , 문자열, 딕셔너리 모두에서 사용이 가능

pass 키워드

  • 아무것도 처리하고 싶지 않을 때 사용
  • 예시 ) 디버깅 과정에서 일단 조건문의 형태만 만들어 놓고 조건문을 처리하는 부분은 비워놓고 싶은 경우

< 예제 >

score = 85

if score >= 80 : 
	pass # 나중에 작성할 소스코드
else : 
	print( '성적이 80점 미만입니다.' )
    
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

조건문 내에서의 부등식

  • 다른 프로로그래밍과 다르게 파이썬은 조건문 안에서 수학의 부등식을 그대로 사용 가능
  • 예시 ) 'x > 0 and x < 20''0 < x < 20' 은 같은 결과를 반환

< 코드 스타일 1 >

x = 15
if x > 0 and x < 20 :
	print( "x는 0이상 20 미만의 수이다." )

< 코드 스타일 2 >

x = 15 
if 0 < x < 20:
	print( "x는 0이상 20 미만의 수" )

반복문


< 1부터 9까지 모든 정수의 합 구하기 예제 ( while문 ) >

i = 1
result = 0

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

< 결과 값 >

25

for문

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

< 예제 >

array = [ 9, 8, 7, 6, 5 ]

for x in array:
  print(x)

< 결과 값 >

9
8
7
6
5

for문 - range()

  • 연속적인 값을 차례대로 순회할때 사용
  • range( 시작 값, 끝 값+1 ) 형태로 사용
  • 인자를 하나만 넣으면 자동으로 시작 값은 0이 됨

< 예제 >

result = 0

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

< 결과 값 >

45

continue 키워드

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

< 예제 >

result = 0

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

< 결과 값 >

25

break 키워드

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

< 예제 >

i = 1

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

< 결과 값 >

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

< 학생들의 합격 여부 판단 예제 - 특정 번호의 학생은 제외 >

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, "번 학생은 합격입니다.")

< 결과 값 >

1 번 학생은 합격입니다.
5 번 학생은 합격입니다.

format 키워드 사용

  • format 키워드를 사용하여 각각 데이터를 넣을 수 있다.

< 구구단 예제 >

n = int( input() )

for i in range( 1, 10 ) :	# 뒤에 10은 -> 10-1이라고 생각하면 됨
	print( '{0} * {1} = {2}'.format( n, i, n * i ) )  # 즉 9번 돈다

위의 예제처럼 {0}, {1}, {2} 에 셋팅 값들이 1:1 매핑되어 들어간다.

< 결과 값 >

3
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
3 * 5 = 15
3 * 6 = 18
3 * 7 = 21
3 * 8 = 24
3 * 9 = 27

역순으로 출력하기

  • 역순으로 데이터를 출력한다

< 역순 출력 예제 >

n = int( input() )

for i in range( n, 0, -1 ) : # 두번째 매개변수 +1 까지 -1씩 감소
	print( i )

< 결과 값 >

5

5
4
3
2
1

함수


정의

def 함수명(매개변수):
	실행할 소스코드
    return 반환 값

< 더하기 함수 예시1 >

def add(a, b):
  return a + b
print(add(3, 7))

< 결과 >

10

< 더하기 함수 예시2 >

def add(a, b):
  print( "함수의 결과 : " , a + b )
add(3,7)

< 결과 >

함수의 결과 :  10

파라미터 지정하기

  • 파라미터 변수를 직접 지정할 수 있다.
  • 이 경우 매개변수의 순서가 달라도 상관없다.

< 예제 >

def add(a ,b ):
  print( "함수의 결과 : " , a + b )
add( b = 3, a = 7)

< 결과 값 >

함수의 결과 :  10

global 키워드

  • 변수를 global 키워드로 지정하면 해당 함수는 지역 변수를 만들지 않고, 함수 바깥에 선언된 변수를 바로 참조 하게 된다.

< 예제 >

# 예제 1 =====
a = 0

def func():
  global a
  a += 1

for i in range(10):
  func()

print(a)

# 예제 2 =====
array = [1,2,3,4,5]

def func() :
  array = [3,4,5]
  array.append(6)
  print(array)

func()
print(array)
  
  

< 결과 값 >

예제 1 =====
10

예제 2 =====
[3, 4, 5, 6]
[1, 2, 3, 4, 5]

여러 개의 반환 값

  • 파이썬에서 함수는 여러 개의 반환 값을 가질 수 있다.

< 예제 >

def operator( a, b) : 
  add_var = a + b
  subtract_var = a - b
  multiply_var = a * b
  divide_var = a / b

  return add_var , subtract_var , multiply_var , divide_var

a, b, c, d = operator( 7, 3)

print( "a : " + str(a) + "\n" 
      ,"b : " + str(b) + "\n"
      ,"c : " + str(c) + "\n" 
      ,"d : " + str(d) )

< 결과 값 >

 a : 10
 b : 4
 c : 21
 d : 2.3333333333333335

람다 표현식

  • 특정한 기능을 수행하느 함수를 한 줄에 작성할 수 있다는 특징

< 예제 >

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

# 일반적인 add() 메서드 사용
print( add( 3, 7 ) )

# 람다 표현식으로 구현한 add() 메서드
print( ( lambda a, b: a + b )(3, 7) )

< 결과 값 >

10
10

람다 표현식 예시 - 내장 함수에서 자주 사용되는 람다 함수

array = [ ('홍길동', 50) , ('이순신', 32) , ('아무개',74) ]

def my_key(x) : 
  return x[1]

print( sorted( array, key = my_key) )
print( sorted( array, key = lambda x: x[1] ) )

< 결과 값 >

[('이순신', 32), ('홍길동', 50), ('아무개', 74)]

[('이순신', 32), ('홍길동', 50), ('아무개', 74)]

람다 표현식 예시 - 여러 개의 리스트에 적용

list1 = [ 1, 2, 3, 4, 5]
list2 = [ 6, 7, 8, 9, 10]

result = map( lambda a, b : a + b , list1, list2 )

print( list( result ) )

< 결과 값 >

[7, 9, 11, 13, 15]

< Reference Site >
동빈나 https://www.youtube.com/watch?v=m-9pAwq1o3w&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=1

0개의 댓글

관련 채용 정보