[제로베이스] 데이터 사이언스 15기 - (05-07 파이썬 기초 스터디노트)

윤태호·2023년 5월 8일
0
post-thumbnail

오늘 수강한 강의 - 파이썬 기초 문제풀이 (59 ~ 64)

59 ~ 64 반복문

[1] 홀/짝수 구분 프로그램

for i in range(1, 101):
    if i <= 9:
        if i % 2 == 0:
            print('[{}]: 짝수' .format(i))
        else:
            print('[{}]: 홀수' .format(i))
    else:
        num10 = i // 10
        num1 = i % 10
        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))

[2] 1부터 사용자가 입력한 정수까지의 합, 홀수의 합, 짝수의 합, 팩토리얼 출력 프로그램

fNum = int(input('정수 입력: '))

1 부터 입력한 정수까지의 합

addSum = 0
for i in range(1, (fNum + 1)):
    addSum += i
addSumFormated = format(addSum, ',')
print('합 결과: {}' .format(addSumFormated))

홀수의 합

oddSum = 0
for i in range(1, (fNum + 1)):
    if i % 2 != 0:
        oddSum += i
oddSumFormated = format(oddSum, ',')
print('홀수 합 결과: {}' .format(oddSumFormated))

짝수의 합

everSum = 0
for i in range(1, (fNum + 1)):
    if i % 2 == 0:
        everSum += i
everSumFormated = format(everSum, ',')
print('짝수 합 결과: {}' .format(everSumFormated))

팩토리얼

factorialResult = 1
for i in range(1, (fNum + 1)):
    factorialResult *= i
factorialResultFormated = format(factorialResult, ',')
print('짝수 합 결과: {}' .format(factorialResultFormated))

[3] '*'를 이용하여 다양한 모양 출력

for i in range(1, 6):
    for j in range(i):
        print('*', end='')
    print()
for i1 in range(1, 6):
    for i2 in range(6 - i1 - 1):
        print(' ', end='')
    for i3 in range(i1):
        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()

[4] 2대 이상의 버스가 정차하는 시간대 출력

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 동시 정차', 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 동시 정차', end='')
            hour = 6 + i // 60
            min = i % 60
            print('\t{}:{}' .format(hour, min))
        elif i % busA == 0 and i % busC == 0:
            print('busA와 busC 동시 정차', end='')
            hour = 6 + i // 60
            min = i % 60
            print('\t{}:{}'.format(hour, min))
        elif i % busB == 0 and i % busC == 0:
            print('busB와 busC 동시 정차', end='')
            hour = 6 + i // 60
            min = i % 60
            print('\t{}:{}'.format(hour, min))

[5] 처음 맞물린 톱니가 최초로 다시 만나게 될떄까지의 톱니의 수, 각각의 바퀴 회전수 출력

  • 단 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(int(leastNum / gearATCnt)))
print('gearB 회전수: {}회전' .format(int(leastNum / gearBTCnt)))

[6] 윤년 계산기 프로그램

  • 연도가 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))

총평

재미있었던 부분

*을 사용하여 모양을 만드는 부분이 창의적이라는 생각이 들었고 가장 기억에 남는다

어려웠던 부분

2대 이상의 버스가 정차하는 시간대를 출력하는 문제와 톱니바퀴 문제가 확실히 복잡하고 헷갈리는 부분이었다

느낀점 및 내일 학습 계획

반복문의 응용 문제 풀이가 헷갈리고 어려운 것 같다
반복문을 중점적으로 복습해야겠다

profile
데이터 부트캠프 참여중

0개의 댓글