
미세먼지(microdust) 비상저감조치로 차량 운행제한 프로그램
- 미세먼지 특정 수치가 150이하면 차량 5부제 실시 (1,6 / 2,7 / 3,8 / 4,9 / 5,0) - 미세먼지 특정 수치가 150초과면 차량 2부제 실시 (홀수/짝수로 운행 제한) - 차량 2부제를 실시하더라도 영업용 차량은 5부제 실시 - 미세먼지 수차, 차량 종류, 차량 번호를 입력하면 운행 가능 여부 출력
import datetime
today = datetime.datetime.today()
day = today.day
limitDust = 150
mdFigure = int(input('미세먼지 수치 입력 : ')) ⬅# 170 입력
carType = int(input('차량 종류 선택 (1.승용차 2.영업용차) : ')) ⬅# 1
carNum = # int(input('차량 번호 입력 : ')) ⬅# 8524
carEndNum = carNum % 10
>>> print('-' * 40)
>>> print('', today)
>>> print('-' * 40)
if mdFigure > limitDust and carType == 1:
if (day % 2) == (carNum % 2):
>>> print(' 차량 2부제 적용')
>>> print(' 차량 2부제로 금일 운행제한 대상 차량입니다.')
else:
>>> print(' 금일 운행 가능합니다!!')
if (mdFigure > limitDust and carType == 2) or (mdFigure <= limitDust):
if (day % 5) == (carNum % 5):
>>> print(' 차량 5부제 적용')
>>> print(' 차량 5부제로 금일 운행제한 대상 차량입니다.')
else:
>>> print(' 금일 운행 가능합니다!!')
>>> print('-' * 40)
# 실행결과
# ----------------------------------------
# 2023-12-06 18:34:02.588781
# ----------------------------------------
# 차량 2부제 적용
# 차량 2부제로 금일 운행제한 대상 차량입니다.
# ----------------------------------------
컴퓨터가 난수를 발생하면 사용가 맞추는 게임
- PC가 난수(1~1000)를 생성하고 사용자는 숫자(정수)를 입력한다. - 사용자가 난수를 맞추면 게임이 종료된다. - 만약, 못 맞추면 난수와 사용자 숫자의 크고 작음을 출력한 후 사용자에게 다시 입력할 기회를 준다. - 최종적으로 사용자가 시도한 횟수를 출력한다. 💡 'random' 모듈을 가져와 난수를 생성한다. 정수인 난수를 생성하기 위해 'randint(start, end)'함수를 사용
import random
rNum = random.randint(1, 1000) ⭐
tryCnt = 0
gameFlag = True
while gameFlag:
tryCnt += 1
userNum = int(input('1에서 1,000까지의 정수 입력 : '))
if rNum == userNum:
print('빙고!')
gameFlag = False
else:
if rNum > userNum:
print('난수가 크다. Up~!!')
else:
print('난수가 작다. Down!')
print('난수 : {}, 시도 횟수 : {}'.format(rNum, tryCnt))
별찍기
💡 처음 for문의 range() 범위에서 첫 줄부터 짹어낼 공백의 개수와 별의 개수를 파악해 중첩 for문을 작성한다.
for i in range(1, 10):
if i <= 5: # 1 ~ 5
for j1 in range(5 - i):
print(' ', end='')
for j2 in range(i * 2 - 1):
print('*', end='')
print()
else: # 6 ~ 9
for j1 in range(i - 5): # 1, 2, 3, 4
print(' ', end='')
for j2 in range(19 - (i * 2)): # 7, 5, 3, 1
print('*', end='')
print()
톱니가 각각 n1개와 n2개의 톱니바퀴가 서로 맞물려 회전할 때, 회전을 시작한 후 처음 맞물린 톱니가 최초로 다시 만나게 될 때까지의 톱니의 수와 각각의 바퀴 회전수를 출력한다.
💡 두 바퀴수의 최소공배수를 구한다. 💡 두 바퀴수를 비교해 큰 것은 기준으로 사용하고 작은 것은 Step으로 사용한다.
# 각 톱니의 전체 바퀴수
gearATcnt = int(input('Gear A 톱니수 입력 : ')) ⬅# 12 입력
gearBTcnt = int(input('Gear B 톱니수 입력 : ') ⬅# 7
# 기준과 단계로 쓸 바퀴수 결정
stdGear = gearATcnt if gearATcnt > gearBTcnt else gearBTcnt
stepGear = gearATcnt if gearATcnt < gearBTcnt else gearBTcnt
accumulate = stdGear
lcm = 0 ⭐ # the least[lowest] common multiple, 최소공배수
while True:
if lcm != 0:
break
if accumulate % stepGear == 0:
lcm = accumulate
print(f'lcm: {lcm}')
else:
accumulate += stdGear
>>> print('최초로 다시 만나는 톱니수(최소공배수) : {}번째 톱니'.format(lcm))
>>> print('Gear A 회전수 : {}회전'.format(lcm // gearATcnt))
>>> print('Gear B 회전수 : {}회전'.format(lcm // gearBTcnt))
# 실행결과
# 최초로 다시 만나는 톱니수(최소공배수) : 84번째 톱니
# Gear A 회전수 : 7회전
# Gear B 회전수 : 12회전
윤년 계산기
< 윤년 조건 > - 연도가 4로 나누어 떨어지고 100으로 나누어 떨어지지 않으면 윤년이다. - 또는 연도가 400으로 나누어 떨어지면 윤년이다.
targetYear = int(input('연도 입력 : '))
if (targetYear % 4 == 0 and targetYear % 100 != 0) or (targetYear % 400 == 0):
print('{}년: 윤년!!'.format(targetYear))
else:
print('{}년: 평년'.format(targetYear))