목적

파이썬 기초 문법을 보면서 바로바로 찾아 볼 수 있게 정리하려고 한다
내가 쉽게 찾아 볼 수 있게 하는 것이 목적이라 자세한 설명은 생략한다

들여쓰기 ❗️

파이썬은 space랑 tab을 혼용해서 사용할수 없다....
참고로 tab = space*4랑 같다

주석

# 한줄 주석

'''
여러 줄 주석
'''

변수 선언

num = 1
str1 = "hello"

타입 변환 & 체크

intValue = int('1')
print(type(intValue)) #output: <class 'int'>

콘솔 입력&출력

value = input()
value = input("Input a value : ")
value = float(input())
print("Hello Python")
print("1+1=",2)

연산자

# 수식연산자
2 ** 5 == 32 # 제곱
10 // 3 == 3 # 나눗셈 몫
10 % 3 == 3.3333... # 나눗셈 나머지

# 논리 연산자
True and False == False
True or False == True

문자열

str1 = 'first'
str2 = "second"
str3 = """Hello   
World""" 
# """ 안에는 줄바꿈도 들어간다

"""
쌍따음표 세개는 특이하게 주석도 되고 String도 된다!
"""

str1[0] == 'f'
str1[0:3] == 'fir'
str1[0:-2] == 'fir'
str1[:4] == 'firs'

이스케이프 시퀀스

\\ # 백슬러시 \
\' 
# 작은따옴표 '
\"
# 큰 따옴표
\n # 엔터(개행)
\b # 백스페이스(글자하나 지움)
\t # 탭

문자열 포맷

name = "라이언"
greeting = "안녕하세요 %s입니다" %name
introduce = "%d 세이고 키는 %.1f cm입니다" %(100, 200)
percent = "100%%" # 100%

introduce2 = "{age} 세,{height} cm입니다".format(age=10,height=100.0)
greeting2 = "안녕하세요 {name:*>7}입니다".format(name=name)
introduce3 = "키는 {height:_^10.1f}입니다".format(height=191.124)
# :>10 = 10칸 중 오른쪽 정렬
# :^10 = 10칸 중 중간 정렬
# :<10 = 10칸 중 왼쪽 정렬

# f 포맷
greeting3 = f"안녕하세요 {name}입니다"

문자열 함수

기본적인 것만 넣었고 다른건 문서를 찾아보자

str1 = " helloWorld "
len(str1)    # 글자 총 개수 반환
str1.count('com')  # 인자의 문자열과 같은 문자 개수 반환
str2 = str1.strip()  # 문자열 양쪽 공백 제거한 문자열 반환
str2 = str1.lstrip()  # 왼쪽 공백제거한 문자열 반환
str2 = str1.rstript()   # 오른쪽 공백제거한 문자열 반환
print(str1.startswith(str2))  # 접두사로 붙어있는지 확인

# 문자열 복사 (정석은 없다)
copy = '%s'%str1
copy2 = str1[:-1]

리스트 (배열)

list1 = [1, 2, 3, 'sdf', ['a','b', True]]
list2 = [0,5]

print(list1[2:4])   # [3, 'sdf']
print(list1+list2)  # [1, 2, 3, 'sdf', ['a','b', True], 0, 5]
print(list*2)       # [0,5,0,5]
del list1[3:5]  # list == [1,2,3]

리스트 함수

_list = ['b','c','d','a']

_list.append('x') # 맨뒤에 넣기
_list.pop()   # 맨뒤에 빼기
_list.index('a')  # 요소의 인덱스 반환 (없으면 에러)
_ist.remove('a') # 같은 요소(첫번째 나오는) 삭제
_ist.extend(otherList) # 리스트에 다른 리스트 넣기
_list.sort()
_list.reverse()
_list.index('x')
_list.count('c')

딕셔너리

순서❌, key중복❌

dic = {'name':'lion', 'age':'1'}
dic2 = dict(name='lion',age=1)

dic['sex'] = 'male'  # 추가
del dic['name']
dic.clear()
dic.get('name') # 'lion'
'name' in dic # True

dic.items()  # [('name','lion),('age','1')]

튜플

튜플은 바꿀수 없는 immutable한 리스트이다.
❗️튜플 요소중 mutable한 요소가 있으면 그 요소안의 값은 변경가능 (ex List,Dictionary)

tup = (1,2,3,"hi",['a','b'])
sameTup = 1,2,3,"hi",['a','b']  # 소괄호 안넣어도 된다
oneTup = 1,   #  (1)   뒤에 컴마 넣어야 함

tup[0] = 10  # 불가능
tup[4][1] = 'c'  # 가능

집합

순서❌, 중복❌

greeting = "Hi man"
g0 = set(greeting)  # {'H','i',' ','m','a','n'}
g1 = set([1,2,3])   # {1, 2, 3}
# 리스트,딕셔너리,튜플 모두 적용가능

g0 & g1  # 교집합
g0 | g1  # 합집합
g0 - g1  # 차집합

g0.add('!')
g1.update([4, 5, 6])  # 여러개 값 추가
g0.remove(' ')

튜플은 한개의 원소로 사용가능하지만, 리스트나 딕셔너리는 사용불가능

반복문

i =1
while i <= 10 :
  print(i)
  i += 1

# for
for i in range(10):
  print(i)          # 1 2 3 4 5 6 7 8 9

for i in range(0, 10, 1) :
  print(i)          # 1 2 3 4 5 6 7 8 9

# 리스트
list1 = ['a','b','c']
for i in range(len(list1)) :
  print(list[i])    # a b c

for ch in list1 :
  print(ch)        #a b c 

# 딕셔너리
dic = {'A':'Kim', 'B':'Park'}
for key,val in dic.items() :
  print(key, val, end='/')  # print 함수 인자 end
                              # A Kim/Park B/

조건문

if i == 0 :
  print('zero')
elif i % 2 == 0 :
  print('even')
else :
  print('odd')

# 리스트, 튜플, 문자열
li = [1, 2, 3, 4, 'hello', 'bye']
if 4 in li :
  print('li has 4')
else :
  print('No 4')

함수

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

print(func(1,5))

가변인자

가변인자 는 몇개의 인자가 들어오던 리스트에 담아서 반환해준다

def func(*value) :
  print(value)        # [1,2,3,4,5,6]
  for i in value :
    print(i, end=', ')

func(1,2,3,4,5,6)    # output : 1, 2, 3, 4, 5, 6,

키워드 매개변수

키워드 매개변수 는 딕셔너리 형태로 인자를 받을 수 있다

def func(**dic) :
  print(dic)    # {'name':'Ryan', 'age':100 }

func(name='Ryan', age=100)

반환값

def numberList() :
  return 1,2,3,4

a,b,c,d = numberList()
nList = numberList()

print(a,b,c,d)        # 1 , 2 , 3 , 4
print(nList)        # [1,2,3,4]  자동으로 리스트로 변환

def returnFunc() :
  return
print(returnFunc())        # output : None

전역변수

파이썬에서 함수안에서 전역변수를 수정하려면 global 을 붙여야한다
아마 변수타입 선언이 없어서 구분하려고 그런거 같다

❗️보통 global 은 추천 안하는 듯 하다

num = 1
def func() :
  print(num)
  global num
  num = -1

func()
print(num)      # -1