파이썬 기초 연습문제 1

BlackLabel·2023년 9월 1일
0

파이썬 문제풀이

목록 보기
1/3

연습문제 #1

  • 체중(g)과 신장(cm)을 입력하면 BMI지수가 출력되는 프로그램을 만들어보자.
weight = input('체중 입력(g):')
height = input('신장 입력(cm):')
if weight.isdigit():
    weight = int(weight) / 10
if height.isdigit():
    height = int(height) / 100
print('체중:{}kg'.format(weight))
print('신장:{}m'.format(height))
bmi = weight / (height * height)
print('BMI: %.2f' % bmi)

#실행결과 
신장 입력(cm):187
체중:85.5kg
신장:1.87m
BMI: 24.45

isdigit함수를 이용해 input함수에 숫자를 입력하는가 문자를 입력하는가에 따라 조건식을 진행 시킬 수 있음(하지만 판별만 할 뿐 별도로 숫자로 변환 시켜야 함)

  • isdigit() : 숫자인지 판별하는 함수(숫자가 맞으면 True, 아니면 False)

연습문제 #2

  • num1,num2의 값을 서로 바꾸어 각각의 값을 출력하는 프로그램을 만들어보자
num1=10
num2=20
print('num1:{},num2:{}'.format(num1,num2))
num1 = 20
num2 = 10
print('num1:{},num2:{}'.format(num1,num2))

#실행결과 
num1:10,num2:20
num1:20,num2:10

연습문제 #3

  • 중간, 기말고사 점수를 입력하면 총점과 평균이 출력되는 프로그램을 만들어보자
midScore = input('중간 고사 점수 입력 : ')
finScore = input('기말 고사 점수 입력 : ')
if midScore.isdigit() and finScore.isdigit():
    midScore = int(midScore)
    finScore = int(finScore)
    totalScore = midScore + finScore
    avgScore = totalScore / 2
    print('총점 : {}, 평균 : {}'.format(totalScore, avgScore))

else:
    print('다시 입력 하시오')

#중간 고사 점수 입력 : 85
#기말 고사 점수 입력 : 95
#총점 : 180, 평균 : 90.0
  • and 함수로 한줄로 편하게 쓰자

연습문제 #4

  • 키오스크에서 사용하는 언어 선택 프로그램을 만들어보자
chooseLan = int(input('언어 선택(Choose your language) : 1.한국어  2.English'))
if chooseLan == 1:
    print('1. 샌드위치   2.햄버거   3.쥬스   4.커피   5.아이스크림')
if chooseLan == 2:
    print('1.Sandwich  2.Hamburger  3.Juice  4.Coffee  5.IceCream')
    
  • 간격 넓히기로 /t 써도 됨

연습문제 #5

  • 나의 나이가 100살이 되는 해를 구해보자
myAge = int(input('나이를 입력하세요  : '))
thisYear = 2023
whatYear = int(thisYear + (100-myAge))
print('100살이 되는 해 : {}'.format(whatYear))

datetime 모듈(날짜 시간 정보를 알려줌)을 이용할 수도 있음

import datetime

today = datetime.datetime.today()
myAge = input('나이 입력: ')
if myAge.isdigit():
    afterage = 100 - int(myAge)
    myHundred = today.year + afterage
    print('{}년({}년 후)에 100살'.format(myHundred, afterage))
else:
    print('다시 입력하시오')
    

연습문제 #6

  • 상품의 가격을 입력하고 지불금액을 입력하면 거스름돈을 출력하는 프로그램을 만들어보자. 거스름돈은 지폐와 동전이 얼만큼 필요한지 갯수를 나타내어본다.

직접 푼 답안

price = int(input('상품의 가격 : '))
myMoney = int(input('지불 금액 : '))
change = myMoney - price
print('거스름 돈 : {}'.format(change))
print('-'*30)
if change >= 50000:
    print('50000원 갯수 : {}'.format(change // 50000))
    change = change % 50000
if 50000 > change >= 10000:
    print('10000원 갯수 : {}'.format(change // 10000))
    change = change % 10000
if 5000 <= change < 10000:
    print('5000원 갯수 : {}'.format(change // 5000))
    change = change % 5000
if 1000 <= change < 5000:
    print('1000원 갯수 : {}'.format(change // 1000))
    change = change % 1000
if 500 <= change < 1000:
    print('500원 갯수 : {}'.format(change // 500))
    change = change % 500
if 100 <= change < 500:
    print('100원 갯수 : {}'.format(change // 100))
    change = change % 100
if 50 <= change < 100:
    print('100원 갯수 : {}'.format(change// 50))
    change = change % 50

모범답안

money50000 = 50000;money10000 = 10000;money5000 =5000;money1000=1000;money500=500;money100=100;money10=10
goods = int(input('상품 가격 입력:')) 
money = int(input('지불 금액:'))
if money > goods:
    changes = money - goods
    changes = (changes // 10 ) * 10
    print('거스름돈:{}'.format(changes))
print('-'*30 )
if changes > 50000:
    changesCnt = changes // money50000
    print('50,000 {}장'.format(changesCnt))
    changes = changes % money50000
if changes > 10000:
    changesCnt = changes // money10000
    print('10,000 {}장'.format(changesCnt))
    changes = changes % money10000
if changes > 5000:
    changesCnt = changes // money5000
    print('5,000 {}장'.format(changesCnt))
    changes = changes % money5000
if changes > 1000:
    changesCnt = changes // money1000
    print('1,000 {}장'.format(changesCnt))
    changes = changes % money1000
if changes > 500:
    changesCnt = changes // money500
    print('500 {}개'.format(changesCnt))
    changes = changes % money500
if changes > 100:
    changesCnt = changes // money100
    print('100 {}개'.format(changesCnt))
    changes = changes % money100
if changes > 10:
    changesCnt = changes // money10
    print('10 {}개'.format(changesCnt))
  • 변수를 미리 다 지정하는게 좋아보인다.

연습문제 #7

  • 국어,영어,수학 점수를 입력하여 총점과 평균을 구하고 최고점수과목, 최저점수과목, 최고 최저점수의 차이를 구하는 프로그램을만들어보자

직접 푼 답안

korScore = int(input('국어 점수 입력 : '))
engScore = int(input('영어 점수 입력 : '))
mathScore = int(input('수학 점수 입력 : '))
totalScore = korScore + engScore + mathScore
avgScore = totalScore / 3
print('총점 : {}'.format(totalScore))
print('평균 : %.2f' %avgScore)
print('-'*30)
if korScore > engScore and korScore > mathScore:
    print('최고 점수 과목(점수) : 국어({})'.format(korScore))
    maxScore = korScore
if engScore > korScore and engScore > mathScore:
    print('최고 점수 과목(점수) : 영어({})'.format(engScore))
    maxScore = engScore
if mathScore > korScore and mathScore > engScore:
    print('최고 점수 과목(점수) : 수학({})'.format(mathScore))
    maxScore = mathScore
if korScore < engScore and korScore < mathScore:
    print('최저 점수 과목(점수) : 국어({})'.format(korScore))
    minScore = korScore
if engScore < korScore and engScore < mathScore:
    print('최저 점수 과목(점수) : 영어({})'.format(engScore))
    minScore = engScore
if mathScore < korScore and mathScore < engScore:
    print('최저 점수 과목(점수) : 수학({})'.format(mathScore))
    minScore = mathScore
print('최고, 최저 점수 차이: {}'.format(maxScore - minScore))
print('-'*30)

#출력값
국어 점수 입력 : 85
영어 점수 입력 : 95
수학 점수 입력 : 100
총점 : 280
평균 : 93.33
------------------------------
최고 점수 과목(점수) : 수학(100)
최저 점수 과목(점수) : 국어(85)
최고, 최저 점수 차이: 15
------------------------------

모범 답안

kor = '국어'; eng = '영어'; mat = '수학'
korScore = int(input('국어 점수 입력:'))
engScore = int(input('영어 점수 입력:'))
matScore = int(input('수학 점수 입력:'))
sum = korScore + engScore + matScore
print('총점:{}'.format(korScore+engScore+matScore))
avg = sum / 3
print('평균:{:.2f}'.format(avg))
print('-'*30)
maxScore = korScore
maxSubject = kor
if engScore > maxScore:
    maxScore = engScore
    maxSubject = eng
if matScore > maxScore:
    maxScore = matScore
    maxSubject = mat
print('최고 점수 과목:{}({})'.format(maxScore,maxSubject))
minScore = korScore
minSubject = kor
if engScore < minScore:
    minScore = engScore
    minSubject = eng
if matScore < minScore:
    minScore = matScore
    minSubject = mat
print('최저 점수 과목:{}({})'.format(minScore,minSubject))
print('최고 최저 점수 차이:{}'.format(maxScore-minScore))

#실행결과 
국어 점수 입력:80
영어 점수 입력:90
수학 점수 입력:100
총점:270
평균:90.00
------------------------------
최고 점수 과목:100(수학)
최저 점수 과목:80(국어)
최고 최저 점수 차이:20

연습문제 #8

  • 금액, 이율, 거치기간을 입력하면 복리계산하는 복리계산기 프로그램을 만들어보자
inputMoney = int(input('금액 입력 : '))
inputEir = float(input('이율 입력 : '))
inputDay = int(input('기간 입력 : '))
print('-'*30)
goalMoney = inputMoney
for i in range(inputDay):
    goalMoney = goalMoney + (inputMoney * inputEir * 0.01)
goalMoneyFormated = format(int(goalMoney), ',')
print('-'*30)
print('이율 : {}%'.format(inputEir))
print('원금 : {}원'.format(format(inputMoney, ',')))
print('{}년 후 금액 : {}원'.format(inputDay, goalMoneyFormated))
print('-'*30)

#출력값
금액 입력 : 1500000
이율 입력 : 4.3
기간 입력 : 4
------------------------------
------------------------------
이율 : 4.3%
원금 : 1,500,0004년 후 금액 : 1,758,000------------------------------
  • format()함수를 이용해 1000단위로 끊어서 출력하기!

연습문제 #9

  • 고도가 60m 올라갈 때마다 기온이 0.8도 내려 간다고 할 때 고도를 입력하면 기온이 출력되는 프로그램을 만들어 보자(지면온도:29도)
groundTemp = 29
stepTemp = 0.8
step = 60
altitude = float(input('고도 입력 : '))
summitTemp = groundTemp - (stepTemp * (altitude / step))
print('지면 온도 : {}'.format(groundTemp))
print('고도 {} M의 온도 : {}'.format(altitude, summitTemp))

#출력값
고도 입력 : 720
지면 온도 : 29
고도 720.0 M의 온도 : 19.4

연습문제 #10

  • 다음 내용을 참고해 백신 접종 대상자를 구분하기 위한 프로그램을 만들어 보자
    의사코드: 19세 이하 또는 65세 이상이면 출생 연도 끝자리에 따른 접종 그렇지 않으면 하반기 일정확인
inputAge = int(input('나이 입력 : '))
if 19 <= inputAge <= 65:
    birthY = int(input('출생 연도 끝자리 입력 : '))
    if birthY == 0 or birthY == 5:
        print('금요일 접종 가능!')
    if birthY == 1 or birthY == 6:
        print('월요일 접종 가능!')
    if birthY == 2 or birthY == 7:
        print('화요일 접종 가능!')
    if birthY == 3 or birthY == 8:
        print('수요일 접종 가능!')
    if birthY == 4 or birthY == 9:
        print('목요일 접종 가능!')
else:
    print('하반기 일정 확인하세요.')
    
    #실행값
    나이 입력 : 23
    출생 연도 끝자리 입력 : 1
    월요일 접종 가능!

연습문제 #11

  • 메시지를 입력하면 메시지 길이에 따라 발송요금을 계산해주는 프로그램을 만들어보자
inputMes = input('메시지 입력 : ')
lenMes = len(inputMes)
tax50 = 50
tax100 = 100
if lenMes <= 50:
    print('SMS 발송!!')
    print('메시지 길이 : {}'.format(lenMes))
    print('메시지 발송 요금 : {}원'.format(tax50))
if lenMes >= 50:
    print('MMS 발송!!')
    print('메시지 길이 : {}'.format(lenMes))
    print('메시지 발송 요금 : {}원'.format(tax100))
    
    #출력값
    메시지 입력 : 안녕하세요
    SMS 발송!!
    메시지 길이 : 5
    메시지 발송 요금 : 50

연습문제 #12

  • 과목의 점수를 입력하면 총점과 평균을 구해주고 각 과목의 편차를 -,+의 기호를 이용하여 나타내보자.('-'는 편차가 마이너스일때, '+' 는 편차가 플러스 일때)
kor = int(input('국어점수:'))
eng = int(input('영어점수:'))
mat = int(input('수학점수:'))
sci = int(input('과학점수:'))
his = int(input('국사점수:'))
total = kor+eng+mat+sci+his
avg = int(total / 5)
print('-'*50)
korAvg = 85;engAvg = 82;matAvg = 89;sciAvg = 75;hisAvg = 94
totalAvg = korAvg+engAvg+matAvg+sciAvg+hisAvg
avgAvg = int(totalAvg/5)
korDevi = kor-korAvg; engDevi = eng-engAvg; matDevi = mat-matAvg
sciDevi = sci-sciAvg; hisDevi = his-hisAvg
totalDevi = total - totalAvg ; avgDevi = avg - avgAvg
print('총점: {}({}), 평균:{}({})'.format(total, totalDevi, avg, avgDevi))
print('국어: {}({}), 영어: {}({}), 수학: {}({}), 과학: {}({}), 국사: {}({})'.format(
    kor, korDevi, eng, engDevi, mat, matDevi, sci, sciDevi, his, hisDevi
))
print('-'*50)
term = '+' if korDevi > 0 else '-'
print('국어 편차:{}({})'.format(term * abs(korDevi),korDevi))
term = '+' if engDevi > 0 else '-'
print('영어 편차:{}({})'.format(term * abs(engDevi),engDevi))
term = '+' if matDevi > 0 else '-'
print('수학 편차:{}({})'.format(term * abs(matDevi),matDevi))
term = '+' if sciDevi > 0 else '-'
print('과학 편차:{}({})'.format(term * abs(sciDevi),sciDevi))
term = '+' if hisDevi > 0 else '-'
print('국사 편차:{}({})'.format(term * abs(hisDevi),hisDevi))
term = '+' if totalDevi > 0 else '-'
print('총점 편차:{}({})'.format(term * abs(totalDevi),totalDevi))
term = '+' if avgDevi > 0 else '-'
print('평균 편차:{}({})'.format(term * abs(avgDevi),avgDevi))

print('-'*50)

#출력값
국어점수: 91
영어점수: 92
수학점수: 61
과학점수: 58
국사점수: 90
--------------------------------------------------
총점: 392(-33), 평균:78(-7)
국어: 91(6), 영어: 92(10), 수학: 61(-28), 과학: 58(-17), 국사: 90(-4)
--------------------------------------------------
국어 편차:++++++(6)
영어 편차:++++++++++(10)
수학 편차:----------------------------(-28)
과학 편차:-----------------(-17)
국사 편차:----(-4)
총점 편차:---------------------------------(-33)
평균 편차:-------(-7)
--------------------------------------------------

연습문제 #13

  • 난수를 이용해서 홀/짝 게임을 만들어보자
import random

ranNum = random.randint(1,2)
selectNum = int(input('홀 or 짝 선택: 1.홀 \t 2.짝 '))
if ranNum == 1 and selectNum == 1:
    print('빙고!! 홀수!!')
elif ranNum == 2 and selectNum == 2:
    print('빙고!! 짝수!!')
elif ranNum == 1 and selectNum == 2:
    print('실패!! 홀수!!')
elif ranNum == 2 and selectNum == 1:
    print('실패!! 짝수!!')

#출력값or 짝 선택: 1.2.1
실패!! 짝수!!

randint(A,B)는 A부터B까지 수중 랜덤으로 출력하는 함수다.

if ~ if문의 경우 항상 두 if문의 조건을 모두 체크하는 반면,
if ~ elif 문의 경우 앞의 if문이 만족되면 뒤의 elif 문 조건은 체크하지 않는다.

연습문제 #14

  • 난수를 이용해서 가위, 바위, 보 게임을 만들어보자
import datetime

today = datetime.datetime.today()
day = today.day
dustNum = int(input('미세먼지 수치 입력 : '))
carChoose = int(input('차량 종류 선택: 1.승용차 2.영업용차 '))
carNum = int(input('차량 번호 입력: '))
limitDust = 150

print('-'*30)
print(today)
print('-'*30)
if dustNum > limitDust and carChoose == 1:
    if (day % 2) == (carNum % 2):
        print('차량 2부제 적용')
        print('차량 2부제로 금일 운행제한 대상 차량입니다.')
    else:
        print('금일 운행 가능합니다.')
if dustNum > limitDust and carChoose == 2:
    if (day % 5) == (carNum % 5):
        print('차량 5부제 적용')
        print('차량 5부제로 금일 운행제한 대상 차량입니다.')
    else:
        print('금일 운행 가능합니다.')
if dustNum <= limitDust:
    if (day % 5) == (carNum % 5):
        print('차량 5부제 적용')
        print('차량 5부제로 금일 운행제한 대상 차량입니다.')
    else:
        print('금일 운행 가능합니다.')
print('-'*30)

#출력값
미세먼지 수치 입력 : 145
차량 종류 선택: 1.승용차 2.영업용차 1
차량 번호 입력: 5526
------------------------------
2023-09-02 22:31:25.479899
------------------------------
금일 운행 가능합니다.
------------------------------

연습문제 #15

  • PC에서 난수를 발생하면 사용자가 맞추는 게임을 만들어보자

• PC가 난수(1~1000)를 발생하면 사용자가 숫자(정수)를 입력한다.
• 사용자가 난수를 맞추면 게임이 종료된다.
• 만약, 못 맞추게 되면 난수와 사용자 숫자의 크고 작음을 출력한 후
사용자한테 다시 기회를 준다.
• 최종적으로 사용자가 시도한 횟수를 출력한다.

import random

ranNum = random.randint(1,1000)
tryCount = 0
gameFlag = True

while gameFlag:
    tryCount += 1
    inputNum = int(input('1에서 1000까지의 정수 입력: '))

    if ranNum == inputNum:
        print('빙고!!')
        gameFlag = False
    else:
        if ranNum > inputNum:
            print('난수가 크다!')
        else:
            print('난수가 작다!')
print('난수: {}, 시도 횟수 : {}'.format(ranNum, tryCount))

#출력값
1에서 1000까지의 정수 입력: 500
난수가 크다!
1에서 1000까지의 정수 입력: 700
난수가 크다!
1에서 1000까지의 정수 입력: 800
난수가 작다!
1에서 1000까지의 정수 입력: 750
난수가 크다!
1에서 1000까지의 정수 입력: 760
난수가 크다!
1에서 1000까지의 정수 입력: 770
난수가 작다!
1에서 1000까지의 정수 입력: 765
난수가 작다!
1에서 1000까지의 정수 입력: 763
난수가 크다!
1에서 1000까지의 정수 입력: 764
빙고!!
난수: 764, 시도 횟수 : 9

코멘트

  • gameFlag = True를 설정한 다음 While gameFlag를 하고 그 뒤에 False로 중지를 시켜도 되지만 그냥 While True만 하고 False 자리에 break 만 써도 된다. (하지만 gameFlag = False로 한 경우에는 끝까지 실행된 다음에 다음 반복이 이어지지 않고 종료되는 반면에 해당 자리에 break문을 쓸 경우 그자리에서 곧바로 반복이 종료된다)
  • 반복문 안에서 tryCount = 0을 설정할 경우, 반복이 이루어질때마다 매번 0으로 초기화되기 때문에 밖에서 0으로 초기값을 준 것이다. (반복이 한번 되었을때 1씩 더한 값이 끝나고 다시 0으로 된다는 뜻!)

연습문제 #16

  • 실내온도를 입력하면 스마트에어컨 상태가 자동으로 설정되는 프로그램을 만들어보자

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

if tempNum <= 18:
        print('off!!')
elif tempNum >18 and tempNum <=22:
        print('매우 약!!')
elif tempNum >22 and tempNum <=24:
        print('약!!')
elif tempNum >24 and tempNum <=26:
        print('중!!')
elif tempNum >26 and tempNum <=28:
        print('강!!')
elif tempNum > 28:
        print('매우 강!!')

#출력값
실내 온도 입력: 28
강!!

연습문제 #17

  • 1부터 100까지 정수 중 십의자리와 일의자리에 대해 각각 홀/짝수를 구분하는 프로그램을 만들어보자
for i in range(1, 101):
    if i <=9:
        if i % 2 == 0:
            print('[{}]: 짝수!'.format(i))
        else:
            print('[{}]: 홀수!'.format(i))

    else:
        num10 = i // 10 #10의 자리
        num1 = i % 10 #1의 자리

        result10 = ''  
        if num10 % 2 == 0:
            result10 = '짝수'
        else:
            result10 = '홀수'

        result1 = '0'
        if num1 != 0:
            if num1 % 2 == 0:
                result1 = '짝수'
            else:
                result1 = '홀수'

        print('[{}]십의자리: {}, 일의자리:{}'.format(i, result10, result1))

고칠점

반복해서 써야 하는 것들을 미리 변수설정 할 수 있게 하자
(result10 = '' 과 result1 = '0' 은 미리 편의상 해놓은건가?)

변수선언보다는 재사용을 위한 초기화에 중점을 둬야한다. 재사용 할 인스턴스가 아니라면 안해도 된다!

연습문제 #18

  • 1부터 사용자가 입력한 정수까지의 합, 홀수의 합, 짝수의 합 그리고 팩토리얼을 출력하는 프로그램을 만들어보자
inputNum = int(input('정수 입력: '))

sumNum = 0
for i in range(1, (inputNum + 1)):
    sumNum += i

print('합 결과: {}'.format(sumNum))

sumOdd = 0
for i in range(1, (inputNum + 1)):
    if i % 2 != 0:
        sumOdd += i

print('홀수 합 결과: {}'.format(sumOdd))

sumEven = 0
for i in range(1, (inputNum + 1)):
    if i % 2 == 0:
        sumEven += i

print('짝수 합 결과: {}'.format(sumEven))

factorial = 0
for i in range(1, (inputNum + 1)):
    if i % 2 != 0:
        factorial *= i

print('팩토리얼 결과: {}'.format(factorial))

input부분을 정수화 하는데 왜 오류가 뜨는지 궁금..

연습문제 #19

  • '*'를 이용해 삼각형 만들기!


1.

for i in range(1,6):
    for j in range(i):
        print('*', end='') #end=''은 계행(띄어쓰기)하지 마라는 뜻
    print() #계행하라는 뜻
for i in range(1,6):
    for j in range(6 - i - 1):
        print(' ', end='')
    for k in range(i):
        print('*', end='')
    print()
for i in range(5, 0, -1):
    for j in range(i):
        print('*', end='')
    print()
for i in range(5, 0, -1):
    for j in range(5 - i):
        print(' ', end='')

    for j in range(i):
        print('*', end='')

    print()
for i in range(1, 10):
    if i < 5:
        for j in range(i):
            print('*', end='')
    else:
        for j in range(10 - i):
            print('*', end='')
    print()
for i in range(1, 6):
    for j in range(1, 6):
        if j == i:
            print('*', end='')
        else:
            print(' ', end='')
    print()

연습문제 #20

  • 집 앞 버스 정류장에서 학교까지 가는 버스 A, B, C 의 운행정보가 다음과 같을 때, 2대 이상의 버스가 정차하는 시간대를 출력해보자

busA = 15
busB = 13
busC = 8

totalMin = 60 * 17 #6시부터 23시까지 총 17시간 운행
for i in range(totalMin + 1):
    if i < 20 or i > (totalMin - 60): #A와 B만 운행하는경우
        if i % busA == 0 and i % busB == 0:
            print('버스A 와 버스B 동시 정차!!', end='')
            hour = 6 + i // 60
            min = i % 60
            print('\t{}:{}'.format(hour, min))
    else:
        if i % busA == 0 and i % busB == 0:
            print('버스A 와 버스B 동시 정차!!', end='')
            hour = 6 + i // 60
            min = i % 60
            print('\t{}:{}'.format(hour, min))
        elif i % busA == 0 and i % busC == 0:
            print('버스A 와 버스C 동시 정차!!', end='')
            hour = 6 + i // 60
            min = i % 60
            print('\t{}:{}'.format(hour, min))
        elif i % busB == 0 and i % busC == 0:
            print('버스B 와 버스C 동시 정차!!', end='')
            hour = 6 + i // 60
            min = i % 60
            print('\t{}:{}'.format(hour, min))

너무 어려운 문제였다... 멘탈 나갔음

연습문제 #21

  • 톱니가 각각 n1개와 n2개의 톱니바퀴가 서로 맞물려 회전할 때, 회전을 시작한 후 처음 맞물린 톱니가 최초로 다시 만나게 될 때까지의 톱니의 수와 각각의 바퀴 회전수를 출력해보자.(단, n2는 n1보다 크다.)
gearATCnt = int(input('GearA 톱니수 입력: '))
gearBTCnt = int(input('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('최초 만나는 톱니수(최소공배수): {}톱니'.format(leastNum))
print('gearA 회전수: {}톱니'.format(leastNum/gearATCnt))
print('gearB 회전수: {}톱니'.format(leastNum/gearBTCnt))

#출력값
GearA 톱니수 입력: 7
GearB 톱니수 입력: 12
최초 만나는 톱니수(최소공배수): 84톱니
gearA 회전수: 12.0톱니
gearB 회전수: 7.0톱니

연습문제 #22

  • 윤년 계산기를 만들어보자

윤년 조건

  • 연도가 4로 나누어떨어지고 100으로 나누어떨어지지 않으면 윤년이다.
  • 또는 연도가 400으로 나누어떨어지면 윤년이다.
year = int(input('연도 입력: '))

if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
    print('{}년: 윤년!!'.format(year))
else:
    print('{}년: 평년!!'.format(year))
    
#출력값 
연도 입력: 2024
2024: 윤년!!
profile
+database

0개의 댓글