본문 바로가기
📙 파이썬 공부

[파이썬] 파이썬 문법 기초

by 따따시 2022. 11. 8.

> 파이썬 설치?

일종의 번역팩을 설치했다고 생각하면 된다.

컴퓨터는 1010과 같은 신호만 인식하니, 인간의 언어와 비슷한 프로그래밍 언어로 명령을 내리면 그것을 컴퓨터 언어로 번역해주는것

 

데이터 분석, 머신러닝 쪽에 파이썬을 많이 이용한다고 한다.



venv 혹시 없으면 추가로 이렇게 만들어주라고 하심




> a의 b승

-> a ** b

ex) 2의 3승 : 2**3



> 나머지 연산자(%)

쓰는 경우 : 동등하게 3가지로 나누어줄떄(ex. 나머지가 0일때 1일때 2일때 ) / 짝수홀수 나눠주거나



> true / false

a = (3 == 2 )

print(a)

#결과값은 false



> 변수 : 값이 담긴 위치를 가리키는 것 / 컴퓨터가 데이터를 저장하고 있는 저장소를 ‘변수'가 가리키고 있다 라고 생각하기





>문자열

a = ‘dakyung’

b = ‘hong’

print(a+b)

#결과값 : dakyunghong



> 에러 코드

a = 2

b = ‘2’

print(a+b)

→ 이렇게 하면 에러가 뜬다. (숫자와 문자를 더하는게 무슨뜻이야? 하고 에러가뜸)

 

Traceback (most recent call last):

  File "/Users/hongdakyung/Desktop/sparta/sparta_python/hello.py", line 5, in <module>

    print(a+b)

TypeError: unsupported operand type(s) for +: 'int' and 'str'

 

> 숫자를 문자로 바꾸는 방법

a = ‘2’

b = str(2)

print(a+b)

→결과값 : 22

 

 str(2) 라고 하면, 2가 문자열로 바뀐다.



> 문자열의 길이 세기

 

text = ‘abcdefghijk’

result = len(text)

print 

→결과값: 11
















> 문자열 자르기(앞에서부터 자르기)

text = ‘abcdefghijk’

result = text[:3]

print 

→결과값: abc



> 문자열 자르기 (n개 뒤에서부터 자르기)

text = ‘abcdefghijk’

result = text[3:]

print 

→결과값: defghijk

 

> 문자열 자르기 (특정 부분 자르기)

text = ‘abcdefghijk’

result = text[3:8]

print 

→결과값: defgh



> 문자열 쪼개기

myemail = ‘abc@sparta.co

result = myemail.split(‘a’)

→결과값 : abc’,’sparta.co’

 

> 문자열 쪼개고 특정 토막 얻기(1)

myemail = ‘abc@sparta.co

result = myemail.split(‘a’)[1]

→ 결과값 : ’sparta.co

 

> 문자열 쪼개고 특정 토막 얻기(2)

myemail = ‘abc@sparta.co

result = myemail.split(‘a’)[1].split(‘.’)[0]

→ 결과값 : ’sparta’’














> 리스트

 

리스트&딕셔너리 둘 다 값을 담는 방법

리스트는 순서가 중요하게 값을 담는 것

 

—-------------

a_list = ['사과','배','감']

print(a_list)

print(a_list[0])  #결과값 : 사과

—-------------

 

이런식으로도 담을 수 있음

b_list = ['사과',2,false]



리스트도 담을 수 있음 ㄷㄷ

c_list = ['배',2,False,[‘사과',’감']]

 

→ 내가 ‘감'을 가져오고 싶으면?

print(c_list[3][1])



> 리스트 요소에 추가하기

 

a_list = [1,5,6,3,2]

a_list.append(99)

print(a_list)



> 리스트 제일 마지막 친구 출력하기

a_list =[1,5,6,3,2]

result = a_list[-1]

print(result)

 

> 제일 마지막 친구 출력하기(문자열도 됨요)

text = 'abcdefg'

result = text[-1]

print(result)

 

> 리스트를 오름차순으로 정렬

a_list = [1,5,6,3,2]

a_list.sort()

print(a_list)

→ 결과값 : 1,2,3,5,6

 

> 리스트를 내림차순으로 정렬

a_list = [1,5,6,3,2]

a_list.sort(reverse=True)

print(a_list)

→ 결과값 : 6,5,3,2,1

> 내가 원하는 값이 있는지 없는지 확인

 a_list = [1,5,6,3,2]

result = (5 in a_list)

print(result)

→ 결과값 : 5가 있으면 true, 없으면 false

—----------------------------------------------------------------------------------------------

 

> 딕셔너리

key:value (ex. 이름 : ‘홍다경' )

 

ex)

a_dict = { ‘name’ : ‘bob’, ‘age’ : 27 }



> 딕셔너리 내부에 리스트 저장도 가능

a_dict = { 'name' : 'bob', 'age' : 27 , 'friend':['영희','철수']}

print(a_dict['friend'])

→ 결과값 : [‘영희',’철수']

 

print(a_dict['friend'][1])

→ 결과값 : 철수




> 딕셔너리 내용 추가하기

a_dict = { 'name' : 'bob', 'age' : 27 , 'friend':['영희','철수']}

a_dict['height']=180

print(a_dict)

→ 결과값 : {'name': 'bob', 'age': 27, 'friend': ['영희', '철수'], 'height': 180}



> 딕셔너리 내부에 특정값 있는지 확인

a_dict = { 'name' : 'bob', 'age' : 27 , 'friend':['영희','철수']}

 

a_dict['height']=180

result = 'height' in a_dict

print(result)



1-5) 퀴즈문제

people = [

   {'name': 'bob', 'age': 20, 'score':{'math':90,'science':70}},

   {'name': 'carry', 'age': 38, 'score':{'math':40,'science':72}},

   {'name': 'smith', 'age': 28, 'score':{'math':80,'science':90}},

   {'name': 'john', 'age': 34, 'score':{'math':75,'science':100}}

]



result = people[2]['score']['science']

print(result)

> 조건문

 

money = 5000

if money > 3800:

print(‘택시를 타자!’)




money = 3000

# '들여쓰기'를 해야 그 내용물이 되는 것

if money > 3800:

   print('택시를 타장!')

else:

   print('택시를 못타~')

   print('그럼 뭘 타지??')

—----------------------------

money = 3000

# 이렇게 하면 print(그럼뭘타지)는 else의 내용물이 아니다.

if money > 3800:

   print('택시를 타장!')

else:

   print('택시를 못타~')

 

print('그럼 뭘 타지??')

 

—------------------------------------

 

money = 2000

 

# '들여쓰기'를 해야 그 내용물이 되는 것

if money > 3800:

   print('택시를 타장!')

 

# 3880보다 큰건 아니지만, 1200보다 크면

elif money > 1200:

   print('버스를 타자')

 

else:

   print('택시를 못타~')

—--------------------------------------

 

> 반복문

 

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:

   name = person['name']

   age1 = person['age']

   #print(name,age1)

 

   if age1 > 20:

       print(name,age1)

 

—--------------------

 

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}

]

 

# i, enumerate : 순서를 정해주는 것

for i, person in enumerate(people):

   name = person['name']

   age1 = person['age']

   print(i,name,age1)

# 순서 i가 3보다 크면 이제 그만 돌아

# 근데 4까지는 찍히네?

   if i > 3:

       break

 

—------------------------------------



1-8 퀴즈

 

내가 짠 코드)

 

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

 

for num in num_list:

   if num%2 == 0:

       jjacksu=num

       print(jjacksu)



쌤 코드

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

 

for num in num_list:

   if num%2 == 0:

       print(num)



—------------------------

 

#리스트에서 짝수의 개수 출력하기

 

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

 

for num in num_list:

 

   if num % 2 == 0:

       jjascksu=str(num)

—------------------------

 

count = 0

for num in num_list:

   if num % 2 == 0:

       count=count+1

print(count)




>> count = count +1 을 더 간단하게 쓰면, count += 1

 

—------------------------

# 최댓값 뽑아내기

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

 

max_num=0

for num in num_list:

   if max_num < num:

       max_num=num

 

print(max_num)



> 함수

프로그래밍의 함수는 반드시 입력값이나 출력값이 있어야하는건 아니다. 

 

def sum(a,b):

   return a+b



result=sum(3,3)

print(result)

 

—------------------

 

def bus_rate(age):

   if age > 65:

       return 0

   elif age > 20:

       return 1200

   else:

       return 800

 

result = bus_rate(15)

print(result)

 

—------------------

 

#여자면 '여자라능' , 남자면 '남자라능'

def check_gender(pin):

   gender = pin.split('-')[1][:1]

   jjingender = int(gender)

   print(jjingender)

 

   if jjingender == 2:

       print('여자라능')

   else:

       print('남자라능')

 

check_gender('999999-2000000')

check_gender('999999-1000000')

 

<2주차 수업>

 

> 튜플 : 리스트와 똑같지만 ‘불변형'임

 

a = ['사과','감','배']

 

# a의 1번째(감)를 '수박'으로 바꾼 것

a[1] = '수박'

print(a)

 

—-------------------

 

people = [{‘name’:’홍길동',’age’:20},{‘name’:’김철수',’age’:30}]

 

→ 튜플형이면?

people = [(‘홍길동',20),(‘김철수’,30)]

 

—---------------------

 

> 집합

 

a=[1,2,3,4,6,4,3,2,1,3,5,6]

a_set = set(a)

print(a_set)

 

→ 결과값 : 중복이 제거되어서 나옴

 

> 집합(교집합)& 집합(합집합)

 

a = [ 1,2,3,4,5,6,7]

b= [3,4,5,6,7,8,9,10]

 

a_set = set(a)

b_set = set(b)

 

#교집합

print(a_set & b_set)

 

#합집합

print(a_set | b_set)

 

#차집합

#차집합 구하기

student_a = ['물리2','국어','수학1','음악','화학1','화학2','체육']

student_b = ['물리1','수학1','미술','화학2','체육']

 

set_a = set(student_a)

set_b = set(student_b)

 

print(set_a-set_b)

 

—---------------------------------

 

> f-string : f’{변수명}’

 

scores = [

   {'name':'영수','score':70},

   {'name':'영희','score':65},

   {'name':'기찬','score':75},

   {'name':'희수','score':23},

   {'name':'서경','score':99},

   {'name':'미주','score':100},

   {'name':'병태','score':32}

]

 

for s in scores:

   name = s['name']

   score = s['score']

   # score = int(s['score']) 라고 해도 상관없다.

   print(name+'의 점수는'+str(score )+'입니다')

   #f-string 의 위력!!!!! (앞에 f를 써주고 '' 안에 중괄호{}로 변수만 넣어주면 된다.

   print(f'{name}의 점수는 {score}점입니다. ')

 

—------------------------------













> 예외처리 (try / except)

 

people = [

   {'name': 'bob', 'age': 20},

   {'name': 'carry', 'age': 38},

   {'name': 'john', 'age': 7},

   {'name': 'smith', 'age': 17},

   {'name': 'ben', 'age': 27},

   {'name': 'bobby'},

   {'name': 'red', 'age': 32},

   {'name': 'queen', 'age': 25}

]

 

for person in people:

   try:

       if person['age'] > 20:

           print(person['name'])

   except:

       print(print['name'],'에러입니다')

 

근데 이거 남용하지 말라고 하심, 돌아는 가는데 무슨 에러가 나는지 모른다고 하심

 

—-------------------------

 

> 파일 불러오기





 > 한줄의 마법

  • if문 : 삼항연산자

num = 3

 

if num % 2 == 0

   result = '짝수'

else:

   result = '홀수'

 

#짝수라고 해라 만약 나머지가 0이면, 그게 아니면 홀수라고 해라

result = ('짝수' if num%2 == 0 else '홀수')

#괄호 없어도 되긴하지만, 헷갈리니 괄호는 써주는걸로! 

 

print(f'{num}{result}입니다')

 

  • for문

 

 

a_list = [1,3,2,5,1,2]

 

#빈걸 하나 만들어놓고

b_list = []

for a in a_list:

   b_list.append(a*2) #b_list에다가 x2 한 것을 추가한다.

print(b_list)



# a_list의 a를 돌리는데, 그때마다 2를 곱해라, 걔네들을 다 [] 리스트로 묶어라

b_list = [a*2 for a in a_list]














> map, filter, lamda식 




> map



—---------------------------------------------------------------------

 

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}

]

 

def check_adult(PeopleDict):

   if PeopleDict['age']>20:

       return '성인'

   else:

       return '청소년'

 

return ‘성인' if PeopleDict[‘age’] > 20 else ‘청소년’

#한줄코딩으로 바꾸기

 

# map : people을 하나하나 돌며, check_adult에다가 넣어라

result = map(check_adult,people)

 

print(list(result))

# print(result) 라고 하면, Result가 아직 map 인 상태임

# 그래서 이걸 list로 감싸주어야 함




—---------------------------------------------------------------------









> 람다식 추가하기 

 

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}

]

 

def check_adult(PeopleDict):

   # if PeopleDict['age']>20:

   #     return '성인'

   # else:

   #     return '청소년'

 

   return ('성인' if PeopleDict['age'] > 20 else '청소년')

 

# map : people을 하나하나 돌며, check_adult에다가 넣어라

result = map(check_adult,people)

 

#람다식

#people을 하나씩 돌면서, PeopleDict에다가 넣을건데, 그 PeopleDict를

# ('성인' if PeopleDict['age'] > 20 else '청소년') 이런 조건으로 리턴해라

#람다식 쓰는 이유 : 한 줄 짜리 함수를 굳이 함수까지 쓰냐

result = map(lambda PeopleDict: ('성인' if PeopleDict['age'] > 20 else '청소년'), people)



print(list(result))

# print(result) 라고 하면, Result가 아직 map 인 상태임

# 그래서 이걸 list로 감싸주어야 함

--------------------------------------------------------------












> filter 

  • map과 아주 유사한데, True인것들만 뽑아오기

 

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}

]

 

#filter

#people 리스트에서 하나하나 뽑아 person을 만드는데, person 중에서 age가 20 이상인 것만 추출해라

result = filter(lambda person: person['age']>20, people)

print(list(result))

 

—-----------------------------------------------------

 

> 함수 심화

 

def cal(a,b=2):

return a+2*b

 

result = cal(1)

print(result)

 

→ b를 안넣었지만, b는 2를 넣었다고 생각 (b의 디폴트값이 2가 되는것)

→ result = cal(1,3)이라고 하면 내가 넣어준 값 b=3을 실행해준다.

 

—-------------------------------------------------------









> args

 

def cal(*args):

*args를 넣으면 변수를 무제한으로 넣을 수가 있음. 그것을 리스트로 받아서 써먹을 수 있음

 

def cal(*args):

for name in args:

print(f’{name} 밥먹어라')

cal (‘영희',’철수’,’개똥’,’영수’)

 

—----------------------------------------------------

 

> kwargs

def cal(**kwargs):

print(kwargs)

 

cal(name=’bob’,age=30,height=190)

—-----------------------------------------------------------------

 

> 클래스

 

class monster():

   hp = 100

   alive = True

 

   def damage(self, attack):

       #self : 내 hp를 가리킴 (hp=100)

       self.hp=self.hp-attack

       if self.hp <0:

           self.alive= False



   def status_check(self):

       if self.alive == True:

           print('살았다')

       else:

           print('죽었다')

 

# m1은 '인스턴스'라고 한다. (몬스터 한 마리 생각)

 

m1 = monster()

m1.damage(150)

m1.status_check()

 

m2 = monster()

m2.damage(90)

m2.status_check()







댓글