[데이터분석]파이썬 3일차 스터디노트

bin·2023년 2월 5일
0

파이썬

목록 보기
3/12
post-thumbnail

operator모듈

  • 산술연산자

  • 비교연산자

    eq(equal) / ne(not equal) / gt(greater) / ge(greater equal) / lt(little) / le(little equal)

  • 논리연산자

vaccine = (age < 20) or (age >= 65)

= vaccine = operator.or_(operator.lt(age, 20), operator.ge(age, 65))

  • 연습문제
    Q. Random과 operator모듈을 사용해서 10부터 100사이의 난수 중 십의자리와 일의자리가 각각 3의배수인지 판단하는 코드 작성

조건식 어떤 조건에 따라 실행이 분기되는 식
A if 조건식 else B : 조건식의 결과가 true이면 A 실행, 그렇지 않으면 B실행

True일 경우: 적설량 : 50mm, 대설 경보 발령!! (if 앞부분 출력)
False일 경우: 적설량 : 10mm, 대설 경보 해제!! (else 뒷부분 출력)

조건문 어떤 조건에 따라 프로그램을 분기함

If: 단일조건

If 조건식 :
	실행문
  • 조건 결과 false: 실행하지 않고 지나감
  • 실행문은 반드시 들여쓰기된 상태에서 작성
korScore = int(input('국어 점수 입력 : '))
engScore = int(input('영어 점수 입력 : '))
matScore = int(input('수학 점수 입력 : '))
avgScore = korScore +  engScore + matScore / 3
print('평균 : {}'.format(avgScore))
if avgScore >= 90:
    print('참 잘했어요~')

if~else: 양자택일, 조건식 결과에 따라 둘 중 하나가 실행

if 조건식 :
	실행문
Else:
	실행문

💥참고) pass: ‘나중에 코딩하겠다’라는 뜻의 키워드

  • 예제: 반올림하여 정수로 나타내기
floatNum = float(input('소수 입력 : '))
if floatNum - int(floatNum) >= 0.5:
    print('올림 : {}'.format(int(floatNum) + 1))
else:
    print('버림 : {}'.format(int(floatNum)))
  • 조건식의 두가지 사용법
  1. 조건식 결과에 따른 실행만 하는 경우
userPoint = int(input('고객 포인트 입력 : '))
minAblePoint = int(input('고객 포인트 입력 : '))
print('포인트 사용 가능') if userPoint >= minAblePoint else print('포인트 사용 불가능')
  1. 조건식 결과를 변수에 할당하는 경우
result = '가능' if userPoint >= minAblePoint else '불가능'
print('포인트 사용 가능 여부 : {}'.format(result))

💥모든 조건식은 if~else문으로 변경할 수 있으나, 모든 if~else문을 조건식으로 변경할 수 있는 것은 아니다

  • 연습문제: 비올확률이 55%보다 크면 ‘우산을 챙기세요’ 출력, 작으면 ‘양산을 챙기세요’ 출력
rainPercentage = int(input('비올 확률 입력 : '))
minRainPercentage = 55

#조건식
print('우산을 챙기세요.') if rainPercentage >= minRainPercentage else print('양산을 챙기세요.')

#if~else문
if rainPercentage >= minRainPercentage:
    print('우산을 챙기세요.')
else:
    print('양산을 챙기세요.')

if~elif문: 다자택일(다중조건), 여러가지 조건식 결과에 따라 실행문 결정

  • 마지막 else 써도 되고(나머지 조건 싹 다 처리할 때) 안 써도 됨
  • 조건식 순서가 중요(컴퓨터는 위에서부터 순차적으로 처리한다)
  • 순서 정하기 복잡하다면 범위 명시

중첩 조건문: 조건문 안에 또 다른 조건문

selectNum = int(input('출퇴근 대상자 인가요? 1. Yes \t 2. No \n'))
if selectNum ==1:
    print('교통수단을 선택하ㅔ요.')
    trans = int(input('1. 도보, 자전거 \t 2. 버스, 지하철 \t 3. 자가용 \n'))

    if trans == 1:
        print('세금 감면 5%')
    elif trans == 2:
        print('세금 감면 3%')
    elif trans == 3:
        print('세금 감면 1%')
elif selectNum == 2:
    print('세금 변동 없습니다.')
else:
    print('잘못 입력했습니다.')

반복문 특정 실행 반복

1. For문: 주로 횟수에 의한 반복

-> 0~4 반복

💥 반복범위설정- range()함수

  • For I in range(1, 11, 1): 1부터 10까지 1씩 증가 = 10회 반복
  • For I in range(0, 10, 2): 0부터 9까지 2씩 증가하면서 반복 = 5회 반복
  • 단계가 1인 경우에는 생략 가능
startNum = int(input('반복의 시작 입력 : '))
endNum = int(input('반복의 끝 입력 : '))

for i in range(startNum, (endNum + 1)):
    print(i)

2. while문: 조건에 의한 반복

조건식이 false가 될 때 실행문 중단

  • 연습문제1: 구구단 식 작성
gugudanNum = int(input('희망 구구단 입력 :'))
n=1
while n <10:
    result = gugudanNum * n
    print('{} * {} = {}'.format(gugudanNum, n, result))
    n += 1
  • 연습문제2: 현재 타이어 두께 30, 회전할 때마다 0.15씩 마모될 때 운행 가능 횟수 구하기
currentThickness = 30
rotationCount = 0
removeThickness = 0.15

while currentThickness >= 20:
    rotationCount += 1
    currentThickness -= removeThickness

safeRotationCount = rotationCount - 1
print('운행 가능 횟수 : {}'.format(safeRotationCount))
운행 가능 횟수 : 66

💥 반복문 사용시 무한 반복에 주의!

n = 1
while n < 10:
    print('Hello!')

-> 결과값 무한루프
n += 1
추가하면 무한루프 막음

-	flag = True
num = 0
sum = 0
while flag:
    num += 1
    sum += num
    print('{}까지의 합은 {}입니다'.format(num,sum))

-> 조건식에 논리형 데이터 사용해 무한반복 실행

if sum >=1000:
flag = False
반복 제어 가능

  • 연습문제: 하루에 독감으로 병원에 내방하는 환자수가 50명에서 100명 사이일 때, 누적 독감 환자 수가 최초 10000명을 넘는 날짜를 구해보자.
import random

sum = 0
date = 1
flag = True

while flag:
    patientCount = random.randint(50,100)
    sum += patientCount
    date += 1
    print('날짜: {}, \t 오늘 환자수: {}, \t 누적환자수: {}'.format(date, patientCount, sum))

    if sum >= 10000:
        flag = False

> 반복문 제어

1. continue키워드: 반복실행 중 continue를 만나면 다음 반복문 실행하지 않고 위로 올라감

for i in range(100):
    if i % 7 != 0:
        continue
    print('{}는 7의 배수입니다.'.format(i))

-> 조건 만족하는 경우 다시 위로 올라감 / 만족하지 않는 경우만 넘어감

2. Else: 반복문이 종료된 후 실행

cnt = 0
for i in range(100):
    if i % 7 != 0:
        continue
    print('{}는 7의 배수입니다.'.format(i))
    cnt += 1
else:
    print('99까지의 정수 중 7의 배수는 {}개입니다.'.format(cnt))
  • 연습문제: 3과 7의 공배수와 최소공배수를 구해라
minNum = 0
for i in range(1, 101):
    if i % 3 != 0 or i % 7 != 0:
        continue
    print('공배수: {}'.format(i))

    if minNum ==0:
        minNum = i
else:
    print('최소공배수 : {}'.format(minNum))

공배수: 21
공배수: 42
공배수: 63
공배수: 84
최소공배수 : 21

3. Break: 반복실행 중 break를 만나면 반복문을 빠져나온다

num = 0
while True:
    print('Hello')

    num += 1
    if num >= 5:
        break
print('The END!!')

Hello
Hello
Hello
Hello
Hello
The END!!
-> break 걸리면 while밖으로 나옴

  • 연습문제1: 10이 팩토리얼(10!)을 계산하는 과정에서 결과값이 50을 넘을 때의 숫자를 구하자
result = 1
num = 0
for i in range(1,11):
    result *= i

    if result > 50:
        num = i
        break

print('num: {}, result: {}'.format(num, result))
  • 연습문제2: 새끼강아지 체중 2.2kg가 넘으면 이유식 중단, 한번 이유식 먹일 때 70g 증가할 때, 예상되는 이유식 중단 날짜(현재 체중: 800g)
limitWeight = 2200
currentWeight = 800
date = 1

while True:
    date += 1
    currentWeight +=70
    if currentWeight >=2200:
        break

print('이유식 중단 날짜: {}일'.format(date))

중첩반복문

for i in range(1, 10):
    for j in range(i):
        print('*', end='')  # end='' ->개행하지 않음
    print()

0개의 댓글