rubus0304 님의 블로그

Python 강의요약 본문

Data Analyst/Weekly

Python 강의요약

rubus0304 2024. 10. 8. 10:05

크롬 다운로드 링크

https://www.google.com/intl/ko/chrome/

 

Chrome 웹브라우저

더욱 스마트해진 Google로 더 간편하고 안전하고 빠르게.

www.google.com

 

Python Community 다운로드 링크

 

https://download.jetbrains.com/python/pycharm-community-2020.2.5.exe?_ga=2.19665535.655376844.1694149084-313727398.1692623316&_gl=1*n81f45*_ga*MzEzNzI3Mzk4LjE2OTI2MjMzMTY.*_ga_9J976DJZ68*MTY5NDE0OTA4NC4yLjEuMTY5NDE1MTU1OC4wLjAuMA..

 

 

Python

윈도우 https://www.python.org/ftp/python/3.8.6/python-3.8.6-amd64.exe

 

 

 

Mac https://www.python.org/ftp/python/3.8.2/python-3.8.2-macosx10.9.pkg

 

 

 

 

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

Ctrl + S 저장

그 화면 위에 올려두고 hello 실행 (오른쪽 마우스) or Ctrl+Shift+ f10

 

 

변수선언과 자료형

연산

a=3

b=2

print(a+b)  + ctrl+shift+F10

ex) print (a-b)/ print (a*b)/ print (a/b) / 제곱 print(a**b) /

a//b # 3 (몫) a%b # 1 (나머지) a**b # 49 (거듭제곱)

 

참/거짓 a= True  /  False

a = (3==2)  3과 2는 같다  '==' 두 개 써야함.

print(a) = False

 

문자열 다루기

 

숫자와 문자는 더할 수 없음. 더하려면 숫자에도 ' ' 써야함.

a= '2' 

b= 'hello'

print(a+b) 

 

2hello 

 

a='2'

b='2'

print(a+b) 

 

22

 

a='2'

b=str(2)

print(a+b)

 

22

 

문자열 길이 구하기

text = 'abcdefghijk' 

result = len(text)

print (result)

 

모든 알파벳 대소문자 바꾸기 방법 오류남.

sentence.upper()

sentence.lower()

sentence = 'Python is FUN!'

sentence.upper()

문자열 자르기

1) 3까지만 자르기

text = 'abcdefghijk' 

result = text [ :3]

print(result)

 

2) D부터 짜르기

result = text [3:]

 

3) 복사

result = text [:] (그대로임)

 

4) 문자열 자르기

myemail = 'abc@sparta.com'
result = myemail.split('@')[1].split('.')[0]
print (result)

 

@ 기준으로 앞이 0, 뒤가 1

result[0] # test (리스트의 첫번째 요소)

result[1] # gmail.com (리스트의 두 번째 요소

 

특정문자를 다른 문자로 바꾸기

txt='서울시-마포구-망월동'
print(txt.replace('-', '>'))

 

인덱싱과 슬라이싱 도 안 됨

f="abcdefghijklmnopqrstuvwxyz"
f[4:15]

 

(실습) "sparta"의 앞의 3글자인 "spa"만 출력

text= "sparta"
result=text[:3]
print(result)

 

(실습) 전화번호의 지역번호 출력하기

phone = "02-123-1234"
result = phone.split('-')[0]
print(result)

 

 

값을 담는 방법

리스트  순서가 중요하게 값을 담는 법 (0번째는 ~)

딕셔너리  Key value 에 따라값을 담는 법 

 

 

 

 

-1 은 무조건 list에서 제일 마지막 친구가 출력.
길이구하기 len

 

내림차순

 

참 거짓 (5가 list에 있니?)

 

 

참 거짓 99가 리스트에 있니?

 

딕셔너리는 쓰는 순서는 상관없음// result 대신 rr 써도 됨 // 네임: 값 하면 네임 치면 값이 나옴

 

 

list와 조합

 

height 값 dic 추가하기

 

height가 dic에 있니? 있으면 TRUE
없으면 FALSE
list에 딕셔너리 넣기 & 출력방

 

print 안에는 콤마 없음. 그냥 바로 [ ] 타고 타고 들어감

-----

 

조건문

 

 

** 들여쓰기의 중요성

콜론 (:) 이 나오면, 들여쓰기 해야함

 

 

둘여쓰기 안 하면 5000 이상이라 false 여도 독립적으로 나옴 내용물이 안 됨.

 

 

if elif elif elif elif els

 

반복문

어떤 변수로 써도 출력됨.

 

 

?????

 

 

 

 

요소의 순서 i 로 넘버링
i로 추출해줄 수 있음

 

반복문 - 연습문제

 

Q. 리스트에서 짝수만 출력하는 함수 만들기

짝수만 출력하

 

Q. 리스트에서 짝수의 개수를 출력하기

count = 0 별명은 아무거나 써도됨.
count += 1 써도 됨.

 

 

Q. 리스트 안에 있는 모든 숫자 더하기

 

혼자 했을 때 저렇게 나오는데 저렇게 써도 되는건지 질문 

 

혼자 했을 때

 

정답 또는 sum += num

 

 

 

Q. 리스트 안에 있는 자연수 중 가장 큰 숫자 구하기

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]
max(num_list)
print(max(num_list))

혼자 했을 때

 

정답

 

함수

 

 

return 왜 하는거야.? 그 뒤에 값으로 돌아가면..?

return 왜 하는거야.? 그 뒤에 값으로 돌아가면..?

 

 

 

 

 

 

Q. 주민등록번호를 입력받아 성별을 출력하는 함수 만들기

 1) 주민등록번호 뒷번호 앞자리만 추출하기 ( - 뒤 )

 

2) 

 

num 을 int 를 씌워서 숫자로 만들어줘야 값이 나옴!!

 


 

< 심화 학습 >

 

list 복습

 

list 가운데 바꾸

 

튜플은 리스트랑 똑같이 생겼는데 불변형  튜플은 [ ]  대신 ( ) 

 

중간에 값 변경 못 함. 에러 뜸.(순서가 있는 자료인데 불변형이다)

 

튜플 예시  (people 내 딕셔너리  불변으로 저장)

 

 

집합 

집합은 중복을 제거해준다

 

교집합/ 합집합/ 차집합

 

(예시) 집합

 

교집합   질문...!! 하라는 대로 했는데 안 나옴

 

합집합  가운데 줄 뭐임..?  요거에요 하고 넘어감 ㅡㅡ;

 

 

차집합

 

 

f-string

score는 숫자이므로 str로 씌워서 문자로 바꿔준다!!

 

문자로 바꿀 땐 str ( )

숫자로 바꿀 땐 int ( )

 

F String 의 장점 간결함!!  print ( f '{   } ~ {  } 이다.')  끝.

 

 

 

예외처리 

try:  except:   구문  /// 왠만하면 안 쓰시길 추천 (남용하면 잘 이상해짐) 

 

bob age가 없을 경우

null 제거

 

내 화면은 에러 남 질문하기 

 

강의화면

 

내 화면은 에러... 질문하기

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(person['name'],'에러입니다')

 

 

파일 불러오기

★ python project1  - 마우스 오른족 클릭 - 새로 만들기 (New) - python 파일 만들기 -이름 저장  (2개 만들기) (main_test/ main func)

 

main func 에 함수들 만들어놓기

 

 

main_test 에서 main_func파일 내 함수 불러오기

from main_func impor * (전체) (95%)
say_hi_to 함수만 불러올 수 있음. 이때 say_hi() 함수도 쓰면 오류남!

 

 

한 줄의 마법

 

IF 문 으로 가즈아

원래 식

 

 

한 줄 마법 (직관적)
괄호가 없어도 됨

 

 

FOR 문 으로 가즈아

원래
FOR문으로 만들었을 때

 

 

map, filter, lambda식

 

 

 

 

lambda

 

 

filter

 

 

함수 심화 

 

라이브러리 코드 봤을 때 눈으로만 읽을 수 있을 정도만!

 

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')

 

 

지정을 해두면 순서를 안 맞춰도 됨

cal(a, b)

 

b 값을 기본저장해두면, 뒤에 b값을 안 넣으면 고정해둔 값으로 계산
b값 고정해뒀는데 뒤에서 b 자리에 넣으면 b 자리에 쓴 값으 계산
cal(*args) 인자들을 무제한으로 받는 것.

 

k wargs 키워드무제한

딕셔너리로 쓸 수 있게 만들어줌

def cal(**kwargs):

print(kwargs)

 

height 까지 추가 할 수 있음

 

 

클래스

 

방법 1 중앙에서 뱀1,2,3 등 HP관리 (중앙지향적)

방법 2 뱀 각각이 HP 관리 (객체지향적) 

 

damage를 받았는데 100보다 크면 alive를 false로 바꿔달

 

 

 

 

 

class 이름 monster 

인스턴스 m1