12.[python기초 문제풀이]반복문(6.8)

Sooyeon·2023년 6월 8일

Python

목록 보기
12/22
post-thumbnail

[python기초 문제풀이]

  • 반복문

반복문(01)

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
           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]: 짝수!
[3]: 홀수!
[4]: 짝수!
[10] 십의자리 : 홀수!!, 일의자리 : 0
[11] 십의자리 : 홀수!!, 일의자리 : 홀수
[12] 십의자리 : 홀수!!, 일의자리 : 짝수
...

➜ 9이하의 조건과,10이상의 조건 설정 후, 중첩조건 설정
➜ 십의 자리의 경우, 일의 자리가 0일경우는 조건 추가 설정 필요함

반복문(02)

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


Num =int(input('정수 입력 :'))
addNum=0


for i in range(1,(Num+1)):
    addNum+=i

addNumFormated= format(addNum,',')
print('합 결과 : {} '.format(addNumFormated))


oddSum=0

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

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

evenSum=0

for i in range(1,(Num+1)):
    if i % 2 ==0:
        evenSum+=i

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


facotoria=1

for i in range(1,(Num+1)):
    facotoria *= i


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

정수 입력 :10
합 결과 : 55 
홀수 합 결과 : 25 
짝수 합 결과 : 30 
팩토리얼 결과 : 3,628,800 

반복문(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()



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



for i1 in range(1, 6):
    for i2 in range(5 - i1):
        print(' ', end='')

    for n3 in range(i1 * 2 - 1):
        print('*', end='')

    print()



for i1 in range(1, 6):
    for i2 in range(i1 - 1):
        print(' ', end='')

    for n3 in range(11 - (i1 * 2)):
        print('*', end='')

    print()

반복문(04)

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

busA = 15
busB = 13
busC = 8

totalMin = 17 * 60
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))

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

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

# gearBTCnt가 gearATCnt보다 크다고 가정한다.

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('gearA: {}, gearB: {}'.format(gearA, gearB))

print('최초 만나는 톱니수(최소공배수): {}톱니'.format(leastNum))
print('gearA 회전수: {}회전'.format(int(leastNum / gearATCnt)))
print('gearB 회전수: {}회전'.format(int(leastNum / gearBTCnt)))

반복문(06)
윤년 구하기
연도가 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))
   
   

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

0개의 댓글