AI SCHOOL/TIL

[TIL] 멋사 AI SCOOL DAY 6 - 연산자, 조건문, 반복문

moru_xz 2023. 1. 3. 17:16

멋사 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 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


* Retrospective

😍 Liked
: if 문 다시 훑어볼 수 있어서 좋았음 

그리고 적절한 문제랑 숙제가 도움이 되었음 

특히 반복문!!


📚 Learned
: 조건문, 반복문

💦 Lacked
:  오늘 피곤해서 중간에 너무 졸렸음 

백준 문제(알고리즘) 풀어봐야겠음 -> if문 반복문에 너무 약함...

수학 지식이 매우 없음...  

🙏 Longed for
: 아마 내일부터는 모르는 내용도 나올 수 있을 것 같음 

모든 부분 집중해서 공부 !