* 파이썬은 들여쓰기로 내용물을 분류하기 때문에 줄맞춤 주의
- 변수 : 값을 담는 박스 / 값이 담긴 위치를 가리키는 것
- 데이터 값 종류
1) 정수
2) 실수
3) 문자열 (변수와 헷갈리지 않도록 따옴표로 감싸주기 필수)
4) 참거짓형 (명제가 참이면 결과값이 True, 거짓이면 False로 출력)
숫자를 문자열로 변환하는 방법
- 따옴표로 감싸주기
- str(숫자기입)
문자열 길이 구하는 방법
변수명 = "길이를구할문자를입력"
len(변수명)
결과값 10
문자열 자르는 방법
변수명[:3] → 1번째 요소부터 3번째 요소까지만 출력
변수명[3:] → 4번째 요소부터 끝까지 출력
변수명[2:5] → 2~5번째까지 출력
변수명.split('__')[0] → '__'기준으로 나눈 리스트에서 0번째 값
리스트
- 변수명 = [1, 2, 3, 4] 대괄호로 표현함
- 순서가 중요 (순서는 0부터 시작)
- 한 개의 리스트 안에서 숫자, 문자열, 참거짓형 혼합사용 가능
- 리스트 내에 리스트 중첩 사용 가능 → 하위 리스트 값을 가져오려면 ex) [1, 2, 3, [9, 0]] → [3][0] → 9
- .append(__) 리스트에 해당값 추가
- [-1] 맨 마지막 값 출력
- .sort() 정렬 올림차순
- .sort(reverse=True) 내림차순정렬
- (찾고자 하는 값 in 리스트명) → 결과값은 참/거짓으로 출력
딕셔너리
- 순서개념이 없음
- key:value
- 딕셔너리에 리스트 삽입 가능
- 딕셔너리에서 어떠한 값을 찾고싶을 때
('찾고자 하는 value에 해당하는 key값' in 딕셔너리 변수명) → 결과값은 참 거짓으로 출력
- 딕셔너리에 값 추가하기
변수명['추가하려는 key값'] = 해당 value값
- 하나의 리스트에 딕셔너리를 여러개 넣어 사용할 수 있음
- 예시) people[2]['score'] → people의 2번째 값의 'score'key의 value값을 가리킴
변수명 = {'key값':'value값', 'key값':'value값' }
변수명['key값']
결과값은 해당 key의 value값 출력
조건문
* ' : '로 조건설정 마무리
if 조건설정:
조건이 참일 때의 동작설정
elif 조건설정2:
조건설정2가 참일 때의 동작설정
else:
위 조건이 거짓일 때의 동작설정
반복문
- 리스트 요소를 하나씩 돌면서 출력
- 반복문(for) 기초 구조
변수명a = [ 1, 2, 3, 4, 5, 6 ]
for 변수명b in 변수명a:
print(변수명b)
for i, 변수명b in enumerate(변수명a):
변수명a = 변수명b['key1값']
변수명b = 변수명b['key2값']
print(i, 변수명a, 변수명b)
if i > 5:
break → 6이 5보다 크니까 6까지 나오고 멈춤
* i 는 요소의 순서 적어줌(순서는 0부터시작)
+= 1 → 1씩 더하기
조건에 맞는 요소를 하나씩 카운팅 하려면
카운팅할 변수를 우선 0으로 설정
변수명 = 0
for문으로 돌면서
if로 조건을 제시
변수명 += 1
print(변수명)
결과값으로 조건에 맞는 요소를 하나씩 카운팅해서 총합을 보여줌
변수명a = 0
for 변수명b in 리스트변수명:
변수명a += 변수명b → 변수명a = 변수명b + 변수명a → 변수명a를 변수명b 만큼 증가시켜라와 같은 의미
함수
같은 동작을 하는 것
def 함수명():
동작지정
함수명() → 함수 호출
결과값은 함수의 지정동작을 함
return 은 리턴 뒤에 값으로 변신
"3"이라는 문자를 숫자로 바꾸려면
int("3") 감싸주기
2주차 수업--------
a리스트 중 __번째 값 수정하기
a[__] = '바꾸고싶은 값'
튜플
- 리스트랑 똑같이 생겼는데 불변형 (데이터 수정 불가, 추가 불가)
[] 대신 ()사용
필요에 따라서
[{ : , : }, { : , : }] 대신
[( : , : ), ( : , : )] 사용 가능
집합
- set()
- 중복 값이 제거되서 출력
- 교집합(&) 합집합(|) 차집합(- 또는 a.difference(b))도 구할 수 있음
a = [1, 1, 2, 2, 3, 3]
a_set = set(a)
print(a_set)
결과값은 1, 2, 3
f-string
- 활용도 높음
- 문자열을 표현할 때 코드를 간단하게 쓸 수 있는 장점
- f를 앞에 입력하고 '문자열'을 입력하는 방식으로 쓰임
f'{변수명a}의 점수는 {변수명b}점입니다.'
예외처리
- try 안의 문장을 실행, 에러 발생 시에도 실행 중지하지 않고 except 안의 문장을 실행
- 에러 발생 시 그 자리에서 실행 중지하지 않고 계속 작동을 이어나감
- 서버 요청 시 서버에 문제가 있어도 큰 무리 없이 작동할 수 있도록 함
- 남용 시 작동은 하지만 뭔가 이상해지고 무슨 에러가 나는지 알 수 없음 (웬만하면 사용하지 않도록 주의)
for person in people:
try:
if person['age'] > 20:
print(person['name'])
except:
print((person['name']), '에러입니다')
실행결과
carry
ben
bobby 에러입니다
red
queen
파일 불러오기
from 파일이름 import *
- 파일 확장자명 입력X, 파일 이름만 입력
- 파일 전체를 가져올 때는 * 입력
- 파일 중 특정 함수만 가져올 때는 * 대신 함수명 입력
한줄로 줄여쓰기
if문 줄여쓰기
변수명 = (조건이 참일 때 결과 if 조건설정 else 조건이 거짓일 때 결과)
num = 3
result = ('짝수' if num % 2 == 0 else '홀수')
print(f'{num}은 {result}입니다')
실행결과
3은 홀수입니다
for문 줄여쓰기
변수명 = [실행동작 for 변수명a in 리스트명A]
리스트A 안에 있는 요소(a)를 하나씩 돌면서 그때마다 실행동작을 진행한 후 리스트로 묶음
a_list = [1, 3, 2, 5, 1, 2]
b_list = [a*2 for a in a_list]
print(b_list)
실행결과
[2, 6, 4, 10, 2, 4]
map
변수명a = map(함수명b, 리스트명c)
리스트c를 하나하나 돌면서 모든 원소를 함수b에 넣어라
lambda
- 주어진 조건에 부합하는 특정 값만 취하는 식
result = map(lambda x: x people)
people을 하나씩 돌면서 첫 번째 x에 넣음
x를 가지고 x(조건에 따라)로 리턴해라
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}
]
#def check_adult(person):
#return ('성인' if person['age'] > 20 else '청소년')
#result = map(check_adult, people)
#result = map(lambda x: x, people)
#result = map(lambda person: ('성인' if person['age'] > 20 else '청소년'), people)
result = filter(lambda x: x['age'] > 20, people)
print(list(result))
실행결과
[{'name': 'carry', 'age': 38}, {'name': 'ben', 'age': 27}, {'name': 'bobby', 'age': 57}, {'name': 'red', 'age': 32}, {'name': 'queen', 'age': 25}]
입력된 조건에 부합(True)하는 값만 출력 ( x['age'] > 20 )
함수의 매개변수
- 라이브러리를 가져다 쓰거나 라이브러리 코드를 이해할 때 필요한 개념
- a=1, b=2 처럼 값을 지정하면 입력 순서가 바뀌어도 동작에 아무런 영향을 미치지 않음
- 값을 지정하면 값을 넣지 않았을 때 기본값으로 설정할 수 있음
- *args 변수에 인자를 무제한 입력 가능, 그것을 리스트로 받아올 수 있음
- **kwargs 딕셔너리로 출력, 인자를 지정해서 많이 넣어줄 수 있음
class
- 객체지향적이다 :
물체에 관련된 속성을 해당 물체에 입력,
컨트롤 하는 함수를 생성해 연결하고
중앙에서는 그 함수만 불러와서 물체를 제어하는 것
- 함수 코드를 작성할 때
물체가 가진 변수를 사용하려면
변수 앞에 self.을 입력하여 명확히 지칭해야함
- 인스턴스 : 하나의 물체