[제로베이스 데이터 취업 스쿨 15기] 1주차 (Python 기초/문제풀이)

김지환·2023년 5월 3일
0
post-thumbnail

1주차: 5/3/2023 - 5/7/2023


Preliminary


Python 설치

  • Add to PATH: to run Python from cmd

Python IDLE Shell

  • 간단한 코드 작성

Python Editor

  • 복잡한 코드 작성

PyCharm

  • 실행: Ctrl + Shift + F10

Variable


  • 데이터가 저장되어 있는 메모리 공간

  • 변수 선언 및 초기화

  • 데이터 재사용

변수명

  • 영문
  • 첫번째 소문자
  • 데이터 의미
  • 카멜: customerBankAccount
  • 스네이크: customer_bank_account
  • 예약어 금지
  • 특수문자 금지
  • 공백문자 금지
  • 첫번째 숫자 금지

Data type


  • 정수: int
    - 무한 사용 가능
  • 실수: float
    - 데이터 손실
  • 문자: str
  • 논리형: bool
  • Type casting
var = str(var)
var = int(var)
var = float(var)
var = bool(var)
확인: type(var)
  • Empty string ('')
  • Whitespace (' ')
  • isdigit(): True if number, False o/w

Data input


userInputData = input('Input: ')
print(userInputData)

userInputData = int(input('Input an integer: ')
print(userInputData)

Data output


  • 연속 출력
  • F-string
  • 탭: \t
  • newline: \n
  • format() 함수
  • format() 함수 인덱스
  • Format character
  • 소수점 자리
    print('Pi: %.2f' % 3.141592)
  • 자동 개행 금지
    print('3 * 5 = ', end = '')
    print(3 * 5)

Operator


산술 연산자

  • +, -, *, /, %(remainder), //(quotient), **(power)

할당 연산자

  • =, +=, -=, *=, /=, %=, //=

비교 연산자

  • >, >=, <, <=, ==, !=

논리 연산자

  • and, or, not

Operator module


Conditional expression



If-statement


  • : after if, elif, else
  • pass: tbd
  • code block

Iteration


  • : after for, while
  • pass: tbd
  • continue: next iteration
  • break: stop iteration
  • code block
  • for loop: 횟수에 의한 반복
for i in range(0, 7, 2): # 0, 2, 4, 6
	print('i -> {}'.format(i)
for i in range(100): # 0 - 99
	print('i -> {}'.format(i)
  • while loop: 조건에 의한 반복
num = 0
while num < 10:
	print('num -> {}'.format(num))
	num += 1
  • flag = True
  • Nested iteration

Date


import datetime
today = datetime.datetime.today()
print(today.year)
print(today.month)

String length/character position


len(string)
article = 'Hello Hi How are you'
strIdx = article.find('Hi')
print('Hi 위치: {}'.format(strIdx))

str[0]: 첫번째 문자


Exercises


  • Bread and milk
bread = 197
milk = 152
studentCount = 17

print('Number of bread per student: {}'.format(bread // studentCount))
print('Number of milk per studnet: {}'.format(milk // studentCount))

print('Remaining bread: {}'.format(bread % studentCount))
print('Remaining milk: {}'.format(milk % studentCount))
  • Vaccine
inputAge = int(input('Age: '))

if inputAge <= 19 or inputAge >= 65:
    endNum = int(input('Last digit of birth year: '))
    if endNum == 1 or endNum == 6:
        print('Monday!')
    elif endNum == 2 or endNum == 7:
        print('Tuesday!')
    elif endNum == 3 or endNum == 8:
        print('Wednesday!')
    elif endNum == 4 or endNum == 9:
        print('Thursday!')
    elif endNum == 5 or endNum == 0:
        print('Friday!')
else:
    print('TBD')
  • Speed limit
carSpeed = int(input('Speed: '))
limitSpeed = 50

if carSpeed > limitSpeed:
    print('Keep to the speed limit!! KRW 50,000 fine!!!')
else:
    print('Keep to the speed limit!!')
  • Rock, paper, scissors
import random

comNumber = random.randint(1, 3)
userNumber = int(input('Rock, Paper, Scissors: Choose 1. Rock \t 2. Paper \t 3. Scissors '))

if (comNumber == 1 and userNumber == 2)\
        or (comNumber == 2 and userNumber == 3)\
        or (comNumber == 3 and userNumber == 1):
    print('Computer loses, User wins')
elif comNumber == userNumber:
    print('Draw')
else:
    print('Computer wins, User loses')

print('Computer: {}, User: {}'.format(comNumber, userNumber))
  • Bus times (least common multiple)
busA = 15
busB = 13
busC = 8

totalMin = 60 * 17
for i in range(totalMin + 1):
    if i < 20 or i > (totalMin - 60):
        if i % busA == 0 and i % busB == 0:
            print('busA와 busB arrive at the same time!!', end='')
            hour = 6 + i // 60
            min = i % 60
            print('\t {}:{}'.format(hour, min))
    else:
        if i % busA == 0 and i % busB == 0:
            print('busA와 busB arrive at the same time!!', end='')
            hour = 6 + i // 60
            min = i % 60
            print('\t {}:{}'.format(hour, min))
        elif i % busA == 0 and i % busC == 0:
            print('busA와 busC arrive at the same time!!', end='')
            hour = 6 + i // 60
            min = i % 60
            print('\t {}:{}'.format(hour, min))
        elif i % busB == 0 and i % busC == 0:
            print('busB와 busC arrive at the same time!!', end='')
            hour = 6 + i // 60
            min = i % 60
            print('\t {}:{}'.format(hour, min))
  • Gears
gearATCnt = int(input('Number of teeth of GearA: '))
gearBTCnt = int(input('Number of teeth of GearB: '))

gearA = 0
gearB = 0
leastNum = 0

flag = True
while flag:

    if gearA != 0:
        if gearA != leastNum:
            gearA += gearATCnt
        else:
            flag = False
    else:
        gearA += gearATCnt

    if gearB != 0 and gearB % gearATCnt == 0:
        leastNum = gearB
    else:
        gearB += gearBTCnt

print('Initial teeth of GearA and GearB meet again after (least common multiple): {} teeth'.format(leastNum))
print('Number of rotations of GearA: {}'.format(int(leastNum / gearATCnt)))
print('Number of rotations of GearB: {}'.format(int(leastNum / gearBTCnt)))
profile
데이터 분석 공부하고 있습니다

0개의 댓글