스터디노트(Python 기초7~10)

zoe·2023년 3월 5일
0

조건식

  • 어떤 조건에 따라 실행이 되는 식
  • 💡 A if 조건식 else B → 조건식의 결과가 True이면 A 실행, 그렇지 않으면 B 실행
num1 = 10
num2 = 100

numResult = True if num1 > num2 else False
print('num1 > num2 : {}' .format(numResult))
print('num1은 num2보다 크다.') if numResult else print('num1은 num2보다 크지 않다.')
  • 실습

적설량을 입력하고 적설량이 30mm 이상이면 대설 경보를 발령하고 그렇지 않으면 대설 경보를 해제하는 코드를 작성

# 적설량을 입력하고 적설량이 30mm 이상이면 대설 경보를 발령하고 그렇지 않으면 대설 경보를 해제하는 코드를 작성

limitSnowAmount = 30
snowAmount = int(input('적설량 입력(mm) : '))

print('적설량 : {}mm, {}' .format(snowAmount,'대설 경보 발령!!')) if snowAmount >= limitSnowAmount \
    else print('적설량 : {}mm, {}' .format(snowAmount,'대설 경보 해제~~'))

국어, 영어, 수학 점수를 입력하면 조건식을 이용해서 과목별 결과와 전체 결과를 출력하는 코드 작성 (과목별 합격 점수 : 60점, 전체 합격 평균 점수 : 70)

# 국어, 영어, 수학 점수를 입력하면 조건식을 이용해서 과목별 결과와 전체 결과를 출력하는 코드 작성
# (과목별 합격 점수 : 60점, 전체 합격 평균 점수 : 70)

import operator

passScore1 = 60
passScore2 = 70

korScore = int(input('국어 점수 : '))
engScore = int(input('영어 점수 : '))
matScore = int(input('수학 점수 : '))

totalScore = korScore + engScore + matScore
scoreAvg = totalScore / 3

print('국어 : PASS') if operator.ge(korScore,passScore1) else print('국어 : FAIL')
print('영어 : PASS') if operator.ge(engScore,passScore1) else print('영어 : FAIL')
print('수학 : PASS') if operator.ge(matScore,passScore1) else print('수학 : FAIL')
print('총점 : %d, 평균 : %.2f' % (totalScore, scoreAvg))

조건식(if문)

  • 조건문 종류
    - if문 → 단일조건
    - if ~ else문 → 양자택일
    - if ~ elif문 → 다자택일(다중조건)
  • if문

    if 조건식 :
    실행문

if 10 > 5:
    print('10은 5보다 크다')
    print('또 다른 실행문!')
print('조건문이 끝났어요.')

num1 = 10
num2 = 20

if num1 <= num2 :
    print('num1 <= num2')
    print('num1은 num2보다 작거나 같다')
  • 실습

    국어, 영어, 수학 점수를 입력하고 평균이 90점 이상이면 '참 잘했어요.' 출력하는 코드 작성

# 국어, 영어, 수학 점수를 입력하고 평균이 90점 이상이면 '참 잘했어요.' 출력하는 코드 작성
korScore = int(input('국어 점수 입력 : '))
engScore = int(input('영어 점수 입력 : '))
matScore = int(input('수학 점수 입력 : '))

avgScore = (korScore + engScore + matScore) / 3
print('평균 : {}' .format(avgScore))

if avgScore >= 90 :
    print('참 잘했어요~')

실내 온도를 입력하고 온도가 28℃ 이상이면 '냉방 작동!'이 출력되고, 20℃ 이하면 '난방 작동!'이 출력되는 코드 작성

highTemperature = 28
lowTemperature = 20

innerTemperature = int(input('실내 온도 입력 : '))

if innerTemperature >= highTemperature :
    print('냉방 작동!')
if innerTemperature <= lowTemperature :
    print('난방 작동!')

양자택일 조건문(if~else문)

  • if ~ else문 : 조건식 결과에 따라 둘 중 하나가 실행됨
  • 💡 pass : 조건문을 명시하나, 실행문을 나중에 작성하고자 할 경우 사용
passScore = 80
myScore = int(input('점수 입력 : '))

if myScore >= passScore:
    print('PASS!!')
else:
    print('FAIL!!')
messageString = input('문자 메세지 입력 : ')

if len(messageString) >= 500: # len() : 문자열의 길이(공백 포함) ★
    pass
else:
    pass
  • 실습

    나이가 65세 이상이면 교통 요금 무료를 적용하는 프로그램 생성

seniorAge = 65

passengerAge = int(input('나이 입력 : '))
if passengerAge >= seniorAge :
    print('무료 대상 승객입니다.')
else:
    print('유료 대상 승객입니다.')

소수점 첫 번째 자리에서 반올림하는 프로그램 생성

# 소수점 첫 번째 자리에서 반올림하는 프로그램 생성

floatNum = float(input('소수 입력 : '))

if floatNum - int(floatNum) >= 0.5 :
    print('올림 : {}' .format(int(floatNum)+1))
else:
    print('버림 : {}' .format(int(floatNum)))

if ~ else문과 조건식

minAblePoint = 1000
userPoint = int(input('고객 포인트 입력 : '))
print('포인트 사용 가능') if userPoint >= minAblePoint else print('포인트 사용 불가능')


result = '가능' if userPoint >= minAblePoint else '불가능' # ★
print('포인트 사용 여부 : {}' .format(result))


if userPoint >= minAblePoint:
    print('포인트 사용 가능')
else:
    print('포인트 사용 불가능')


if userPoint >= minAblePoint:
    result = '가능' #★
else:
    result = '불가능'
print('포인트 사용 여부 : {}' .format(result))


if userPoint >= minAblePoint:
    result = '가능'
else:
    result = '불가능'
    lackPoint = minAblePoint - userPoint
    print('포인트가 {} 부족합니다.' .format(lackPoint))
print('포인트 사용 여부 : {}' .format(result))
  • 실습

    비올 확률을 입력하고 비올 확률이 55% 이상이면, '우산을 챙기세요'를 그렇지 않으면 '양산을 챙기세요'를 출력하는 코드 작성

# 비올 확률을 입력하고 비올 확률이 55% 이상이면, '우산을 챙기세요'를 그렇지 않으면 '양산을 챙기세요'를 출력하는 코드 작성

rainPercentage = int(input('비올 확률 입력(정수) : '))
minRainPercentage = 55

print('우산을 챙기세요') if rainPercentage >= minRainPercentage else print('양산을 챙기세요')

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

요구 사항을 해결하기 위한 조건식과 if ~ else문 중 알맞은 구문 사용
1. 최저 기온 입력
2. 최고 기온 입력
3. 일교차가 11도 이상인 경우 출력 내용
일교차 : 12도
'감기 조심하세요'
4. 일교차가 11도 미만일 경우 출력 내용
일교차 : 9도
'산책하기 좋은 날씨입니다.

# 요구 사항을 해결하기 위한 조건식과 if ~ else문 중 알맞은 구문 사용

#[요구 사항]
# 1. 최저 기온 입력
# 2. 최고 기온 입력
# 3. 일교차가 11도 이상인 경우 출력 내용
#   일교차 : 12도
#   '감기 조심하세요'
# 4. 일교차가 11도 미만일 경우 출력 내용
#   일교차 : 9도
#   '산책하기 좋은 날씨입니다.

lowestTemperature = int(input('최저 기온을 입력하세요 : '))
highestTemperature = int(input('최저 기온을 입력하세요 : '))
diffTemperature = highestTemperature - lowestTemperature

if diffTemperature >= 11:
    print('일교차 : {}' .format(diffTemperature))
    print('감기 조심하세요.')
else:
    print('일교차 : {}' .format(diffTemperature))
    print('산책하기 좋은 날씨입니다.')

다자택일 조건문(if ~ elif문)

  • if ~ elif문 : 여러 가지 조건식 결과에 따라 실행문이 결정됨
    - 💡 if ~ elif문에서 마지막 else 생략 가능
exampleScore = int(input('시험 성적 입력 : '))
grades = ''

if exampleScore >= 90:
    grades = 'A'
elif exampleScore >= 80:
    grades = 'B'
elif exampleScore >= 70:
    grades = 'C'
elif exampleScore >= 60:
    grades = 'D'
else:
    grades = 'F'

print('성적 : {}\t 학점 : {}' .format(exampleScore, grades))
  • 실습

    계절을 입력하면 영어로 번역되는 프로그램 생성

# 계절을 입력하면 영어로 번역되는 프로그램 생성
print('계절 : 봄, 여름, 가을, 겨울')
seasonStr = input('계절 입력 : ')

if seasonStr == '봄':
    print('{} : {}' .format(seasonStr, 'Spring'))
elif seasonStr == '여름':
    print('{} : {}'.format(seasonStr, 'Summer'))
elif seasonStr == '가을':
    print('{} : {}'.format(seasonStr, 'Autumn'))
elif seasonStr == '겨울':
    print('{} : {}'.format(seasonStr, 'Winter'))
else:
    print('검색할 수 없습니다.')

키오스크에서 메뉴를 선택하면 영수증이 출력되는 프로그램 생성

# 키오스크에서 메뉴를 선택하면 영수증이 출력되는 프로그램 생성

print('1. 카페라떼(3.5)\t 2. 에스프레소(3.0)\t 3. 아메리카노(2.0)\t 4. 곡물라떼(4.0)\t 5. 밀크티(4.3)')
userSelectNumber = int(input('메뉴 선택(숫자입력) : '))

if userSelectNumber == 1:
    print('-'*30)
    print('메뉴 : 카페라떼')
    print('가격 : 3,500원')
    print('-' * 30)
elif userSelectNumber == 2:
    print('-'*30)
    print('메뉴 : 에스프레소')
    print('가격 : 3,000원')
    print('-' * 30)
elif userSelectNumber == 3:
    print('-'*30)
    print('메뉴 : 아메리카노')
    print('가격 : 2,000원')
    print('-' * 30)
elif userSelectNumber == 4:
    print('-'*30)
    print('메뉴 : 곡물라떼')
    print('가격 : 4,000원')
    print('-' * 30)
elif userSelectNumber == 5:
    print('-'*30)
    print('메뉴 : 밀크티')
    print('가격 : 4,300원')
    print('-' * 30)
else:
    print('잘못 입력했습니다.')

다자택일 조건문 사용 시 주의할 점

  • 💡 조건식 순서가 중요하다
  • 💡 조건 범위를 명시한다
exampleScore = int(input('시험 성적 입력 : '))
grades = ''

if exampleScore >= 70 and exampleScore < 80:
    grades = 'C'
elif exampleScore >= 90:
    grades = 'A'
elif exampleScore >= 80 and exampleScore < 90:
    grades = 'B'
elif exampleScore >= 60 and exampleScore < 70:
    grades = 'D'
else:
    grades = 'F'

print('성적 : {}\t 학점 : {}' .format(exampleScore, grades))
  • 실습

    자동차 배기량에 따라 세금을 부과한다고 할 때, 다음 표를 보고 배기량을 입력하면 세금이 출력되는 프로그램 생성

# 자동차 배기량에 따라 세금을 부과한다고 할 때, 다음 표를 보고 배기량을 입력하면 세금이 출력되는 프로그램 생성

carDisplacement = int(input('자동차 배기량 입력 : '))

if carDisplacement < 1000 :
    print('세금 : 100,000원')
elif carDisplacement < 2000 and carDisplacement >= 1000 :
    print('세금 : 200,000원')
elif carDisplacement < 3000 and carDisplacement >= 2000 :
    print('세금 : 300,000원')
elif carDisplacement < 4000 and carDisplacement >= 3000 :
    print('세금 : 400,000원')
elif carDisplacement < 5000 and carDisplacement >= 4000 :
    print('세금 : 500,000원')
elif carDisplacement >= 5000:
    print('세금 : 600,000원')

중첩 조건문

  • 조건문 안에 또 다른 조건문 선언 가능
exampleScore = int(input('시험 성적 입력 : '))

if exampleScore < 60:
    print('재시험 대상입니다.')
else:
    if exampleScore >= 90:
        print('A')
    elif exampleScore >= 80:
        print('B')
    elif exampleScore >= 70:
        print('C')
    elif exampleScore >= 60:
        print('D')
  • 실습

    출퇴근 시 이용하는 교통 수단에 따라 세금을 감면해주는 정책을 세우려고 한다. 다음 내용에 맞게 프로그램 생성하기

# 출퇴근 시 이용하는 교통 수단에 따라 세금을 감면해주는 정책을 세우려고 한다. 다음 내용에 맞게 프로그램 생성하기

selectNum = int(input('출퇴근 대상자 인가요? 1. Yes \t 2. No (숫자 입력)'))

if selectNum == 1:
    print('교통수단을 선택하세요.')
    trans = int(input('1. 도보, 자전거 \t 2. 버스, 지하철 \t 3. 자가용 (숫자 입력)'))

    if trans == 1:
        print('세금 감면 5%')
    elif trans == 2:
        print('세금 감면 3%')
    elif trans == 3:
        print('추가 세금 1%')

elif selectNum == 2:
    print('세금 변동 없습니다.')
else:
    print('잘못 입력했습니다.')

반복문

  • 반복문 : 특정 실행을 반복하는 것
    - 반복문을 사용하면 프로그래밍이 간결하고 유지 보수가 쉽다.
    - 횟수에 의한 반복
    - 조건에 의한 반복

횟수에 의한 반복(for문)

  • 정해 놓은 반복 횟수에 따라 반복 실행
  • 주로 for문 사용
    - for ~ in
  • 💡 pass : 조건문을 명시하나, 실행문을 나중에 작성하고자 할 경우 사용
for i in range(5) : # range(5) -> 0~4
    print('hello')
for j in range(10):
    result = 7 * j
    print('{} * {} = {}' .format(7, j, result))
for k in range(10) :
    pass
for h in range(5):
    print('hi',end='')
    print(' loof statement!')
  • 실습

'Hello python' 문자열을 5번 출력하는 코드 작성

# 'Hello python' 문자열을 5번 출력하는 코드 작성

for num in range(5):
    print('Hello python!')

사용자가 입력한 숫자에 맞는 구구단 출력 코드 작성

# 사용자가 입력한 숫자에 맞는 구구단 출력 코드 작성

gugudanNum = int(input('숫자를 입력하세요 : '))

for num in range(9) :
    result = gugudanNum * (num+1)
    print('{} * {} = {}' .format(gugudanNum, (num+1), result))

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

  • range()
    💡 range(시작, 끝, 단계)
    - for i in range(1, 11, 1): → 1부터 10까지 1씩 증가하면서 반복
    💡 range(시작, 끝)
    - for i in range(1, 11): → 1부터 10까지 1씩 증가
    💡 range(끝)
    - for i in range(11): → 1부터 10까지 1씩 증가
  • 실습

    사용자가 반복의 시작과 끝을 입력하여 1씩 증가하는 반복문 작성

startNum = int(input('반복의 시작 입력 : '))
endNum = int(input('반복의 끝 입력 : '))

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

위에서 작성한 반복문을 이용해서 2씩 증가하는 반복문 작성

# 위에서 작성한 반복문을 이용해서 2씩 증가하는 반복문 작성
for i in range(startNum, endNum,2):
    print(i)

1에서 100까지의 정수 중 3의 배수에 해당하는 정수만 출력하는 코드 작성

for i in range(1, 101):
    if i % 3 == 0: # ★
        print(i)

조건에 의한 반복(while문)

  • 조건에 만족하면 반복 실행, 그렇지 않으면 반복 중단
  • 주로 while문 사용
endNum = 10
n = 0

while n <= endNum:
    print(n)
    n += 1
n = 1
while n < 10:
    result = 7 * n
    print('{} * {} = {}' .format(7, n, result))
    n += 1
while n > 10:
    pass
n = 1
while n < 10:
    print('Hi', end='')
    print(' loof statement!')
    n += 1
  • 실습

    1부터 100까지의 정수 중 2의 배수와 3의 배수를 구분해서 출력 (단, while문 이용)

# 1부터 100까지의 정수 중 2의 배수와 3의 배수를 구분해서 출력 (단, while문 이용)

n = 1
while n <= 100:
    if n % 2 == 0:
        print('{}은 2의 배수이다.' .format(n))
    if n % 3 == 0 :
        print('{}은 3의 배수이다.' .format(n)) # 2의 배수이자 3의 배수가 존재하니 if로
    n += 1

for문과 while문 비교

sum = 0
for i in range(1, 11):
    sum += i
print('sum : {}' .format(sum))
sum = 0
maxInt = 0
n = 1

while n <= 100 and sum <= 50: # n <= 100 -> 대략적인 큰 숫자 입력
    n +=1

    if n % 7 == 0 and sum <= 50:
        sum += n
        maxInt = n

        print('n : {}'.format(n))
print('7의 배수의 합이 50이상인 최초의 정수 : {}' .format(maxInt))
  • 실습

    다음 반복 실행을 위해서 for문과 while문 중 가장 적합한 구문을 이용해서 프로그램 생성
    자동차 바퀴가 한번 구를 때마다 0.15mm씩 마모된다고 한다.
    현재의 바퀴 두께가 30mm이고 최소 운행 가능 바쿼 두께가 20mm라고 할 때
    앞으로 구를 수 있는 횟수를 구해보자

# 다음 반복 실행을 위해서 for문과 while문 중 가장 적합한 구문을 이용해서 프로그램 생성
# 자동차 바퀴가 한번 구를 때마다 0.15mm씩 마모된다고 한다.
# 현재의 바퀴 두께가 30mm이고 최소 운행 가능 바쿼 두께가 20mm라고 할 때
# 앞으로 구를 수 있는 횟수를 구해보자

currentThickness = 30
rotationCount = 0
removeThickness = 0.15

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

safeRotationCount = rotationCount -1 # 나중에 currentThickness -= removeThickness가 이뤄지므로 한바퀴를 차감하기 위해 -1을 함
print('운행 가능 횟수 : {}' .format(safeRotationCount))

무한루프

  • 무한 루프 : 반복문을 빠져나올 수 없는 경우
    - while문에서 조건식의 결과가 항상 True인 경우
    - 조건식에 논리형 데이터를 사용해서 무한 반복 실행 가능
flag = True
num = 0
sum = 0

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

    if sum >= 1000:
        flag = False
  • 실습

    💡 하루에 독감으로 병원에 내방하는 환자 수가 50명에서 100명 사이일 때,누적 독감 환자 수가 최초 10,000명을 넘는 날짜를 구하기

# 하루에 독감으로 병원에 내방하는 환자 수가 50명에서 100명 사이일 때,누적 독감 환자 수가 최초 10,000명을 넘는 날짜를 구하기

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

반복문 제어(continue)

  • 💡 continue : 반복 실행 중 continue를 만나면 실행을 생략하고, 다음 반복 실행문으로 넘어감
  • 💡 else의 실행문은 반복문이 종류된 후 실행
for i in range(100) :
    if i % 7 != 0:
        continue
    print('{}는 7의 배수입니다.' .format(i))
cnt = 0
for i in range(100):
    if i % 7 != 0:
        continue

    print('{}는 7의 배수입니다.' .format(i))
    cnt += 1
else:
    print('99까지의 정수 중 7의 배수는 {}개입니다.' .format(cnt))
  • 실습

    💡 1부터 100까지의 정수 중 3과 7의 공배수와 최소 공배수를 출력

# 1부터 100까지의 정수 중 3과 7의 공배수와 최소 공배수를 출력

minNum = 0
for i in range(1, 101):
    if i % 3 != 0 or i % 7 != 0: #3으로 나눴을 때도 나머지가 0이 아니고 7로 나눴을 때도 나머지가 0이 아닌경우 ★
        continue
    print('공배수 : {}' .format(i))

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

반복문 제어(break)

  • break : 반복 실행 중 break를 만나면 반복문을 빠져나온다. (📌 순서 조심!!)
num = 0
while True:
    print('hello~')

    num += 1
    if(num >=5):
        break
# 1부터 100까지 정수를 더할 때, 합계가 100이 넘는 최초의 정수 찾기.
sum = 0
searchNum = 0

for i in range(1, 101):
    sum += i

    if sum > 100:
        searchNum = i
        break

print('searchNum : {}' .format(searchNum))
  • 실습

    💡 10의 팩토리얼(10!)을 계산하는 과정에서 결과값이 50을 넘을 때의 숫자를 구하기

# 10의 팩토리얼(10!)을 계산하는 과정에서 결과값이 50을 넘을 때의 숫자를 구하기

result = 1
num = 0

for i in range(1, 11):
    i += 1
    result *= i
    if result > 50:
        num = i
        break
print('num : {}, result : {}' .format(num, result))

새끼 강아지 체중이 2.2kg가 넘으면 이유식을 중단하려고 한다.한번 이유식을 먹을 때 체중이 70g 증가한다고 할 때,예상되는 이유식 날짜를 구하기. (현재 체중은 800g이다.)

limitWeight = 2200
currentWeight = 800
date = 1

while True:
    if currentWeight > limitWeight: #몸무게를 잰 후에 체중이 안넘으면 이유식을 먹임, 그래서 if가 먼저 나옴!!!!
        break
    currentWeight += 70
    date += 1

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

중첩 반복문

  • 반복문 안에 또 다른 반복문 선언
for i in range(1, 10):
    for j in range(i):
        print('*', end='')
    print() # 줄내림
for i in range(10, 0, -1):
    for j in range(i):
        print('*', end='')
    print()
  • 실습

    💡 구구단 전체를 출력

# 구구단 전체를 출력

for i in range(2, 10):
    for j in range(1, 10):
        print('{} * {} = {}' .format(i,j,(i*j)))
    print()


for i in range(1, 10):
    for j in range(2, 10):
        print('{} * {} = {}\t' .format(j,i,(i*j)), end='')
    print()

💻 출처 : 제로베이스 데이터 취업 스쿨

profile
#데이터분석 #퍼포먼스마케팅 #데이터 #디지털마케팅

0개의 댓글