Python 실습(반복문)

dumbbelldore·2024년 11월 6일
0

zero-base 33기

목록 보기
6/97

1. 홀수, 짝수 구분 프로그램

  • 1부터 100까지의 정수에 대하여, 10의 자리와 1의 자리의 수에 대해 각각 홀수/짝수를 구분하여 출력하는 프로그램을 만드시오.
for num in range(1, 101):
    if num < 10:
        print(f"{num}: {'홀수' if num % 2 == 1 else '짝수'}")

    elif (num >=10) and (num < 100):
        num_10 = num // 10
        num_1 = num % 10
        print(f"{num}: '10의 자리': {'홀수' if num_10 % 2 == 1 else '짝수'}, '1의 자리: {'홀수' if num_1 % 2 == 1 else '짝수'}")

    else:
        num_10 = num % 100 // 10
        num_1 = num % 100 % 10
        print(f"{num}: '10의 자리': {'홀수' if num_10 % 2 == 1 else '짝수'}, '1의 자리: {'홀수' if num_1 % 2 == 1 else '짝수'}")

# 출력예시
# 1: 홀수
# 2: 짝수
# 3: 홀수
# (중략)
# 10: '10의 자리': 홀수, '1의 자리: 짝수
# 11: '10의 자리': 홀수, '1의 자리: 홀수
# 12: '10의 자리': 홀수, '1의 자리: 짝수
# 13: '10의 자리': 홀수, '1의 자리: 홀수
# (중략)
# 98: '10의 자리': 홀수, '1의 자리: 짝수
# 99: '10의 자리': 홀수, '1의 자리: 홀수
# 100: '10의 자리': 짝수, '1의 자리: 짝수

2. 정수 합, 홀수 합, 짝수 합, 팩토리얼 출력 프로그램

  • 사용자로부터 정수를 입력받아 1 부터 입력받은 정수까지의 모든 수의 합, 홀수의 합, 짝수의 합 및 팩토리얼 결과 값을 출력하는 프로그램을 만드시오.
int_sum = 0
odd_sum = 0
evn_sum = 0
fct_res = 1

user_num = int(input("1 보다 큰 정수를 입력하세요: "))
assert user_num > 1 and type(user_num) == int, "올바른 입력이 아닙니다."

for i in range(1, user_num + 1):
    int_sum += i

for i in range(1, user_num + 1):
    if i % 2 == 1:
        odd_sum += i

for i in range(1, user_num + 1):
    if i % 2 == 0:
        evn_sum += i

for i in range(1, user_num + 1):
    fct_res *= i

print("=" * 30)
print(f"모든 수의 합: {int_sum:d}")
print(f"홀수의 합: {odd_sum:d}")
print(f"짝수의 합: {evn_sum:d}")
print(f"팩토리얼 결과값: {fct_res:,d}")

# 출력예시
# 1 보다 큰 정수를 입력하세요: 10
# ==============================
# 모든 수의 합: 55
# 홀수의 합: 25
# 짝수의 합: 30
# 팩토리얼 결과값: 3,628,800

3. 마름모 출력 프로그램

  • for문을 이용하여 다음 그림과 같이 마름모가 출력되도록 프로그램을 만드시오.
for i in range(1, 10):
    
    # 5줄 이전
    if i <= 5:
        for j in range(5-i):
            print(' ', end='')
        for k in range(i*2-1):
            print('*', end='')
    
    # 5줄 이후
    else:
        for j in range(i-5):
            print(' ', end='')
        for k in range((10-i)*2-1):
            print('*', end='')

    print()
    
# 출력예시
#     *
#    ***
#   *****
#  *******
# *********
#  *******
#   *****
#    ***
#     *

4. 버스 정차 시간대 예측 프로그램

  • 집 앞 버스 정류장에서 학교까지 가는 버스 A, B, C의 운행정보가 다음과 같을 때, 2대 이상의 버스가 동시에 정차하는 시간대를 출력하는 프로그램을 만드시오.
    - 버스 A, B: 첫차(오전 6시), 막차(오후 11시) 기준 각각 15분, 13분 간격으로 운행
    • 버스 C: 첫차(오전 6시 20분), 막차(오후 10시) 기준 8분 간격으로 운행
bus_a = 15
bus_b = 13
bus_c = 8

tot_min = 60 * 17 # 1020분 (06시-23시)

for min in range(tot_min + 1):

    # 버스 A와 B만 운행하는 시간
    if (min < 20) or (min > tot_min - 60):
        if (min % bus_a == 0) and (min % bus_b == 0):
            print(f"버스 A, 버스 B 동시 정차 ({min//60 + 6:02d}:{min%60:02d})")

    # 모든 버스가 운행하는 시간
    else:
        # 모든 버스 도착
        if (min % bus_a == 0) and (min % bus_b == 0) and (min % bus_c == 0):
            print(f"모든 버스 동시 정차 ({min//60 + 6:02d}:{min%60:02d})")

        # 버스 A와 B만 도착
        if (min % bus_a == 0) and (min % bus_b == 0):
            print(f"버스 A, 버스 B 동시 정차 ({min//60 + 6:02d}:{min%60:02d})")

        # 버스 B와 C만 도착
        if (min % bus_b == 0) and (min % bus_c == 0):
            print(f"버스 B, 버스 C 동시 정차 ({min//60 + 6:02d}:{min%60:02d})")

        # 버스 A와 C만 도착
        if (min % bus_a == 0) and (min % bus_c == 0):
            print(f"버스 A, 버스 C 동시 정차 ({min//60 + 6:02d}:{min%60:02d})")
            
# 출력예시
# 버스 A, 버스 B 동시 정차 (06:00)
# 버스 B, 버스 C 동시 정차 (07:44)
# 버스 A, 버스 C 동시 정차 (08:00)
# 버스 A, 버스 B 동시 정차 (09:15)
# 버스 B, 버스 C 동시 정차 (09:28)
# 버스 A, 버스 C 동시 정차 (10:00)
# (중략)
# 버스 B, 버스 C 동시 정차 (19:52)
# 버스 A, 버스 C 동시 정차 (20:00)
# 버스 B, 버스 C 동시 정차 (21:36)
# 버스 A, 버스 C 동시 정차 (22:00)
# 버스 A, 버스 B 동시 정차 (22:15)

5. 톱니바퀴 회전계산 프로그램

  • 톱니가 각각 a, b개인 두 톱니바퀴가 서로 맞물려 회전한다. 각 톱니 변수를 사용자로부터 입력받아, 회전을 시작한 후 처음 맞물린 톱니가 다시 최초로 만날 때 까지 맞물린 톱니의 수와 각 톱니의 회전 수를 출력하는 프로그램을 만드시오.
gear_a = int(input("기어 A의 톱니 수 입력: "))
gear_b = int(input("기어 B의 톱니 수 입력: "))
lcm = 0

for num in range(max(gear_a, gear_b), (gear_a * gear_b) + 1):
    if (num % gear_a == 0) and (num % gear_b) == 0:
        lcm = num
        break

print("-"*30)
print(f"맞물린 톱니의 수 (최소공배수): {lcm}")
print(f"기어 A의 회전 수: {lcm // gear_a}")
print(f"기어 B의 회전 수: {lcm // gear_b}")

# 출력예시
# 기어 A의 톱니 수 입력: 7
# 기어 B의 톱니 수 입력: 12
# ------------------------------
# 맞물린 톱니의 수 (최소공배수): 84
# 기어 A의 회전 수: 12
# 기어 B의 회전 수: 7

6. 윤년 계산 프로그램

  • 윤년의 조건은 '연도가 4로 나누어 떨어지되, 100으로 나누어 떨어지지 않아야 한다. 단, 연도가 400으로 나누어 떨어지면 윤년에 해당한다'이다. 연도 입력 시 윤년 여부를 알려주는 프로그램을 만드시오.
while True:

    user_year = int(input("연도를 입력하세요: "))

    if (user_year % 4 == 0 and user_year % 100 != 0) or (user_year % 400 ==0):
        print(f"{user_year}년은 윤년에 해당됩니다.")

    else:
        print(f"{user_year}년은 윤년이 아닙니다.")

# 출력예시
# 연도를 입력하세요: 2021
# 2021년은 윤년이 아닙니다.
# 연도를 입력하세요: 2024
# 2024년은 윤년에 해당됩니다.
# 연도를 입력하세요: 2035
# 2035년은 윤년이 아닙니다.
# 연도를 입력하세요: 2040
# 2040년은 윤년에 해당됩니다.
# 연도를 입력하세요: 2300
# 2300년은 윤년이 아닙니다.
# 연도를 입력하세요: 2400
# 2400년은 윤년에 해당됩니다.

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

profile
데이터 분석, 데이터 사이언스 학습 저장소

0개의 댓글