문제풀이를 하고 나면 조금 지치는 느낌이 들면서도 뭔가 조금씩 퍼즐이 짜맞춰져 지는 그런 느낌이 들어서 하고 나면 뿌듯하다
근데 왜 오지게 이해 안가는 건 안가냐고 ㅠㅠ
언어의 문제인지, 수학의 문제인지 고것이 알고싶다...
파이썬 기초문풀4
파이썬 기초문풀5
파이썬 중급1
파이썬 중급2
파이썬 중급3
파이썬 중급5~6
파이썬 중급7
파이썬 중급8~9
파이썬 중급문풀1~2
파이썬 중급문풀3
파이썬 중급문풀4
📝 weekly 데이터 사이언스 스쿨 퀴즈
실습_01
난수를 이용해서 홀/짝 게임을 만들어보자.
import random
comNum = random.randint(1, 2)
userSelect = int(input('홀/짝 선택: 1,홀 \t 2.짝'))
if comNum == 1 and userSelect == 1:
print('빙고!! 홀수')
elif comNum == 2 and userSelect == 2:
print('빙고!! 짝수')
elif comNum == 1 and userSelect == 2:
print('실패!! 홀수!!')
elif comNum == 2 and userSelect == 1:
print('실패!! 짝수!!')
실습_02
난수를 이용해서 가위, 바위, 보 게임을 만들어보자.
import random
comNumber = random.randint(1, 3)
userNumber = int(input('가위, 바위, 보 선택 : 1.가위 \t 2.바위 \t 3.보'))
if (comNumber == 1 and userNumber == 2) or (comNumber == 2 and userNumber == 3) or \
(comNumber == 3 and userNumber == 1):
print('컴퓨터ㅣ 패, 유저: 승')
elif comNumber == userNumber:
print('무승부')
else:
print('컴퓨터: 승, 유저: 패')
print('컴퓨터: {}, 유저: {}'.format(comNumber, userNumber))
실습_03
아래 요금표를 참고해서 상수도 요금 계산기를 만들어보자.
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
userPrice = userWater * unitPrice
userPriceFormated = format(int(userPrice), ',') # 원단위 콤마찍기
print('=' * 36)
print('상수도 요금표')
print('-' * 36)
print('사용량 \t : \t 요금')
userPrice = userWater * unitPrice
print('{} \t : \t {}원'.format(userWater, userPriceFormated))
print('=' * 36)
실습_04
미세먼지 비상저감조치로 차량 운행제한 프로그램을 다음 내용에 맞게 만들어 보자.
미세먼지 측정 수치가 150이하면 차량 5부제 실시
미세먼지 측정 수치가 150을 초과하면 차량 2부제 실시
차량 2부제를 실시하더라도 영업용차량은 5부제 실시
미세먼지 수치, 차량 종류, 차량 번호를 입력하면 운행 가능 여부 출력
import datetime
today = datetime.datetime.today()
day = today.day
limitDust = 150
dustNum = int(input('미세먼지 수치 입력: '))
carType = int(input('차량 종류 선택 : 1,승용차 2. 영업용차'))
carNumber = int(input('차량 번호 입력 : '))
print('-' * 36)
print(today)
print('-' * 36)
if dustNum > limitDust and carType == 1:
if (day % 2) ==(carNumber % 2):
print('차량 2부제 적용')
print('차량 2부제로 금일 운행제한 대상 차량입니다.')
else:
print('금일 운행 가능합니다.')
if dustNum > limitDust and carType == 2:
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('-' * 36)
실습_05
PC에서 난수를 발생하면 사용자가 맞추는 게임을 만들어보자.
PC가 난수(1~1000)를 발생하면 사용자가 숫자(정수)를 입력한다.
사용자가 난수를 맞추면 게임이 종료된다.
만약, 못 맞추게 되면 난수와 사용자 숫자의 크고 작음을 출력한 후 사용자한테 다시 기회를 준다.
최종적으로 사용자가 시도한 횟수를 출력한다.
import random
rNum = random.randint(1, 100)
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))
실습_06
실내온도를 입력하면 스마트에어컨 상태가 자동으로 설정되는 프로그램을 만들어보자
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('에어컨 상태 : 강')
elif innerTemp > 28:
print('에어컨 상태 : 매우 강')
실습_07
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))
실습_08
1부터 사용자가 입력한 정수까지의 합, 홀수의 합, 짝수의 합
그리고 팩토리얼을 출력하는 프로그램을 만들어보자
fNum = int(input('정수 입력 : '))
addSum = 0 # 합
for i in range(1, (fNum + 1)):
addSum += i
addSumformated = format(addSum, ',') # 3자리마다 콤마찍기
print('합 결과 : {}'.format(addSumformated))
oddSum = 0 # 홀수
for i in range(1, (fNum + 1)):
if i % 2 != 0:
oddSum += i
oddSumformated = format(oddSum, ',') # 3자리마다 콤마찍기
print('홀수 합 결과 : {}'.format(oddSumformated))
evenSum = 0 # 짝수
for i in range(1, (fNum + 1)):
if i % 2 == 0:
evenSum += i
evenSumformated = format(evenSum, ',') # 3자리마다 콤마찍기
print('짝수 합 결과 : {}'.format(evenSumformated))
factorialResult = 1 # 팩토리얼
for i in range(1, (fNum + 1)):
factorialResult *= i
factorialResultformated = format(factorialResult, ',') # 3자리마다 콤마찍기
print('팩토리얼 결과 : {}'.format(factorialResultformated))
실습_09
‘*’를 이용해서 다음과 같이 다양한 모양을 출력해보자.
# 01 좌측정렬
for i in range(1,6):
for j in range(i):
print('*', end='')
print()
# 02 우측정렬
for i1 in range(1,6):
for i2 in range(6 - i1 - 1):
print(' ', end='')
for i3 in range(i1):
print('*', end='')
print()
# 03 반전 좌측 정렬
for i in range(5, 0, -1):
for j in range(i):
print('*', end='')
print()
# 03 반전 우측 정렬
for i in range(5, 0, -1):
for j in range(5 - i):
print(' ', end='')
for j in range(i):
print('*', end='')
print()
# 04 ▶
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()
# 05 \
for i in range(1, 6): # 행
for j in range(1, 6): # 열
if j == i:
print('*', end='')
else:
print(' ', end='')
print()
실습_10
집 앞 버스 정류장에서 학교까지 가는 버스 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
for i in range(totalMin +1):
if i < 20 or i > (totalMin - 60):
if i % busA == 0 and i % busB == 0:
print('버스A와 버스B 동시 정차!', end='')
hour = 6 + i // 60
min = i % 60
print('\t{}:{}'.format(hour, min))
else:
if i % busA == 0 and i % busB == 0:
print('버스A와 버스B 동시 정차!', end='')
hour = 6 + i // 60
min = i % 60
print('\t{}:{}'.format(hour, min))
elif i % busA == 0 and i % busC== 0:
print('버스A와 버스C 동시 정차!', end='')
hour = 6 + i // 60
min = i % 60
print('\t{}:{}'.format(hour, min))
elif i % busB == 0 and i % busC == 0:
print('버스B와 버스C 동시 정차!', end='')
hour = 6 + i // 60
min = i % 60
print('\t{}:{}'.format(hour, min))
실습_11
톱니가 각각 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)))
실습_12
윤년 계산기를 만들어보자.
윤년 조건
- 연도가 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))
오늘 하루도 지켰다!!
내일도 열심히 하잣!!
근데 나는 언제 아웃풋하냐 ㅠㅠ
응용1도 못해 ㅠㅠ