Day8. 파이썬 문제풀이 (4)

Junghwan Park·2023년 4월 15일
0

스터디노트

목록 보기
9/54

반복문(01)

  • 1부터 100까지 정수 중 십의자리와 일의자리에 대해 각각 홀/짝수를 구분하는 프로그램을 만들어보자.
    → 시속 50km 이하 -> 안전속도 준수!
    → 시속 50km 초과 -> 안전속도 위반 과태료 50,000원 부과 대상!!
# 먼저 1~9 와 10~100으로 나눈다

for i in range(1,101,1):
    if i <= 9:  # 10미만
        if i % 2 == 0:
            print('[{}]: 짝수!'.format(i))
        else:
            print('[{}]: 홀수!'.format(i))
    else:   # 10이상
        num10 = i // 10 # 10의자리
        num1 = i % 10   # 1의자리
        result10 = ''

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

        result1 = '0'
        if num1 != 0:   # 1의 자리가 0이 아닐 때 홀짝을 나눈다
            if num1 % 2 ==0:
                result1 = '짝수'
            else:
                result1 = '홀수'

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

반복문(02)

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

addSum = 0
for i in range(1, (fNum + 1)):
    addSum += i

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

oddSum = 0  # 홀수 합
for i in range(1, (fNum + 1)):
    if i % 2 != 0:
        oddSum += i

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

evenSum = 0  # 짝수 합
for i in range(1, (fNum + 1)):
    if i % 2 == 0:
        evenSum += i

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

factorialResult = 1 # 팩토리얼 계산
for i in range(1, (fNum + 1)):
    factorialResult *= i

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

반복문(03)

  • '*'를 이용해서 다음과 같이 다양한 모양을 출력해보자.
###############################################################
# 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()
###############################################################

추가적으로 해볼 것 !


반복문(04)

  • 집 앞 버스 정류장에서 학교까지 가는 버스 A, B, C의 운행정보가 다음과 같을 때, 2대 이상의 버스가 정차하는 시간대를 출력해보자.
    ㆍ버스 A, B 운행정보
    → 오전 6시 첫차 : 오후 23시 운행 종료
    → 버스A : 15분 간격 운행
    → 버스B : 13분 간격 운행

ㆍ버스 C 운행정보
→ 6시 20분 첫차 : 오후 22시 운행 종료
→ 버스C : 8분 간격 운행

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('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))

반복문(05)

  • 톱니가 각각 n1개와 n2개의 톱니바퀴가 서로 맞물려 회전할 때, 회전을 시작한 후 처음 맞물린 톱니가
    최초로 다시 만나게 될 때까지의 톱니의 수와 각각의 바퀴 회전수를 출력해보자. (단, n2는 n1보다 크다.)

최소 공배수 구하는 느낌

gearATCnt = int(input('GearA 톱니수 입력 : '))
gearBTCnt = int(input('GearB 톱니수 입력 : '))

gearA = 0
gearB = 0
leastNum = 0

# 조건에 의한 반복이므로 while이 적절하다

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)))

반복문(06)

  • 윤년 계산기를 만들어보자.
    ㆍ 윤년 조건
    → 연도가 4로 나누어 떨어지고 100으로 나누어 떨어지지 않으면 윤년이다. # and 연산
    → 또는 연도가 400으로 나누어 떨어지면 윤년이다. # or 연산
year = int(input('연도 입력 : '))
#
# if ((year % 4 == 0) and (year % 100 != 0) or (year % 400 == 0)):
#     print('{}년 : 윤년!!'.format(year))
# else:
#     print('{}년 : 평년!!'.format(year))

for year in range(2023, (2023+101)):
    if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
        print('{}년 : 윤년!!'.format(year))
    else:
        print('{}년 : 평년!!'.format(year))

이 글은 제로베이스 데이터 취업 스쿨의 강의자료 일부를 발췌하여 작성되었습니다.

profile
안녕하세요 반갑습니다^^

0개의 댓글