멋사 AI SCOOL 6일차
: Python 기초
* Keywords
#연산자
#조건문
#반복문
* Today I Learned
5일차 summary
- 파이썬 문법: 컴퓨터의 CPU, RAM, SSD(HDD)를 활용
1. 변수선언: RAM 사용하는 방법
- 식별자규칙: 대소문자, 숫자, _만 사용 가능: 가장 앞에 숫자 X, 예약어 사용X, snake_case
- 식별자 1개, 데이터 1개: 식별자 n개, 데이터 n개: 식별자 n개, 데이터 1개
2. 데이터타입: RAM을 효율적으로 사용하는 방법
- 기본: int, float, bool, str: 동적 타이핑
- 컬렉션: list, tuple, dict, set: 식별자 1개, 데이터 n개
- CRUD
- create: list([]), tuple (()), dict({}), set(set())
- read: masking: data[]: [idx], [key], [start : end], [start : end : stride]
- update: 데이터 선택 = 수정할 데이터
- delete: del데이터 선택
- tuple을 사용하는 이유 : 같은 데이터를 저장할때 list보다 tuple이 저장공간 적게 사용
- 깊은복사(데이터복사), 얕은복사(주소값복사)
- 식별자의 속성을 출력하는 함수 : print(), type(), sys.getsizeof(), id()
- random.randint(), len(), input()
데이터 규모에 따른 스킬들
• 엑셀
- 사용 간편
- 데이터 100만개 정도 사용 가능
- 단) 만들어진 기능만 사용 가능, 속도가 느림(파이썬 몇초, 엑셀 몇분 걸리기도)
• 파이썬
- 파이썬 문법
- 데이터 RAM 용량만큼 사용 가능(RAM 크면 데이터 더 많이 다룰 수 있음)
- 기능 만들어서 사용 가능
- 속도 빠름
• 파이썬
- 가상메모리
- DASK
• 데이터베이스
- SQL문법
- 데이터SSD(HDD) 용량만큼
- 속도 빠름 (파이썬 보다)
• 빅데이터
- 여러개의 컴퓨터를 1대의 컴퓨터처럼 사용
- SPARK
- scala, python
3) 연산자
- 산술 : +, - < *, /, //, % < ** : 데이터(int,str,list) + 데이터 = 데이터
- 할당 : 식별자 <산술>= 데이터
- 비교 : ==, !=, >, <, >=, <= : 데이터 + 데이터 = 논리값
- 논리 : not, and, or : 논리값 + 논리값 = 논리값
- 멤버 : 특정 데이터가 컬렉션 데이터에 포함되었는지 확인 : 결과 논리값 출력
Quiz 1
# Quiz1
# 나이를 입력받아 연령대로 출력하는 코드 작성
age = 49
ages = age // 10 * 10
ages # 30
Quiz 2
#Quiz 2
#ATM 기기 코드 구현
#인출이 가능하면 True, 불가능하면 Fasle 출력
# 인출 금액을 입력 받아서 처리: input()
asset = 10000
draw = int(input())
asset >= draw
데이터타입의 형변환
: int(), float(), bool(), str(), list(), tuple(), dict()
비교연산자
==, !=, >, <, >=, <=
데이터 + 데이터 = 논리값
수식의 문법이 틀리면 Fasle, 맞으면 True 출력
논리연산자
논리값 + 논리값 = 논리값 : 논리값(데이터+데이터) + 논리값(데이터+데이터) = 논리값
비교연산자 : 조건1개, 논리연산자 : 조건2개이상
not, and(T: T and T = T), or(F: F or F = F)
우선순위 and > or > not
and 는 두개의 조건이 모두 True이여야 True
or 는 두개의 조건중 하나만 True이여도 True
멤버연산자
컬렉션 데이터에서 특정 데이터가 있는 확인 : 결과 논리값
in, not in
4) 조건문
- if / elif / else
Quiz 3
#Quiz 점수를 입력받아 학점 출력하는 코드 작성
score = int(input('점수를 입력하시오: '))
if score >= 90:
print('A')
elif score >= 80:
print('B')
elif score >= 70:
print('C')
elif score >= 60:
print('D')
else:
print('F')
print('END')
# 1. 계좌생성 : account : 10000
account = 10000
# 2. 입금, 출금 입력 : 입금(0), 출금(1) : command 변수에 저장
command = int(input('입금(0), 출금(1)을 입력하세요 : '))
# 3. 금액입력 : money 변수에 저장
money = int(input('금액을 입력하세요 : '))
# 4. 입금인 경우
if command == 0:
# 4-1. 입력받은 금액을 계좌에 추가
account += money
# 5. 출금인 경우
else:
# 5-1. 잔액이 부족한 경우 : 'xx의 잔액이 부족합니다.' 출력
if account < money:
print(f'{money - account}의 잔액이 부족합니다.')
# 5-2. 잔액이 충분한 경우 : 'xx의 잔액이 출금되었습니다.' 출력
else:
account -= money
print(f'{money}의 잔액이 출금되었습니다.')
# 6. 계좌 잔액 출력 : 'xx의 잔액이 남았습니다.' 출력
print(f'{account}의 잔액이 남았습니다.')
5) 반복문
while
- 무한루프에 빠지지 않도록 조심
- 런타입 -> 실행 중단
range()
- 리스트 만들어주는 함수
week = list('일월화수목금토')
for day in week:
if (day == '일') or (day == '토'):
print(day, '주말', '쉬기')
else:
print(day, '주중', '학교')
일 주말 쉬기
월 주중 학교
화 주중 학교
수 주중 학교
목 주중 학교
금 주중 학교
토 주말 쉬기
Quiz 4
#Quiz
# 30세 이상의 사용자 목록 출력
users = ['홍길동(32)', '김파이썬(27)', '정노트북(43)']
for user in users:
#print(user, int(user[-3:-1]))
if int(user[-3:-1]) >= 30:
print(user)
홍길동(32)
정노트북(43)
랜덤한 숫자 먼저 맞추기 게임
1. 0~9 까지 랜덤한 숫자 생성
2. 숫자를 입력한 횟수 카운팅하는 변수 선언
3. 숫자 입력 받음
4. 카운팅 +1 추가
5. 랜덤한 숫자와 입력받은 숫자가 같은지 확인
6. 같으면 카운팅 횟수 출력 -> 게임 종료
7. 다르면 다시 숫자 입력
import random
random_number = random.randint(0,10)
count = 0
while True:
input_number = int(input('insert number(0~9): '))
count = count+1
if random_number == input_number:
print(f'count: {count}')
break
enummerate()
- 반복문에서 리스트 데이터에 idx 숫자를 출력할 때 사용
list(enumerate(users))
for user in enumerate(users):
print(user)
(0, '홍길동(32)')
(1, '김파이썬(27)')
(2, '정노트북(43)')
zip()
- 같은 인덱스의 데이터기리 튜플로 묶어서 리스트로 출력
players = ['손흥민', '메시', '호날두']
goals = [30, 20, 10]
list(zip(players, goals))
[('손흥민', 30), ('메시', 20), ('호날두', 10)]
Conditional Probability : 조건부 확률
- 사건 A가 발생했다는 조건에 사건 B가 발생할 확률
- 사건 A가 발생했을때 사건 B의 조건부 확률
* Homework
Quiz 1. 년도를 입력받아 윤년이면 True, 아니면 False 출력하는 코드 작성
4년에 한번씩 윤년 O
100년에 한번씩 윤년 X
400년에 한번씩 윤년 O
year = 2008 True
year = 1900 False
year = 2000 True
year = int(input('년도를 입력하시오: '))
if year % 4 == 0:
if year % 400 == 0:
print('True')
elif year % 100 == 0 :
print('False')
print('True')
# Quiz 1. 년도를 입력받아 윤년이면 True, 아니면 False 출력하는 코드 작성
# 4년에 한번씩 윤년 O
# 100년에 한번씩 윤년 X
# 400년에 한번씩 윤년 O
#year = 2008 # True
#year = 1900 # False
#year = 2000 # True
year = 2008
(year % 4 == 0) and (year % 100 != 0) or (year%400 == 0)
년도를 입력하시오: 2008
True
Quiz 2. fizzbuzz
3의 배수 : fizz, 5의배수 : buzz, 3과 5의 배수 : fizzbuzz 출력
위의 조건에 해당하지 않으면 data 출력
# Quiz 2. fizzbuzz
# 3의 배수 : fizz, 5의배수 : buzz, 3과 5의 배수 : fizzbuzz 출력
# 위의 조건에 해당하지 않으면 data 출력
data = int(input('숫자를 입력하시오.: '))
if (data % 3 == 0) and (data % 5 == 0):
print('fizzbuzz')
elif data % 3 == 0 :
print('fizz')
elif data % 5 == 0:
print('buzz')
else :
print('data')
숫자를 입력하시오.: 17
data
Quiz 3. left shift
data = 'abcde'
shift = 3
deabc
data = 'abcde'
shift = int(input('숫자를 입력하시오.: '))
del_data = data[0 : shift]
for data_list in data :
if del_data in data:
data = data.strip(del_data)
print(data + del_data)
얘는 5까지는 가능하지만 그 뒤는 X
data = 'abcde'
shift = int(input())
shift = shift %len(data) #while문 적게 실행 가능
while shift:
shift = shift -1
data = data [1:] + data[0] #while 한번 실행 될 때마다 맨 앞에 맨 뒤로
data
다 알고 보면... 안 어려운데
* Reference
숙제 Quiz 3와 연관되어 있다고 팀원이 보내 준 문제
https://school.programmers.co.kr/learn/courses/30/lessons/120921?language=kotlin
* Retrospective
😍 Liked
: if 문 다시 훑어볼 수 있어서 좋았음
그리고 적절한 문제랑 숙제가 도움이 되었음
특히 반복문!!
📚 Learned
: 조건문, 반복문
💦 Lacked
: 오늘 피곤해서 중간에 너무 졸렸음
백준 문제(알고리즘) 풀어봐야겠음 -> if문 반복문에 너무 약함...
수학 지식이 매우 없음...
🙏 Longed for
: 아마 내일부터는 모르는 내용도 나올 수 있을 것 같음
모든 부분 집중해서 공부 !
'AI SCHOOL > TIL' 카테고리의 다른 글
[TIL] 멋사 AI SCOOL DAY 8 - 파이썬 함수, 상관계수 (0) | 2023.01.05 |
---|---|
[TIL] 멋사 AI SCOOL DAY 7 - 파이썬 함수 (0) | 2023.01.04 |
[TIL] 멋사 AI SCOOL DAY 5 - 프로그래밍 개요, 변수 선언, 데이터 타입 (0) | 2023.01.02 |
[week 1] 공공 데이터 분석 (2) | 2022.12.23 |
[Week 1] WIL (0) | 2022.12.23 |