- 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))
- 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, ',')))
- '*'를 이용해서 다음과 같이 다양한 모양을 출력해보자.
###############################################################
# 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()
###############################################################
추가적으로 해볼 것 !
- 집 앞 버스 정류장에서 학교까지 가는 버스 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))
- 톱니가 각각 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)))
- 윤년 계산기를 만들어보자.
ㆍ 윤년 조건
→ 연도가 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))
이 글은 제로베이스 데이터 취업 스쿨의 강의자료 일부를 발췌하여 작성되었습니다.