카테고리 없음

[내배캠 / 파이썬 기초] 종합 정리본 (산술연산자 7가지 / 변수선언 문자열 / 리스트, 딕셔너리, 튜플, 집합 / 조건문, 반복문 / 함수 / 예외처리 / 파일 불러오기 / 한 줄로 쓰기 / 클래스)

보리시스템 2022. 11. 22.

[내배캠 / 파이썬 기초] 01. 산술연산자 7가지(+, -, *, /, 제곱 **, 몫 //, 나머지 &)

 

[내배캠 / 파이썬 기초] 01. 산술연산자 7가지(+, -, *, /, 제곱 **, 몫 //, 나머지 &)

목차 1. 덧셈 ( + ) - 숫자, 문자열 2. 뺄셈 ( - ) - 숫자 3. 곱셈 ( * ) - 숫자, 문자*정수 4. 나눗셈 ( / ) - 숫자 5. 거듭제곱 ( ** ) - 숫자 6. 몫 ( // ) - 숫자 7. 나머지 ( % ) - 숫자 파이썬 산술연살자는 7가지(

boleesystem.tistory.com

 

목차

   1. 덧셈 ( + ) - 숫자, 문자열

   2. 뺄셈 ( - ) - 숫자

   3. 곱셈 ( * ) - 숫자, 문자*정수

   4. 나눗셈 ( / ) - 숫자

   5. 거듭제곱 ( ** ) - 숫자

   6. 몫 ( // ) - 숫자

   7. 나머지 ( % ) - 숫자

 


 

파이썬 산술연살자는 7가지(+, -, *, /, 제곱 **, 몫 //, 나머지 &)가 있다.

 

특히 아래의 특이사항이 있음을 확인해야 한다.

- 덧셈 : 문자열끼리 덧셈 가능

- 곱셈 : 문자와 정수의 곱셈 가능 (문자와 실수는 불가)

 


 

1. 덧셈( + )

1) 숫자

  • 코드
a = 3
b = 2

print(a+b)
  • 산출값 : 5

 

2) 문자

  • 코드
a = 'bolee'
b = 'system'

print(a+b)
  • 산출값 : boleesystem

 


 

2. 뺄셈( - )

- 숫자

  • 코드
a = 3
b = 2

print(a-b)
  • 산출값 : 1

 


 

3. 곱셈( * )

- 숫자

  • 코드
a = 3
b = 2

print(a*b)
  • 산출값 : 6

 

- 문자*정수

[참고] 문자*실수를 곱하는 경우, 에러 뜸

Traceback (most recent call last):
File "C:/Users/user/Desktop/project2022/pythonProject/prac.py", line 4, in <module>
print(a*b)
TypeError: can't multiply sequence by non-int of type 'float'

종료 코드 1(으)로 완료된 프로세스

 

  • 코드
a = 'bolee'
b = 2

print(a*b)
  • 산출값 : boleebolee

 


 

4. 나눗셈( % )

- 숫자

  • 코드
a = 3
b = 2

print(a%b)
  • 산출값 : 1

 


 

5. 거듭제곱( ** )

- 숫자

  • 코드
a = 3
b = 2

print(a**b) # 3의 2승
  • 산출값 : 9

 


 

6. 몫( // )

- 숫자

  • 코드
a = 3
b = 2

print(a//b) # 3을 2로 나눴을 때의 몫
  • 산출값 : 1

 


 

7. 나머지( % )

나머지의 쓰임새?
1. 동등하게 3가지로 나눠줘야 하는 경우, 나머지가 0일 때, 1일 때, 2일 때
2. 짝/홀수 판별하는 경우, 나머지가 0이면 짝수, 1이면 홀수

 

- 숫자

  • 코드
a = 3
b = 2

print(a%b) # 3을 2로 나눈 나머지
  • 산출값 : 1

 


 

[내배캠 / 파이썬 기초] 02. 변수선언 문자열(따옴표/연산/인덱싱[]/슬라이싱[:]/.split('')/len()/.upper()/.lower()/replace('','')/f-string(f'{}'))

 

[내배캠 / 파이썬 기초] 02. 변수선언 문자열(따옴표/연산/인덱싱[]/슬라이싱[:]/.split('')/len()/.upper()

목차 1. 문자열 따옴표 2. 문자열 연산 : 문자열+문자열 3. 인덱싱 / 슬라이싱 / .split() 4. 기타 : len() / .upper() / .lower() / .replace(' ', ' ') 5. f-string 변수란? - 값을 담는 박스 - 컴퓨터가 기억하고 있는 메

boleesystem.tistory.com

 

목차

   1. 문자열 따옴표
   2. 문자열 연산
 : 문자열+문자열
   3. 인덱싱 / 슬라이싱 / .split()
   4. 기타
 : len() / .upper() / .lower() / .replace(' ', ' ')

   5. f-string

 


 

변수란?
- 값을 담는 박스
- 컴퓨터가 기억하고 있는 메모리 공간에 올려져 있는 값들을 가리키고 있는 것

 

1. 문자열 따옴표

  • 작은따옴표( ' ' ), 큰따옴표( " " ) 모두 사용 가능
a = 'aa'
b = 'aa'

 

  • 따옴표로 감싸지 않으면 변수이름을 뜻함
a = 1
b = "a"
c = a

print(a, b, c)		# 출력값 1 a 1

 


 

2. 문자열 연산 : 문자열+문자열

문자열 연산에서 print(a+b)와 print(a, b)의 차이? 띄어쓰기!
- print(a+b)의 출력값은 boleesystem
- print(a, b)의 출력값은 bolee system
문자열+정수는 에러

 

a = 'bolee'
b = "system"

print(a+b)	 # 출력값 boleesystem
a = 'bolee'
b = 'system'

print(a, b)	# 출력값 bolee system
a = "3"
b = "2"

print(a + b)	# 출력값 32

 


 

3. 인덱싱 / 슬라이싱 / .split()

1.  인덱싱[ ]

인덱싱(indexing)?
- 문자열에서 한 문자씩 부를 때 몇 번째인지 '인덱스'를 넣어 부르는 것
f='boleesystem'

print(f[1]) # 출력값 o

 


 

2.  슬라이싱[:]

슬라이싱(slicing)?
- 문자열의 일부를 잘라내는 것
f='boleesystem'

print(f[0])     # 출력값 b
print(f[5])     # 출력값 s

print(f[0:5])   # 출력값 bolee	/ f[0]부터 f[4]까지 (※ 헷갈리지 않게 유의)
print(f[5:])    # 출력값 system	/ f[5]부터
print(f[:5])    # 출력값 bolee	/ f[5]까지
print(f[:])     # 출력값 boleesystem / 처음부터 끝까지
헷갈리지 않기!!!
- f[0:5]는 f[0]부터 f[4]까지
- f[5:]는 f[5]부터

 


 

3.  .split('문자열')

  • 특정 문자열로 자르기
  • [예제1] 이메일 도메인 출력하기
myemail = 'bolee@gmail.com'

result = myemail.split('@')
print(result)    		# 출력값 ['bolee', 'gmail.com']

print(result[0]) 		# 출력값 bolee / 리스트의 첫번째 요소
print(result[1]) 		# 출력값 gmail.com / 리스트의 두 번째 요소
result2 = result[1].split('.')
print(result2) 				# 출력값 ['gmail','com']
print(result2[0])  	 		# 출력값 gmail -> 우리가 알고 싶었던 것

# 한 줄로 정리하면
print(myemail.split('@')[1].split('.')[0]) # 출력값 gmail

 

  • 예제2 : 전화번호 지역번호 출력하기
phone = "02-123-1234"

print(phone.split("-"))    # 출력값 ['02', '123', '1234']
print(phone.split("-")[1]) # 출력값 02

 


 

4. 기타 : len() / .upper() / .lower() / .replace(' ', ' ') / 

1. len()

  • 문자열 길이 구하기
print(len("bolee."))	# 출력값 6

 


 

2. .upper() / .lower()

  • 모든 알파벳을 대문자/소문자로 바꾸기
sentence = 'boLEE'

print(sentence.upper())		# 출력값 BOLEE
print(sentence.lower())		# 출력값 bolee

 


 

3.  .replace('문자', '문자')

  • 특정 문자를 다른 문자로 바꾸기
txt = 'bo-lee-system'
print(txt.replace('-', '+'))	# 출력값 'bo+lee+system'

 


 

5. f-string

  • 변수로 더 직관적인 문자열 만들기
scores = [
    {'name':'bo','score':90},
    {'name':'lee','score':85},
    {'name':'system','score':75}
]

for s in scores:
    name = s['name']
    score = str(s['score'])    
    # str : 숫자에서 문자로 변환, int : 문자에서 숫자로 변환
    
    print(f'{name}는 {score}점 입니다.') 
    # print(name+'는 '+score+'점 입니다')를 f-string으로 동일하게 표현

# 출력값
# bo는 90점 입니다.
# lee는 85점 입니다.
# system는 75점 입니다.

 


 

[내배캠 / 파이썬 기초] [내배캠 / 파이썬 기초] 03. 리스트(a=[ , , ]/a=list()/.append()/.sort( )/.sort(reverse=True))/print(요소 in 리스트명) / 딕셔너리(a={" ": , " ": }/print("key값" in 딕셔너리명)) / 튜플(a=( , , )/불변) / 집합(a=[ , , ]/a_set..

 

[내배캠 / 파이썬 기초] 03. 리스트(a=[ , , ]/a=list()/.append()/.sort( )/.sort(reverse=True))/print(요소 in 리스

목차 01. 리스트 1. 리스트 예제 2. 인덱싱 / 슬라이싱 3. len() : 길이 구하기 4. .append() : 요소 추가 5. .sort( ) / .sort(reverse=True) : 정렬하기 6. print(요소 in 리스트명) : 요소 찾기 7. 요소가 리스트인 경우

boleesystem.tistory.com

 

목차

  01. 리스트

  1. 리스트 예제

  2. 인덱싱 / 슬라이싱
  3. len() : 길이 구하기
  4. .append() : 요소 추가
  5. .sort( ) / .sort(reverse=True) : 정렬하기
  6. print(요소 in 리스트명) : 요소 찾기
  7. 요소가 리스트인 경우


  02. 딕셔너리

  1. 딕셔너리 예제
  2. 값 수정 / 추가하기
  3. print("key값" in 딕셔너리명) : key값 찾기

 

  03. 리스트와 딕셔너리의 조합

  04. 튜플

  05. 집합

 


 

01. 리스트

리스트(list)란?
- 순서로 값을 담는 자료형
* 리스트, 딕셔너리 모두 값을 담는 방법(자료형)에 대한 것이나, 딕셔너리는 key:value로 값을 담음

 

1. 리스트 예제

a = [1, 'a', [8, 4, 2], True]
b = []
c = list()

# 빈 리스트 만들기
print(c)	# 출력값 []
print(d)	# 출력값 []

 


 

2. 인덱싱 / 슬라이싱

a = [1, 3, 2]
print(a[2])	# 출력값 2
print(a[0:1])	# 출력값 [1, 3]
print(a[-1])	# 출력값 2 / 맨 마지막 값

 


 

3. len() : 길이 구하기

a = [1, 3, 2]
b = [1, 3, 2, [8, 4, 2]]
print(len(a))	# 출력값 3
print(len(b))	# 출력값 4

 


 

4. .append() : 요소 추가

a = [1, 3, 2]
a.append(5)
print(a)     # 출력값 [1, 3, 2, 5]

a.append([9, 0])
print(a)     # [1, 3, 2, 5, [9, 0]]

# 더하기 연산과 비교
a += [4, 8]
print(a)     # [1, 3, 2, 5, [9, 0], 4, 8]

 


 

5. .sort( ) / .sort(reverse=True) : 정렬하기

a = [1, 9, 0]
a.sort()
print(a)   # 출력값 [0, 1, 9]

a.sort(reverse=True)
print(a)   # 출력값 [9, 1, 0]

 


 

6. print(요소 in 리스트명) : 요소 찾기

  • 리스트 안에 해당 요소가 있는지 확인하기
a = [1, "2"]
print(2 in a)      # 출력값 False
print("2" in a)    # 출력값 True
print(0 not in a)  # 출력값 True

 


 

7. 요소가 리스트인 경우

a = [1, 3, [5, 6], 0]
print(a[2])      # 출력값 [5, 6]
print(a[2][0])   # 출력값 5 / a[2]의 출력값인 [5, 6]에서 0번째 요소인 5

 


 

딕셔너리(dictionary)란?
- key:value의 쌍으로 이루어진 자료형
* 리스트, 딕셔너리 모두 값을 담는 방법(자료형)에 대한 것이나, 리스트는 순서로 값을 담음

 

02. 딕셔너리

딕셔너리에서 인덱싱?
- 딕셔너리의 요소에는 순서가 없기 때문에 인덱싱 사용할 수 없음

 

1. 딕셔너리 예제

a = {"bolee":1, "system":2}

# 빈 딕셔너리 만들기
b = {}
c = dict()

print(b)	# 출력값 {}
print(c)	# 출력값 {}
student = {"name":"bo", "age": 51, "scores": {"math": 91, "science": 90}}

print(student["scores"])             # 출력값 {'math': 91, 'science': 90}
print(student["scores"]["science"])  # 출력값 90

 


 

2. 값 수정 / 추가하기

student = {"name":"lee", "age": 51}

# 값 수정하기
student["name"] = "bo"
student(person)  # 출력값 {'name': 'bo', 'age': 51}

# 값 추가하기
student["height"] = 185.5
print(person)  # 출력값 {'name': 'bo', 'age': 51, 'height': 185.5}

 


 

3. print("key값" in 딕셔너리명) : key값 찾기

value값은 어떻게 찾지?
1. map을 활용해 dict을 뒤집어 key와 value 자리를 바꾸기
2. for문 활용하기

> 더보기 : [궁금해] (Python) 딕셔너리에서 value값을 찾는 방법? dict 뒤집기와 for문 활용하기!

 

  • 딕셔너리 안에 해당 key값이 있는지 확인하기
student = {"name":"bo", "age": 51}

print("name" in student)    # 출력값 True
print("bo" in student)      # 출력값 False / "bo"는 key값이 아닌 value값임

 

 


 

03. 리스트와 딕셔너리 조합

students = [{'name': 'bo', 'age': 51}, {'name': 'lee', 'age': 42}]

print(students[0]['name'])  # 출력값 bo
print(students[1]['age'])   # 출력값 42

student = {'name': 'system', 'age': 18}
students.append(student)

print(students)
# 출력값 [{'name': 'bo', 'age': 51}, {'name': 'lee', 'age': 42}, {'name': 'system', 'age': 18}]
students = [
    {'name': 'bo', 'age': 51, 'score':{'math':80,'science':100}},
    {'name': 'lee', 'age': 42, 'score':{'math':91,'science':77}},
    {'name': 'system', 'age': 18, 'score':{'math':51,'science':88}},
]

print(people[1]['score']['math'])   # 출력값 91

 


 

04. 튜플

튜플(tuple)이란?
- 리스트와 비슷하지만 불변인 자료형
- 순서가 존재
* 리스트 : 순서로 값을 담는 자료형
* 딕셔너리 :  key:value의 쌍으로 이루어진 자료형

 

  • 튜플 예제
a = (1,2,3)

print(a[0]) # 출력값 1

 

  • 요소값을 변경할 수 없음
a = (1,2,3)

a[0] = 99

# 오류남
# TypeError: 'tuple' object does not support item assignment

 

  • 리스트와 튜플로 딕셔너리와 비슷하게 만들어 사용해야 할 때 많이 쓰임
# 표현방법1을 튜플을 이용해 2처럼 쓸 수 있음?????????????????????????????????????????????

# 표현방법1
students = [{'name': 'bo', 'age': 51}, {'name': 'lee', 'age': 42}]

# 표현방법2
students = [('bo','51'),('lee','42'))]

 


 

05. 집합

집합(set)이란?
- '집합'을 구현하는 방법
- 중복이 제거됨

 

  • 집합 예제
a = [1,2,3,1,2,3,1,2,3]

a_set = set(a)

print(a_set)	# 출력값 {1, 2, 3}

 

  • 교집합/합집합/차집합
1. 교집합
1) a & b
2) a.intersection(b)

2. 합집합
1) a | b
2) a.union(b)

3. 차집합
1) a - b
2) a.difference(b)
# 작성방식1
a = [1,2,3,4,5,6]
b = [4,5,6,7,8,9]

a_set = set(a)
b_set = set(b)

print(a_set & b_set)    # 교집합 / 출력값 {4, 5, 6}
print(a_set | b_set)    # 합집합 / 출력값 {1, 2, 3, 4, 5, 6, 7, 8, 9}
print(a_set - b_set)    # 차집합 / 출력값 {1, 2, 3}


# 작성방식2
a = set([1,2,3,4,5,6])
b = set([4,5,6,7,8,9])

print(a & b)            # 교집합 / 출력값 {4, 5, 6}
print(a | b)            # 합집합 / 출력값 {1, 2, 3, 4, 5, 6, 7, 8, 9}
print(a - b)    # 차집합 / 출력값 {1, 2, 3}


# 작성방식3
a = set([1,2,3,4,5,6])
b = set([4,5,6,7,8,9])

print(a.intersection(b))    # 교집합 / 출력값 {4, 5, 6}
print(a.union(b))           # 합집합 / 출력값 {1, 2, 3, 4, 5, 6, 7, 8, 9}
print(a.difference(b))      # 차집합 / 출력값 {1, 2, 3}

 


 

[내배캠 / 파이썬 기초] 04. 조건문(if / else / elseif / enumerate, break) / 반복문(for)

 

[내배캠 / 파이썬 기초] 04. 조건문(if / else / elseif / enumerate, break) / 반복문(for)

목차 01. 조건문 : if / else / elseif 02. 반복문 : for 1. for문 예제 2. for문 / enumerate, break @ 예제문제 1) 리스트에서 나이가 40보다 큰 사람만 출력 2) 리스트에서 짝수만 출력하기 3) 리스트에서 짝수의 개

boleesystem.tistory.com

 

목차

   01. 조건문 : if / else / elseif

   02. 반복문 : for

   1. for문 예제
   2. for문 / enumerate, break
  @ 예제문제

   1) 리스트에서 나이가 40보다 큰 사람만 출력
   2) 리스트에서 짝수만 출력하기
   3) 리스트에서 짝수의 개수 출력하기
   4) 리스트에서 짝수의 개수 출력하기
   5) 리스트 내 자연수 중 가장 큰 숫자 구하기

 


 

01. 조건문 : if / else / elseif

if문?
- 조건을 만족했을 때만 특정 코드를 실행하도록 하는 문법

else문과 elif문?
- 조건을 만족하지 않을 때 다른 코드를 실행하고 싶을 때 쓰는 문법
- 다양한 조건을 판단할 때는 elif문을 사용

 

age = 14
if age < 14:
    print("어린이입니다.")
elif age < 20:
    print("청소년입니다.")
else:
    print("성인입니다.")

 


 

02. 반복문 : for

파이썬에서 반복문?
- 리스트 안에 있는 요소들을 하나씩 꺼내서 사용하는 것

 

1. for문 예제

fruits = ['사과', '배', '감', '귤']

for fruit in fruits:
    print(fruit)  # 출력값 사과 배 감 귤

 


 

2. for문 / enumerate, break

enumerate 함수?
- 리스트가 있는 경우 순서와 리스트의 값을 전달하는 기능을 가짐
- enumerate는 '열거하다'라는 의미
- 순서가 있는 자료형(list, set, tuple, dictionary, string)을 입력 받아 인덱스 값을 포함하는 enumerate 객체를 리턴
- 보통 for문과 함께 자주 사용

* 출처 : 위키독스 파이썬 01. range와 enumerate 함수

 

  • 예제1 : for문 / enumerate로 순서와 값 출력하기
alphabets = ['b', 'o', 'l', 'e', 'e']

for i, alphabet in enumerate(alphabets):
    print(i, alphabet)
    
# 출력값
    0 b
    1 o
    2 l
    3 e
    4 e

 

  • 예제2 : for문 / enumerate / break로 원하는 순서까지의 값만 출력하기
alphabets = ['b', 'o', 'l', 'e', 'e']

for i, alphabet in enumerate(alphabets):
    print(i, alphabet)
    if i == 2:
        break
        
# 출력값
# 0 b
# 1 o
# 2 l

 

  • 예제3 :  for문 / enumerate / break / 인덱스 시작값을 0이 아닌 1부터 (start=1)
*출처 : Python Examples - Enumerate - Start at 1
alphabets = ['b', 'o', 'l', 'e', 'e']

for i, alphabet in enumerate(alphabets, start=1):
    print(i, alphabet)
    if i == 2:
        break

# 출력값
# 1 b
# 2 o

 


 

@ 예제 문제

1) 리스트에서 나이가 40보다 큰 사람만 출력

  • 코드
people = [
    {'name': 'bob', 'age': 20},
    {'name': 'carry', 'age': 38},
    {'name': 'john', 'age': 7},
    {'name': 'smith', 'age': 17},
    {'name': 'ben', 'age': 27},
    {'name': 'bobby', 'age': 57},
    {'name': 'red', 'age': 32},
    {'name': 'queen', 'age': 25}
]
  • 풀이
for person in people:
    if person['age'] > 40:
        print(person['name'])   # 출력값 bobby

 

2) 리스트에서 짝수만 출력하기

  • 입력 코드
num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

for num in num_list:
    if num % 2 == 0:
        print(num)
  • 출력값 : 2 6 2 4 6 2 4

 

3) 스트에서 짝수의 개수 출력하기

  • 입력 코드
num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

count = 0

for num in num_list:
    if num % 2 == 0:
        count += 1

print(count)
  • 출력값 : 7
  • 유의사항 : print(count)를 작성할 때 탭의 여부에 따라 출력값이 달라짐
num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

count = 0

for num in num_list:
    if num % 2 == 0:
        count += 1

    print(count)    # 첫번째 출력값 1 2 3 4 5 6 7

print(count)        # 두번째 출력값 7

 

4) 스트에서 짝수의 개수 출력하기

  • 입력 코드1
num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

print(sum(num_list))
  • 입력 코드2
num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

add = 0

for num in num_list:
    add += num

print(add)
  • 출력값 : 38

 

5) 리스트 내 자연수 중 가장 큰 숫자 구하기

  • 입력 코드1
num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

print(max(num_list))
  • 입력 코드2
num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

max = 0

for num in num_list:
    if max < num:
        max = num
        
print(max)

 


 

[내배캠 / 파이썬기초] 05. 함수(기초, 심화 - 매개변수) / map, lambda식 / filter식 / 매개변수(def cal(a, b=3):/def cal(*args):/def cal(**args):)

 

[내배캠 / 파이썬기초] 05. 함수(기초, 심화 - 매개변수) / map, lambda식 / filter식 / 매개변수(def cal(a, b

목차 01. 함수 기초 02. 함수 심화 1. map, lambda식 2. filter식 3. 매개변수 01. 함수 기초 함수란 반복적으로 사용하는 코드들에 이름을 붙여놓은 것 def test(): print("함수출력1") print("함수출력2") test() test

boleesystem.tistory.com

 

목차

   01. 함수 기초

   02. 함수 심화

   1. map, lambda식

   2. filter식 
   3. 매개변수

 


 

01. 함수 기초

  • 함수란 반복적으로 사용하는 코드들에 이름을 붙여놓은 것
def test():
    print("함수출력1")
    print("함수출력2")

test()
test()

# 출력값
# 함수출력1
# 함수출력2
# 함수출력1
# 함수출력2

 

  • 조건문에 넣을 값을 바꿔가면서 결과를 확인할 때 쓰면 편함
def test(num):
		if num > 100:
		    print('세 자릿수 이상')
		elif num > 10:
		    print('두 자릿수')
		else:
		    print('한 자릿수')

test(19)

# 출력값
# 두 자릿수

 

  • 결과 값을 돌려주도록 함수를 만들 수 있음
def test(num):
      if num > 100:
          return '세 자릿수 이상'
      elif num > 10:
          return '두 자릿수'
      else:
          return '한 자릿수'

result = test(19)
print(result)

 

  • [예제문제] 주민등록번호를 입력하면 성별을 출력
def gender(pin):
    num = int(pin.split('-')[1][0])

    if num & 2 == 0:
        print('남성입니다.')
    else:
        print('여성입니다.')

my_pin = '123456-1234567'
gender(my_pin)

 


 

02. 함수 심화

1. map, lambda식

  • if문을 풀어쓴 작성 방식
  1. students를 하나하나 돌면서 check_adult에 넣어라
  2. 그리고 그 결과값을 다시 리스트로 묶어라
students = [
    {'name': 'bo', 'age': 51},
    {'name': 'lee', 'age': 42},
    {'name': 'system', 'age': 18},
]

def check_adult(student):
    if student['age'] > 20:
        return '성인입니다.'
    else:
        return '성인이 아닙니다.'

result = map(check_adult, students)
print(list(result))

# 출력값 ['성인입니다.', '성인입니다.', '성인이 아닙니다.']

 

  • if문을 한 줄로 쓴 작성 방식
students = [
    {'name': 'bo', 'age': 51},
    {'name': 'lee', 'age': 42},
    {'name': 'system', 'age': 18},
]

def check_adult(student):
    return '성인입니다.' if student['age'] > 20 else '성인이 아닙니다.'

result = map(check_adult, students)
print(list(result))

# 출력값 ['성인입니다.', '성인입니다.', '성인이 아닙니다.']

 

  • lambda식으로 쓴 작성 방식
students = [
    {'name': 'bo', 'age': 51},
    {'name': 'lee', 'age': 42},
    {'name': 'system', 'age': 18},
]

result = map(lambda student: ('성인입니다.' if student['age'] > 20 else '성인이 아닙니다.'), students)

print(list(result))

# 출력값 ['성인입니다.', '성인입니다.', '성인이 아닙니다.']

 

 


 

2. filter식

filter식?
- True인 것만 출력하기

 

students = [
    {'name': 'bo', 'age': 51},
    {'name': 'lee', 'age': 42},
    {'name': 'system', 'age': 18},
]

result = filter(lambda person: person['age'] > 20, students)
print(list(result))

# 출력값 [{'name': 'bo', 'age': 51}, {'name': 'lee', 'age': 42}]

 


 

3. 매개변수

매개변수 관련해서는 직접 쓰는 것보단
알고 있으면 내장함수 등을 사용할 때 라이브러리 등 도큐먼트를 읽는 데 도움이 됨

 

  • 함수에 인수를 넣을 때, 어떤 매개변수에 어떤 값을 넣을지 정해줄 수 있음 (순서 상관 없음)
def cal(a, b):
    return a + 2 * b

print(cal(3, 5))
print(cal(5, 3))
print(cal(a=3, b=5))
print(cal(b=5, a=3))

 

  • 특정 매개변수에 디폴트 값을 지정해줄 수 있음
def cal2(a, b=3):
    return a + 2 * b

print(cal2(4))
print(cal2(4, 2))
print(cal2(a=6))
print(cal2(a=1, b=7))

 

  • 입력값의 개수를 지정하지 않고 모두 받기
여러 개의 인수를 하나의 매개변수로 받을 때 관례적으로 args라는 이름을 사용
*arguments라는 뜻
def call_names(*args):
    for name in args:
        print(f'{name}야 밥먹어라~')

call_names('철수','영수','희재')

 

  • 키워드 인수를 여러 개 받기
def get_kwargs(**kwargs):
    print(kwargs)

get_kwargs(name='bob')
get_kwargs(name='john', age='27')

 


 

[내배캠 / 파이썬 기초] 06. 예외처리(try-except 문) / 파일 불러오기(from main_func import *) / 한 줄로 쓰기 / 클래스

 

[내배캠 / 파이썬 기초] 06. 예외처리(try-except 문) / 파일 불러오기(from main_func import *) / 한 줄로 쓰

목차 01. 예외처리 : try - except 문 02. 파일 불러오기 03. 한 줄로 쓰기 1. if문 - 삼항연산자 2. for문 04. 클래스 01. 예외처리 : try - except 문 try - except 문? - 요소값이 빠진 경우 등 에러가 발생할 상황에

boleesystem.tistory.com

 

목차

  01. 예외처리 : try - except 문

  02. 파일 불러오기

  03. 한 줄로 쓰기

  1. if문 - 삼항연산자
  2. for문

  04. 클래스


 

01. 예외처리 : try - except 문

try - except 문?
- 요소값이 빠진 경우 등 에러가 발생할 상황에서 예외처리를 해 에러를 넘기는 방법

 

  • name이 system인 경우 age값이 빠져있어 에러가 발생하는 상황
students = [
    {'name': 'bo', 'age': 51},
    {'name': 'lee', 'age': 42},
    {'name': 'system'}
]

for student in students:
        if student['age'] > 50:
            print (student['name'])

# 에러발생
# KeyError: 'age'

 

  • try - except문을 사용해 예외처리함으로써 에러를 넘길 수 있음
students = [
    {'name': 'bo', 'age': 51},
    {'name': 'lee', 'age': 42},
    {'name': 'system'}
]

for student in students:
    try:
        if student['age'] > 50:
            print (student['name'])
    except:
        name = student['name']
        print(f'{name} - 에러입니다')
        
# 출력값
# bo
# system - 에러입니다

 


 

02. 파일 불러오기

  • 복합한 함수를 담은 main_func.py 파일의 내용을 main_test.py 파일에서 가져다 사용할 수 있음

   1. main_test.py

from main_func import *

test1()		# 출력값 출력1

 

   2. main_func.py

def test1():
	print('출력1')
    
def test2():
    print('출력2')

 

 


 

03. 한 줄로 쓰기

1.  if문 - 삼항연산자

  • result = "짝수" if num%2 == 0 else "홀수"
num = 3

if num%2 == 0:
    result = "짝수"
else:
    result = "홀수"
    
# 한 줄로 쓰기
# result = "짝수" if num%2 == 0 else "홀수"

print(f"{num}은 {result}입니다.")

 


 

2. for문

  • b_list = [a*2 for a in a_list]
a_list  = [1, 3, 2, 5, 1, 2]

b_list = []
for a in a_list:
    b_list.append(a*2)
    
# 한 줄로 쓰기
# b_list = [a*2 for a in a_list]

print(b_list)

 


 

04. 클래스

  • 몬스터 게임으로 생각하면 몬스터수가 너무 많은 경우, 2번의 방법이 보다 관리하는 데 편하고 직관적임
  1. 몬스터의 HP를 중앙에서 리스트로 관리하는 것
  2. 아래의 그림과 같이 몬스터가 각각 HP를 가지고 있는 것 (객체지향적)

 

  • 클래스 예제
class Monster():
    hp = 100
    alive = True

    def damage(self, attack):
        self.hp = self.hp - attack
        if self.hp < 0:
            self.alive = False

    def status_check(self):
        if self.alive:
            print('살아있다')
        else:
            print('죽었다')

m = Monster()	# m은 인스턴스라고 함
m.damage(120)

m2 = Monster()
m2.damage(90)

m.status_check()
m2.status_check()

 


 

※ [출처] 이 게시글은 복습의 목적으로 작성하였습니다. 내일배움캠프 <파이썬 문법 기초(스파르타코딩클럽)> 강의 자료에서 발췌한 내용이 포함되어 있으니 자세한 내용은 꼭 해당 강의를 참고하셔서 학습 이해에 도움 받으시길 바라겠습니다.