2023. 3. 12. 14:59ㆍ카테고리 없음
조건문 ~반복문 (56강~64강)
# 56강 조건문(04)
조건문을 이용해서 프로그램의 실행을 분기한다.
> 아래의 요금표를 참고해서 상수도 요금 계산기를 만들어보자.
part = int(input('업종 선택(1.가정용 2. 대중탕용 3.공업용): '))
userWater = int(input('사용량 입력:' ))
unitPrice = 0
if part == 1:
unitPrice = 540
elif part == 2:
if userWater <= 50:
unitPrice = 820
elif userWater > 50 and userWater <= 300:
unitPrice = 1920
elif userWater > 300:
unitPrice = 2400
elif part == 3:
if userWater <= 500:
unitPrice = 240
else:
unitPrice = 470
print('='*30)
print('상수도 요금표')
print('-'*30)
print('사용량\t :\t 요금')
userPrice = userWater * unitPrice
print('{}\t:\t{}원'.format(userWater,userPrice))
print('='*30)
# 57강 조건문(05)
미세먼지 비상저감조치로 차량 운행제한 프로그램을 다음 내용에 맞게 만들어보자.
중첩 조건문 사용,
import datetime
today = datetime.datetime.today() # 연월일 시분초
day = today.day
limitDust = 150 # 미세먼지 수치 150 기준으로( 이하면 5부제, 초과면 5부제)
dustNum = int(input('미세먼지 수치 입력: '))
carType = int(input('차량 종류 선택: 1.승용차 2.영업용차')) # 영업용차량은 항상 5부제 실시
carNumber = int(input('차량 번호 입력: '))
# 미세먼지 수치, 차량 종류, 차량 번호를 입력하면 운행가능여부 출력
print('-'*30)
print(today)
print('-'*30)
if dustNum > limitDust and carType ==1: # limitDust 초과하면 차량 2부제
if (day%2) == (carNumber % 2):
print('차량 2부제 적용')
print('차량 2부제로 금일 운행제한 대상 차량입니다.')
else:
print('금일 운행 가능합니다.')
if dustNum > limitDust and carType ==2: # 영업용차량이면 항상 5부제
if (day%5)==(carNumber%5):
print('차량 5부제 적용')
print('차량 5부제로 금일 운행제한 대상 차량입니다.')
else:
print('금일 운행 가능합니다.')
if dustNum <= limitDust:
if (day%5)==(carNumber%5):
print('차량 5부제 적용')
print('차량 5부제로 금일 운행제한 대상 차량입니다.')
else:
print('금일 운행 가능합니다.')
print('-'*30)
# 58강 조건문 06
>PC에서 난수를 발생하면 사용자가 맞추는 게임을 만들어보자.
import random
rNum = random.randint(1,1000) # 1에서 1000까지의 난수를 하나 뽑는다.
tryCount = 0 #시도 횟수
gameFlag = True #게임이 진행되느냐 안되느냐 반복문 질문
while gameFlag:
tryCount += 1
pNum = int(input('1에서 1,000까지의 정수 입력: '))
if rNum == pNum:
print('빙고!')
gameFlag = False
else:
if rNum > pNum:
print('난수가 크다!')
else:
print('난수가 작다!')
print('난수: {}, 시도 횟수:{}'.format(rNum, tryCount))
* 들여쓰기 주의
> 실내온도를 입력하면 스마트에어컨 상태가 자동으로 설정되는 프로그램을 만들어보자.
# if~ 다자택일
innerTemp = int(input('실내온도 입력: '))
if innerTemp <= 18:
print('에어컨: OFF!!')
elif innerTemp > 18 and innerTemp <=22:
print('에어컨: 매우 약!!')
elif innerTemp > 22 and innerTemp <=24:
print('에어컨: 약!!')
elif innerTemp > 24 and innerTemp <=26:
print('에어컨: 중!!')
elif innerTemp >26 and innerTemp <=28:
print('에어컨: 강!!')
else:
print('에어컨: 매우 강!!')
다양한 반복문 사용법 ( for문, while 문)
#59. 반복문(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 = '' # result10에 십의 자리가 짝수인지 홀수인지 할당해준다
if num10 % 2 == 0:
result10 = '짝수'
else:
result10 = '홀수'
result1 = '0' # result1에 일의자리를 0으로 놓고 짝수인지 홀수인지 할당해준다.
if num1 != 0:
if num1 % 2 == 0:
result1 = '짝수'
else:
result1 = '홀수'
print('[{}] 십의자리: {}, 일의자리: {}'.format(i,result10,result1))
#60강 조건문(02)
> 1부터 사용자가 입력한 정수까지의 합, 홀수의 합, 짝수의 합 그리고 팩토리얼을 출력하는 프로그램을 만들어보자.
fNum = int(input('정수 입력: '))
addSum = 0
for i in range(1,fNum+1): # 반복문으로 합 구하는 법 알기
addSum += i
addSumFormated = format(addSum, ',')
print('합 결과: {}'.format(addSumFormated))
oddSum = 0
for i in range(1, fNum+1):
if i % 2 != 0:
oddSum += i
oddSumFormated = format(oddSum, ',')
print('홀수 합 결과: {}'.format(oddSumFormated))
evenSum = 0
for i in range(1, fNum+1):
if i % 2 == 0:
evenSum += i
evenSumFormated = format(evenSum, ',')
print('짝수 합 결과: {}'.format(evenSumFormated))
factorialResult = 1
for i in range(1, fNum+1):
factorialResult *= i
factorialResultFormated = format(factorialResult, ',')
print('팩토리얼 결과: {}'.format(factorialResultFormated))
#61강 조건문(03) # * 문제 다시 풀기
> '*' 를 이용해서 다음과 같이 다양한 모양을 출력해보자.
for i in range(1,6):
for j in range(i):
print('*',end='') # 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()
#62강. 조건문(04) ---> 다시 풀기 이해안감
> 집 앞 버스 정류장에서 학교까지 가는 버스 A, B, C의 운행정보가 다음과 같을 때, 2대 이상의 버스가 정차하는 시간대를 출력해보자.
busA = 15 # 15분간격 운행
busB = 13 # 13분간격 운행
busC = 8 # 8분간격 운행
totalMin = 60 * 17 # 오전 6시부터 23시까지 운행 총 시간 (분) = 23-6 =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:
#63강. 조건문(05) ---> 다시 풀기
>톱니가 각각 n1개와 n2개의 톱니바퀴가 서로 맞물려 회전할 때, 회전을 시작한 후 처음 맞물린 톱니가 최초로 다시 만나게 될 때까지의 톱니의 수와 각각의 바퀴 회전수를 출력해보자 (단, n2는 n1보다 크다.)
gearATCnt = int(input('GearA 톱니수: '))
gearBTCnt = int(input('GearB 톱니수: '))
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('최초 만나는 톱니수(최소공배수): {}톱니'.format(leastNum))
print('gearA 회전수 : {}회전'.format(int(leastNum / gearATCnt)))
print('gearB 회전수 : {}회전'.format(int(leastNum / gearBTCnt)))
#64강. 조건문(06)
> 윤년 계산기를 만들어보자
* 윤년 조건
- 연도가 4로 나누어떨어지고 100으로 나누어 떨어지지 않으면 윤년이다.
- 또는 연도가 400으로 나누어 떨어지면 윤년이다.
year = int(input('연도 입력: '))
year_name = '평년'
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
year_name = '윤년!!'
print('{}년: {}'.format(year,year_name))
else:
print('{}년: {}'.format(year,year_name))
for i in range(2021,(2021+101)):
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
print('{}년: 윤년!!'.format(year))
else:
print('{}년: 평년'.format(year))
※이 게시물은 제로베이스 데이터 취업스쿨의 강의 내용이 포함되어있습니다.