<파이썬 문법 기초 1-1> 변수, 자료형, 포맷팅

이용헌·2021년 12월 15일
0


학습 내용 요약

  1. 변수, 매개변수
  2. 자료형
  3. 포맷팅

1. 변수, 매개변수

1) 변수
변수는 값을 담는 박스이며, 값이 담긴 위치를 가리키는 것이다. 변수에는 숫자, 문자, Bool자료형, 배열 등 여러 값을 담을 수 있다. 숫자값은 사칙연산이 가능하고, 변수끼리 비교 연산도 가능하다. (단, 숫자와 문자처럼 일부는 대소를 비교할 수 없다.)

  • 코드 예시
a = 3.5
b = 4
c = 'practice'
d = 'k'
e = True
f = [1,3,6,3]

print(a+b) 	
print(a**b)	-> a의 b제곱
print(a//b)	-> a를 b로 나눈 몫
print(a%b)	-> a를 b로 나눈 나머지

print(a > b)
print(c == f)	-> 같은지 비교
print(d != e)	-> 다른지 비교
  • 문자열
    복수의 문자로 이뤄진 형태로 문자열끼리 '+'로 연결할 수 있다. 문자열에 다양한 함수를 쓸 수 있는데 아래 예시를 보자.

  • 코드 예시

first_name = 'yongheon'
last_name = 'lee'
print(first_name, last_name)	-> yongheon lee
print(first_name + last_name)	-> yongheonlee

text = 'abcdefghi'
result = len(text)		-> 문자열 길이
print(result)			-> 9

sentence = 'Python is Fun'
print(sentence.upper())		-> 전체 대문자
print(sentence.lower())		-> 전체 소문자

s = sentence.find('g')		-> 특정 문자 찾기
print(s)			-> 있으면 출력, 없으면 '-1' 출력

result = text[1]		-> 인덱싱(처음은 0)
print(result)			-> b
result = text[3:]		-> 슬라이싱(앞숫자 <= 출력 < 뒤숫자)
print(result)			-> defghi

myemail = 'qnpfr@daum.net'
result = myemail.split('@')	-> 특정 문자 기준으로 문자열 나누기
print(result)			-> ['qnpfr','daum.net']

txt = '부산시-사하구-하단동'
print(txt.replace('-','>'))	-> 특정 문자 다른 문자로 교체

2) 매개변수
함수를 만들 때, 함수에 전달하는 입력값을 담는 변수이다. 여기서 함수에 전달하는 입력값은 인수라고 한다.

  • 코드 예시
def cal(a,b=3):		-> a,b가 매개변수
    return a+b
    
print(cal(1,3))		-> 1,3이 인수

def cal(c,d):
	return c*d+2
    
print(cal(d=7,c=2))

위의 'b=3'처럼 매개변수에 기본값을 정해놓을 수도 있고, 매개변수별로 넣을 값을 지정할 수도 있다.

  • 변동매개변수, 키워드매개변수
    여러 인수를 받는 변수를 변동매개변수라고 하고, 키워드별로 인수를 받는 변수를 키워드매개변수라고 한다. 보통 각각 *args, **kwargs로 표현한다.

  • 코드 예시

def call_names(*args):
    for name in args:
        print('{}야 밥무라~'.format(name))

call_names('철수','영수','민수','준수')

def get_kw(**kwargs):
    print(kwargs)

get_kw(name='jung')
get_kw(name='bob',age=46,gender='M',height=187)

2. 자료형, 포맷팅

1) 자료형
파이썬에는 여러 자료형이 있다. 위에서 봤듯이 숫자, 문자, Bool 등이 있고, 이번에 볼 군집 자료형도 있다.

(1) 리스트
리스트는 순서O, 중복O, 변경O의 특징을 갖고 있고, 숫자, 문자(열), Bool, 리스트 등 원소를 복합적으로 동시에 넣을 수 있다.

  • 코드 예시
b_list = ['사과',2,True,['감','수박'],{'name':'hajin'}]
print(b_list[3][0])
  • 리스트에서 쓸 수 있는 함수는 아주 다양하다. 일부만 살펴보자.
c_list = [1,4,7,3,2]
c_list.append(8) 	-> 리스트에 원소 추가(마지막에 추가)
print(c_list)

c_list.insert(3,4)	-> 리스트에 원소 추가(앞숫자 위치에 뒤의 값 추가)
print(c_list)

result1 = c_list[-1]	-> 뒤에서 첫 번째 값
print(result1)
print(len(result1))	-> 리스트 길이 구하기

d_list = [86,51,8,6,48,18]
d_list.sort(reverse=True) -> 리스트 정렬(옵션:내림차순)
print(d_list)
result2 = 51 in d_list 	  -> 리스트 내 값 유무 확인
print(result2)

c_list.extend(d_list) 	  -> 리스트 확장(리스트끼리 합침)
print(c_list)

d = c_list.count(8)	  -> 원소 개수 세기
print(d)

c = c_list.index(4,1) 	  -> 원소 위치 번호 찾기(찾는 값,시작 위치)
print(c)

c_list.remove(4) 	  -> 특정 원소 제거
print(c_list)

c_list.pop(4) 		  -> 특정 위치의 원소 제거
print(c_list)

d_list.clear() 		  -> 모든 원소 제거
print(d_list)

f = d_list.copy() 	  -> 리스트 복사(주소값은 다름., 다른 값!)
print(f)

(2) 딕셔너리
key, value를 쌍으로 함께 담는 자료형이다. 순서X, 중복X(key), 변경O가 가능한 특징을 가지며, 순서가 없기 때문에 인덱싱이 불가능하다. 대신, key로 value를 찾을 수 있다.

  • 코드 예시
a_dict = {'name':'kaila', 'age':48}
result = a_dict['name'] 	 -> key로 value값을 찾음
print(result)

a_dict['friend'] = ['she','has'] -> 딕셔너리 추가
print(a_dict)
  • 리스트와 함께 조합해서 사용할 수도 있다. 그러면 원소를 쌍으로 저장하면서 리스트의 순서 특징을 살려 인덱싱도 이용할 수 있다.
  • 코드 예시
people = [{'name':'kim','age':8},
          {'name':'lee','age':48}]
print(people[1]['age'])

(3) 튜플
리스트와 비슷한 형태지만, 변경X의 특징이 다르다. 그래서 데이터를 변경할 일이 없을 때 이 자료형을 쓴다.

  • 코드 예시
a = (1,2,3)
a[0] = 99	-> 변경 불가능이므로 에러 발생

a_dict = [('bob',24),('carry',30),('smith',48)]
print(a_dict[1][1])

(4) 집합
순서X, 중복X, 변경O의 특징이 있는 자료형이다. 순서가 없으니 물론 인덱싱 및 슬라이싱은 불가능하다. 집합의 특성상 합집합, 교집합, 차집합의 연산이 가능하다.

  • 코드 예시
a = [1,2,2,2,4,4,4,6,7,4,3,2,5,1,1,3]
a_set = set(a)
print(a_set)			-> {1,2,3,4,5,6,7}

a_set = {'사과','배','귤','감','수박'}
b_set = {'사과','귤','포도','체리'}

print(a_set or b_set) 		-> '|', a.union(b)과 같은 의미
print(a_set & b_set) 		-> 'and', a.intersection(b)과 같은 의미
print(a_set.difference(b_set))  -> '-'과 같은 의미

2) 포맷팅
값을 출력할 때 특정 형식에 맞춰 출력하도록 만들 수도 있다. 그 작업을 포맷팅이라고 한다. 포맷팅을 하는 방식을 아주 다양하니 외울 수는 없고, 자주 쓰는 몇 가지만 눈에 익혀두면 좋겠다.

  • 코드 예시
scores = [{'name':'bob','score':70},
          {'name':'jim','score':80},
          {'name':'john','score':10}]

for student in scores:
    name = student['name']
    score = student['score']
    print('{0}은 {1}점입니다.'.format(name,score))
    print('%s는 %d점입니다.'%(name,score))
    print(f'{name}{score}점입니다.')

어렵거나 완전히 이해 못한 내용

솔직히 대충 어떤 것들이 있는지 아는 편이지만, 실제로 이를 활용하고 응용할 수 있는지 물어본다면 굉장히 미숙하다고 할 것이다. 아는게 다가 아니고, 어떻게 활용할 수 있는지 그리고 이를 얼마나 응용할 수 있는지가 남겨진 숙제다.

profile
세상에 기여하는 개발자가 되자

0개의 댓글

Powered by GraphCDN, the GraphQL CDN