파이썬 공부중/파이썬 기초

파이썬 기초 문풀 02

책다니엘 2024. 2. 10. 00:22
lanScore = int(input('국어 점수 입력: '))
engScore = int(input('영어 점수 입력: '))
matScore = int(input('수학 점수 입력: '))
sciScore = int(input('과학 점수 입력: '))
hisScore = int(input('국사 점수 입력: '))
lanAverage = 85
engAverage = 82
matAverage = 89
sciAverage = 75
hisAverage = 94

averageTotal = lanAverage + engAverage + matAverage + sciAverage + hisAverage
totalAverage = int(averageTotal / 5)

totalScore = lanScore + engScore + matScore + sciScore + hisScore
aveScore = int(totalScore / 5)

print('총점: {}({}), 평균: {}({})'
      .format(totalScore, (totalScore - averageTotal), aveScore, int((aveScore - totalAverage))))
print('국어: {}({}), 영어: {}({}), 수학: {}({}), 과학: {}({}), 국사: {}({})'
      .format(lanScore, lanScore - lanAverage, engScore, engScore - engAverage, matScore, matScore - matAverage,
              sciScore, sciScore - sciAverage, hisScore, hisScore - hisAverage))
print('-' * 40)
print('국어 편차: {}({})'.format('+'*abs(lanScore-lanAverage),lanScore-lanAverage))
print('영어 편차: {}({})'.format('+'*abs(engScore-engAverage),engScore-engAverage))
print('수학 편차: {}({})'.format('-'*abs(matScore-matAverage),matScore-matAverage))
print('과학 편차: {}({})'.format('-'*abs(sciScore-sciAverage),sciScore-sciAverage))
print('국사 편차: {}({})'.format('-'*abs(hisScore-hisAverage),hisScore-hisAverage))
print('총점 편차: {}({})'.format('-'*abs(totalScore-averageTotal),totalScore-averageTotal))
print('평균 편차: {}({})'.format('-'*abs(aveScore-totalAverage),aveScore-totalAverage))
print('-' * 40)

# 출력 결과
# 국어 점수 입력: 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)
# ----------------------------------------
# 난수를 이용하여 가위, 바위, 보 게임을 만들어보자.

import random

num = random.randint(1, 2)
userNum = int(input('홀/짝 선택: 1.홀 \t 2.짝'))

if userNum == 1 and num == 1:
    print('빙고!! 홀수!!')
elif userNum == 2 and num == 1:
    print('실패!! 홀수!!')
elif userNum == 1 and num == 2:
    print('실패!! 짝수!!')
elif userNum == 2 and num == 2:
    print('빙고!! 짝수!!')

# 출력 결과
# 홀/짝 선택: 1.홀 	 2.짝1
# 실패!! 짝수!!


rpsNum = random.randint(1, 3)
userRpsNum = int(input('가위/바위/보 선택: 1.가위 \t 2.바위 \t 3.보'))
if (userRpsNum == 1 and rpsNum == 1) or (userRpsNum == 2 and rpsNum == 2) or (userRpsNum == 3 and rpsNum == 3):
    print('무승부')
elif (userRpsNum == 1 and rpsNum == 2) or (userRpsNum == 2 and rpsNum == 3) or (userRpsNum == 3 and rpsNum == 1):
    print('유저 패, 컴푸터 승')
else:
    print('유저 승, 컴퓨터 패')

# 출력 결과
# 가위/바위/보 선택: 1.가위 	 2.바위 	 3.보2
# 유저 승, 컴퓨터 패
# 아래 요금표를 참고해서 상수도 요금 계산기를 만들어보자.

category = int(input('업종 선택(1. 가정용\t 2. 대중탕용\t 3. 공업용)'))
usage = int(input('사용량 입력: '))
totalFee = 0
if category == 1:
    totalFee = 540 * usage
elif category == 2:
    if usage<=50:
        totalFee = 820 * usage
    elif 50<usage and usage<=300:
        totalFee = 1920 * usage
    elif 300<usage:
        totalFee = 2400 * usage
elif category == 3:
    if usage <= 500:
        totalFee = 240 * usage
    elif usage > 500:
        totalFee = 470 * usage
print('='*40)
print('상수도 요금표')
print('-'*40)
print('사용량\t\t : \t\t요금')
print('{} \t\t : \t {:,}원'.format(usage, totalFee))
print('='*40)

# 출력 결과
# 업종 선택(1. 가정용	 2. 대중탕용	 3. 공업용)3
# 사용량 입력: 270
# ========================================
# 상수도 요금표
# ----------------------------------------
# 사용량		 : 		요금
# 270 		 : 		 64,800원
# ========================================
import datetime

# 미세먼지 비상저감조치로 차량 운행제한 프로그램을 다음 내용에 맞게 만들어보자.

# 미세먼지 측정 수치가 150 이하면 차량5부제 실시
# 미세먼지 측정 수치가 150 초과면 차량2부제 실시
# 차량 2부제를 실시하더라도 영업용 차량은 5부제 실시
# 미세먼지 종류, 차량 종류, 차량 번호를 입력하면 운행 가능 여부 출력

dust = int(input('미세먼지 수치 입력: '))
carCategory = int(input('1. 승용차 \t 2. 영업용차'))
carNum = input('차량 번호 입력: ')
carNumRegulated = carNum[-1]

date = datetime.datetime.now()
oddArr = []
evenArr = []
for i in range(1,33, 2):
    oddArr.append('{:02d}'.format(i))
for i in range(2, 32, 2):
    evenArr.append('{:02d}'.format(i))

print('-' * 40)
print(date.strftime('%Y-%m-%d %H:%M:%S'))
print('-' * 40)

if carCategory == 2:
    print('차량 5부제 실시')
    if (date.strftime('%d') == '01' or date.strftime('%d') == '06' or date.strftime('%d') == '11' or date.strftime(
            '%d') == '16' or date.strftime('%d') == '21' or date.strftime('%d') == '26' or date.strftime(
        '%d') == '31') and (carNumRegulated == '1' or carNumRegulated == '6'):
        print('금일 운행 가능합니다!!')
    elif (date.strftime('%d') == '02' or date.strftime('%d') == '07' or date.strftime('%d') == '12' or date.strftime(
            '%d') == '17' or date.strftime('%d') == '22' or date.strftime('%d') == '27') and (
            carNumRegulated == '2' or carNumRegulated == '7'):
        print('금일 운행 가능합니다!!')
    elif (date.strftime('%d') == '03' or date.strftime('%d') == '08' or date.strftime('%d') == '13' or date.strftime(
            '%d') == '18' or date.strftime('%d') == '23' or date.strftime('%d') == '28') and (
            carNumRegulated == '3' or carNumRegulated == '8'):
        print('금일 운행 가능합니다!!')
    elif (date.strftime('%d') == '04' or date.strftime('%d') == '09' or date.strftime('%d') == '14' or date.strftime(
            '%d') == '19' or date.strftime('%d') == '24' or date.strftime('%d') == '29') and (
            carNumRegulated == '4' or carNumRegulated == '9'):
        print('금일 운행 가능합니다!!')
    elif (date.strftime('%d') == '05' or date.strftime('%d') == '10' or date.strftime(
            '%d') == '15' or date.strftime(
        '%d') == '20' or date.strftime('%d') == '25' or date.strftime('%d') == '30') and (
            carNumRegulated == '5' or carNumRegulated == '0'):
        print('금일 운행 가능합니다!!')
    else:
        print('차량 5부제로 금일 운행제한 대상 차량입니다!!')
elif dust <= 150:
    print('차량 5부제 실시')
    if (date.strftime('%d') == '01' or date.strftime('%d') == '06' or date.strftime('%d') == '11' or date.strftime(
            '%d') == '16' or date.strftime('%d') == '21' or date.strftime('%d') == '26' or date.strftime(
        '%d') == '31') and (carNumRegulated == '1' or carNumRegulated == '6'):
        print('금일 운행 가능합니다!!')
    elif (date.strftime('%d') == '02' or date.strftime('%d') == '07' or date.strftime('%d') == '12' or date.strftime(
            '%d') == '17' or date.strftime('%d') == '22' or date.strftime('%d') == '27') and (
            carNumRegulated == '2' or carNumRegulated == '7'):
        print('금일 운행 가능합니다!!')
    elif (date.strftime('%d') == '03' or date.strftime('%d') == '08' or date.strftime('%d') == '13' or date.strftime(
            '%d') == '18' or date.strftime('%d') == '23' or date.strftime('%d') == '28') and (
            carNumRegulated == '3' or carNumRegulated == '8'):
        print('금일 운행 가능합니다!!')
    elif (date.strftime('%d') == '04' or date.strftime('%d') == '09' or date.strftime('%d') == '14' or date.strftime(
            '%d') == '19' or date.strftime('%d') == '24' or date.strftime('%d') == '29') and (
            carNumRegulated == '4' or carNumRegulated == '9'):
        print('금일 운행 가능합니다!!')
    elif (date.strftime('%d') == '05' or date.strftime('%d') == '10' or date.strftime(
            '%d') == '15' or date.strftime(
        '%d') == '20' or date.strftime('%d') == '25' or date.strftime('%d') == '30') and (
            carNumRegulated == '5' or carNumRegulated == '0'):
        print('금일 운행 가능합니다!!')
    else:
        print('차량 5부제로 금일 운행제한 대상 차량입니다!!')
else:
    print('차량 2부제 실시')
    if date.strftime('%d') in oddArr:
        print('금일 운행 가능합니다!!')
    elif date.strftime('%d') in evenArr:
        print('금일 운행 가능합니다!!')
    else: print('차량 2부제로 금일 운행제한 대상 차량입니다!!')
print('-' * 40)

# 출력 결과
# 미세먼지 수치 입력: 145
# 1. 승용차 	 2. 영업용차1
# 차량 번호 입력: 5574
# ----------------------------------------
# 2024-02-07 16:31:05
# ----------------------------------------
# 차량 5부제 실시
# 차량 5부제로 금일 운행제한 대상 차량입니다!!
# ----------------------------------------

# 미세먼지 수치 입력: 270
# 1. 승용차 	 2. 영업용차1
# 차량 번호 입력: 1290
# ----------------------------------------
# 2024-02-07 16:33:42
# ----------------------------------------
# 차량 2부제 실시
# 차량 2부제로 금일 운행제한 대상 차량입니다!!
# ----------------------------------------

# 미세먼지 수치 입력: 170
# 1. 승용차 	 2. 영업용차1
# 차량 번호 입력: 5595
# ['01', '03', '05', '07', '09', '11', '13', '15', '17', '19', '21', '23', '25', '27', '29', '31']
# ['02', '04', '06', '08', '10', '12', '14', '16', '18', '20', '22', '24', '26', '28', '30']
# ----------------------------------------
# 2024-02-07 16:44:33
# ----------------------------------------
# 차량 2부제 실시
# 금일 운행 가능합니다!!
# ----------------------------------------
import random

ranNum = random.randint(1, 1000)
userNum = int(input('1에서 1000까지의 정수 입력: '))
cnt = 0

while ranNum != userNum:
    if ranNum < userNum:
        cnt += 1
        print('난수가 크다!')
        userNum = int(input('1에서 1000까지의 정수 입력:'))
    elif ranNum > userNum:
        cnt += 1
        print('난수가 작다!')
        userNum = int(input('1에서 1000까지의 정수 입력:'))
    elif ranNum == userNum:
        break

print('빙고!')
print('난수: {}, 시도 횟수: {}'.format(ranNum, cnt))

# 출력 결과
# 1에서 1000까지의 정수 입력: 500
# 난수가 크다!
# 1에서 1000까지의 정수 입력:250
# 난수가 크다!
# 1에서 1000까지의 정수 입력:125
# 난수가 크다!
# 1에서 1000까지의 정수 입력:75
# 난수가 크다!
# 1에서 1000까지의 정수 입력:35
# 난수가 크다!
# 1에서 1000까지의 정수 입력:20
# 난수가 크다!
# 1에서 1000까지의 정수 입력:10
# 난수가 크다!
# 1에서 1000까지의 정수 입력:5
# 난수가 크다!
# 1에서 1000까지의 정수 입력:2
# 난수가 크다!
# 1에서 1000까지의 정수 입력:1
# 빙고!
# 난수: 1, 시도 횟수: 9


# 실내온도를 입력하면 스마트에어컨 상태가 자동으로 설정되는 프로그램을 만들어 보자.
currTemperature = int(input('실내온도 입력:'))
status = ''
if currTemperature <= 18:
    status = 'OFF'
elif 18 < currTemperature <= 22:
    status = '매우 약'
elif 22 < currTemperature <= 24:
    status = '약'
elif 24< currTemperature <=26:
    status = '중'
elif 26< currTemperature <= 28:
    status = '강'
else: status = '매우 강'

print('에어컨: {}!!'.format(status))

# 출력 결과
# 실내온도 입력:19
# 에어컨: 매우 약!!
# 1부터 100까지의 정수 중 십의자리와 일의자리에 대해 각각 홀/짝수를 구분하는 프로그램을 만들어보자.

# divmod() 함수는 두 개의 인수를 받고, 첫 번째 인수를 두 번째 인수로 나누어서 몫과 나머지를 반환함

def isOdd(num):
    if num == 0:
        return '0'
    if num != 0:
        if divmod(num, 2)[1] == 0:
            return '짝수!!'
        elif divmod(num, 2)[1] != 0:
            return '홀수!!'


for i in range(1, 101):
    if len(str(i)) == 1:
        print('[{}]: {}'.format(i, isOdd(i)))
    elif len(str(i)) >= 2:
        print('[{}] 십의자리: {}, 일의자리: {}'.format(i, i // 10, isOdd(int(str(i)[len(str(i)) - 1]))))

# 출력 결과
# [1]: 홀수!!
# [2]: 짝수!!
# [3]: 홀수!!
# [4]: 짝수!!
# [5]: 홀수!!
# [6]: 짝수!!
# [7]: 홀수!!
# [8]: 짝수!!
# [9]: 홀수!!
# [10] 십의자리: 1, 일의자리: 0
# [11] 십의자리: 1, 일의자리: 홀수!!
# [12] 십의자리: 1, 일의자리: 짝수!!
# [13] 십의자리: 1, 일의자리: 홀수!!
# [14] 십의자리: 1, 일의자리: 짝수!!
# [15] 십의자리: 1, 일의자리: 홀수!!
# [16] 십의자리: 1, 일의자리: 짝수!!
# [17] 십의자리: 1, 일의자리: 홀수!!
# [18] 십의자리: 1, 일의자리: 짝수!!
# [19] 십의자리: 1, 일의자리: 홀수!!
# [20] 십의자리: 2, 일의자리: 0
# [21] 십의자리: 2, 일의자리: 홀수!!
# [22] 십의자리: 2, 일의자리: 짝수!!
# [23] 십의자리: 2, 일의자리: 홀수!!
# [24] 십의자리: 2, 일의자리: 짝수!!
# [25] 십의자리: 2, 일의자리: 홀수!!
# [26] 십의자리: 2, 일의자리: 짝수!!
# [27] 십의자리: 2, 일의자리: 홀수!!
# [28] 십의자리: 2, 일의자리: 짝수!!
# [29] 십의자리: 2, 일의자리: 홀수!!
# [30] 십의자리: 3, 일의자리: 0
# [31] 십의자리: 3, 일의자리: 홀수!!
# [32] 십의자리: 3, 일의자리: 짝수!!
# [33] 십의자리: 3, 일의자리: 홀수!!
# [34] 십의자리: 3, 일의자리: 짝수!!
# [35] 십의자리: 3, 일의자리: 홀수!!
# [36] 십의자리: 3, 일의자리: 짝수!!
# [37] 십의자리: 3, 일의자리: 홀수!!
# [38] 십의자리: 3, 일의자리: 짝수!!
# [39] 십의자리: 3, 일의자리: 홀수!!
# [40] 십의자리: 4, 일의자리: 0
# [41] 십의자리: 4, 일의자리: 홀수!!
# [42] 십의자리: 4, 일의자리: 짝수!!
# [43] 십의자리: 4, 일의자리: 홀수!!
# [44] 십의자리: 4, 일의자리: 짝수!!
# [45] 십의자리: 4, 일의자리: 홀수!!
# [46] 십의자리: 4, 일의자리: 짝수!!
# [47] 십의자리: 4, 일의자리: 홀수!!
# [48] 십의자리: 4, 일의자리: 짝수!!
# [49] 십의자리: 4, 일의자리: 홀수!!
# [50] 십의자리: 5, 일의자리: 0
# [51] 십의자리: 5, 일의자리: 홀수!!
# [52] 십의자리: 5, 일의자리: 짝수!!
# [53] 십의자리: 5, 일의자리: 홀수!!
# [54] 십의자리: 5, 일의자리: 짝수!!
# [55] 십의자리: 5, 일의자리: 홀수!!
# [56] 십의자리: 5, 일의자리: 짝수!!
# [57] 십의자리: 5, 일의자리: 홀수!!
# [58] 십의자리: 5, 일의자리: 짝수!!
# [59] 십의자리: 5, 일의자리: 홀수!!
# [60] 십의자리: 6, 일의자리: 0
# [61] 십의자리: 6, 일의자리: 홀수!!
# [62] 십의자리: 6, 일의자리: 짝수!!
# [63] 십의자리: 6, 일의자리: 홀수!!
# [64] 십의자리: 6, 일의자리: 짝수!!
# [65] 십의자리: 6, 일의자리: 홀수!!
# [66] 십의자리: 6, 일의자리: 짝수!!
# [67] 십의자리: 6, 일의자리: 홀수!!
# [68] 십의자리: 6, 일의자리: 짝수!!
# [69] 십의자리: 6, 일의자리: 홀수!!
# [70] 십의자리: 7, 일의자리: 0
# [71] 십의자리: 7, 일의자리: 홀수!!
# [72] 십의자리: 7, 일의자리: 짝수!!
# [73] 십의자리: 7, 일의자리: 홀수!!
# [74] 십의자리: 7, 일의자리: 짝수!!
# [75] 십의자리: 7, 일의자리: 홀수!!
# [76] 십의자리: 7, 일의자리: 짝수!!
# [77] 십의자리: 7, 일의자리: 홀수!!
# [78] 십의자리: 7, 일의자리: 짝수!!
# [79] 십의자리: 7, 일의자리: 홀수!!
# [80] 십의자리: 8, 일의자리: 0
# [81] 십의자리: 8, 일의자리: 홀수!!
# [82] 십의자리: 8, 일의자리: 짝수!!
# [83] 십의자리: 8, 일의자리: 홀수!!
# [84] 십의자리: 8, 일의자리: 짝수!!
# [85] 십의자리: 8, 일의자리: 홀수!!
# [86] 십의자리: 8, 일의자리: 짝수!!
# [87] 십의자리: 8, 일의자리: 홀수!!
# [88] 십의자리: 8, 일의자리: 짝수!!
# [89] 십의자리: 8, 일의자리: 홀수!!
# [90] 십의자리: 9, 일의자리: 0
# [91] 십의자리: 9, 일의자리: 홀수!!
# [92] 십의자리: 9, 일의자리: 짝수!!
# [93] 십의자리: 9, 일의자리: 홀수!!
# [94] 십의자리: 9, 일의자리: 짝수!!
# [95] 십의자리: 9, 일의자리: 홀수!!
# [96] 십의자리: 9, 일의자리: 짝수!!
# [97] 십의자리: 9, 일의자리: 홀수!!
# [98] 십의자리: 9, 일의자리: 짝수!!
# [99] 십의자리: 9, 일의자리: 홀수!!
# [100] 십의자리: 10, 일의자리: 0
# 1부터 사용자가 입력한 정수까지의 합, 홀수의 합, 짝수의 합 그리고 팩토리얼을 출력하는 프로그램을 만들어보자.

userInt = int(input('정수 입력: '))
temp = 10

totalSum = 0
oddSum = 0
evenSum = 0
factSum = 1

for i in range(1, userInt + 1):
    totalSum += i

for i in range(1, userInt + 1, 2):
    oddSum += i

for i in range(0, userInt + 1, 2):
    evenSum += i

for i in range(1, userInt + 1):
    factSum *= i

print('합 결과 : {}\n홀수 합 결과 : {}\n짝수 합 결과 : {}\n팩토리얼 결과 : {:,}'.format(totalSum, oddSum, evenSum, factSum))

# 출력 결과
# 정수 입력: 9
# 합 결과 : 45
# 홀수 합 결과 : 25
# 짝수 합 결과 : 20
# 팩토리얼 결과 : 362,880
# '*'를 이용해서 다음과 같이 다양한 모양을 출력해보자.

starCnt = 0
blankCnt = 0

# 1번 그림
print('1번 그림')
starCnt = 5
for i in range(starCnt + 1):
    print('*' * i)
print('=' * 30)

# 2번 그림
print('2번 그림')
blankCnt = 5
for i in range(blankCnt):
    if blankCnt > 1:
        print(' ' * (blankCnt - 2), '*' * (i + 1))
        blankCnt -= 1
    elif blankCnt == 1:
        print('*' * (i + 1))
        blankCnt -= 1
print('=' * 30)

# 3번 그림
print('3번 그림')
starCnt = 5
for i in range(starCnt):
    print('*' * starCnt)
    starCnt -= 1
print('=' * 30)

# 4번 그림
print('4번 그림')
starCnt = 5
for i in range(starCnt):
    print('*' * (i))
for i in range(starCnt):
    print('*' * starCnt)
    starCnt -= 1
print('=' * 30)

# 5번 그림
print('5번 그림')

for i in range(5):
    starArr = [' '] * 5
    starArr[i] = '*'
    result = "".join(starArr)
    print(result)

print('=' * 30)

# 6번 그림
print('6번 그림')

starCnt = 5
for i in range(starCnt):
    starArr = [' '] * starCnt
    starArr[starCnt - 1] = '*'
    result = "".join(starArr)
    starCnt -= 1
    print(result)

print('=' * 30)

# 7번 그림
print('7번 그림')

blankCnt = 5
for i in range(blankCnt):
    print(' ' * (blankCnt - 1), end='')
    print('*' * (2*i + 1), end='')
    print(' ' * (blankCnt - 1))
    blankCnt -= 1

blankCnt = 5
for i in range(blankCnt):
    print(' ' * (i), end='')
    print('*' * (2*blankCnt - 1), end='')
    print(' ' * (i))
    blankCnt -= 1

# 출력 결과
# 1번 그림
#
# *
# **
# ***
# ****
# *****
# ==============================
# 2번 그림
#     *
#    **
#   ***
#  ****
# *****
# ==============================
# 3번 그림
# *****
# ****
# ***
# **
# *
# ==============================
# 4번 그림
#
# *
# **
# ***
# ****
# *****
# ****
# ***
# **
# *
# ==============================
# 5번 그림
# *
#  *
#   *
#    *
#     *
# ==============================
# 6번 그림
#     *
#    *
#   *
#  *
# *
# ==============================
# 7번 그림
#     *
#    ***
#   *****
#  *******
# *********
# *********
#  *******
#   *****
#    ***
#     *
# 집 앞 버스 정류장에서 학교까지 가는 버스 A, B, C의 운행정보가 다음과 같을 때,
# 2대 이상의 버스가 정차하는 시간대를 출력해보자.
# 버스 A, B 운행 정보
# - 오전 6시 첫차 : 오후 23시 운행 종료
# - 버스A: 15분 간격 운행
# - 버스B: 13분 간격 운행
#
# 버스 C 운행 정보
# - 6시 20분 첫차: 오후 22시 운행 종료
#  -버스C: 8분 간격 운행

busA = 360
busB = 360
busC = 380
busAArr = []
busBArr = []
busCArr = []
k = 0
j = 0
l = 0
while busA < 1380:
    busAArr.append(busA)
    busA += (15)

while busB < 1380:
    busBArr.append(busB)
    busB += (13)

while busC < 1320:
    busCArr.append(busC)
    busC += (8)

tempArr = []

# print(busAArr)
# print(busBArr)
# print(busCArr)
for i in range(len(busAArr)):
    for elem in busBArr:
        if busAArr[i] == elem:
            timeVal = busAArr[i]
            message = 'busA와 busB 동시 정차!!\t {}:{}'.format(busAArr[i] // 60, busAArr[i] % 60)
            tempDic = {'timeVal': timeVal, 'message': message}
            tempArr.append(tempDic)

for i in range(len(busBArr)):
    for elem in busCArr:
        if busBArr[i] == elem:
            timeVal = busBArr[i]
            message = 'busB와 busC 동시 정차!!\t {}:{}'.format(busBArr[i] // 60, busBArr[i] % 60)
            tempDic = {'timeVal': timeVal, 'message': message}
            tempArr.append(tempDic)

for i in range(len(busCArr)):
    for elem in busAArr:
        for elem2 in busBArr:
            if busCArr[i] == elem and elem == elem2:
                timeVal = busCArr[i]
                message = 'busA와 busB, busC 동시 정차!!\t {}:{}'.format(busCArr[i] // 60, busCArr[i] % 60)
                tempDic = {'timeVal': timeVal, 'message': message}
                tempArr.append(tempDic)
            else:
                if busCArr[i] == elem:
                    timeVal = busCArr[i]
                    message = 'busC와 busA 동시 정차!!\t {}:{}'.format(busCArr[i] // 60, busCArr[i] % 60)
                    tempDic = {'timeVal': timeVal, 'message': message}
                    tempArr.append(tempDic)

sorted_tempArr = sorted(tempArr, key=lambda x: x['timeVal'])
unique_sorted_tempArr = []
seen = set()
for d in sorted_tempArr:
    t = tuple(d.items())
    if t not in seen:
        unique_sorted_tempArr.append(d)
        seen.add(t)


for item in unique_sorted_tempArr:
    print(item['message'])

# 출력 결과
# busA와 busB 동시 정차!!	 6:0
# busB와 busC 동시 정차!!	 6:52
# busC와 busA 동시 정차!!	 7:0
# busB와 busC 동시 정차!!	 8:36
# busC와 busA 동시 정차!!	 9:0
# busA와 busB 동시 정차!!	 9:15
# busB와 busC 동시 정차!!	 10:20
# busC와 busA 동시 정차!!	 11:0
# busB와 busC 동시 정차!!	 12:4
# busA와 busB 동시 정차!!	 12:30
# busC와 busA 동시 정차!!	 13:0
# busB와 busC 동시 정차!!	 13:48
# busC와 busA 동시 정차!!	 15:0
# busB와 busC 동시 정차!!	 15:32
# busA와 busB 동시 정차!!	 15:45
# busC와 busA 동시 정차!!	 17:0
# busB와 busC 동시 정차!!	 17:16
# busA와 busB 동시 정차!!	 19:0
# busB와 busC 동시 정차!!	 19:0
# busC와 busA 동시 정차!!	 19:0
# busA와 busB, busC 동시 정차!!	 19:0
# busB와 busC 동시 정차!!	 20:44
# busC와 busA 동시 정차!!	 21:0
# busA와 busB 동시 정차!!	 22:15
# 톱니가 각각 n1개와 n2개의 톱니바퀴가 서로 맞물려 회전할 때, 회전을 시작한 후 처음 맞물린 톱니가 최초로 다시 만나게 될 때까지의
# 톱니의 수와 각각의 바퀴 회전 수를 출력해보자.
# 단, n2는 n1보다 크다.

gear1 = int(input('GearA 톱니수 입력: '))
gear2 = int(input('GearB 톱니수 입력: '))

gear1Arr = []
gear2Arr = []
stop = True
i = 1
while stop:
    print('gearA: {}, gearB: {}'.format(gear1 * i, gear2 * i))
    gear1Arr.append(gear1 * i)
    gear2Arr.append(gear2 * i)

    for item in gear1Arr:
        for item2 in gear2Arr:
            if item2 == item:
                print('최초 만나는 톱니수(최소공배수): {}톱니\ngearA 회전수: {}회전\ngearB 회전수: {}회전'.format(item, gear1Arr.index(item) + 1,
                                                                                     gear2Arr.index(item2) + 1))
                stop = False
    i += 1

# 출력 결과
# GearA 톱니수 입력: 7
# GearB 톱니수 입력: 12
# gearA: 7, gearB: 12
# gearA: 14, gearB: 24
# gearA: 21, gearB: 36
# gearA: 28, gearB: 48
# gearA: 35, gearB: 60
# gearA: 42, gearB: 72
# gearA: 49, gearB: 84
# gearA: 56, gearB: 96
# gearA: 63, gearB: 108
# gearA: 70, gearB: 120
# gearA: 77, gearB: 132
# gearA: 84, gearB: 144
# 최초 만나는 톱니수(최소공배수): 84톱니
# gearA 회전수: 12
# gearB 회전수: 7
# 윤년 계산기를 만들어보자.
# 윤년 조건
# - 연도가 4로 나누어떨어지고 100으로 나누어떨어지지 않으면 윤년이다.
# 또는 연도가 400으로 나누어떨어지면 윤년이다.

year = int(input('연도 입력: '))
isLeapYear = ''
if (year % 4 == 0 and year % 100 != 0 ) or (year % 400 == 0):
    isLeapYear = '윤년!!'
else: isLeapYear = '평년'

print('{}년: {}'.format(year, isLeapYear))

# 출력 결과
# 연도 입력: 2024
# 2024년: 윤년
# 연도 입력: 2021
# 2021년: 평년

'파이썬 공부중 > 파이썬 기초' 카테고리의 다른 글

파이썬 기초 문풀 01  (1) 2024.02.10
파이썬 기초 정리 03  (2) 2024.02.04
파이썬 기초 정리 02  (0) 2024.02.04
파이썬 기초 정리 01  (1) 2024.02.03
javascript와 python의 for문의 차이:  (0) 2024.02.03