[Quiz 05] 2.1 연산자(할당), 2.3 제어문(if)
작성자 : kim2kie
(2023-03-05)
조회수 : 12914
[참조]
.관련 동영상
https://youtu.be/Qz740r1IV3o
Q)
당신은 카카오 서비스를 이용하는 택시 기사이다.
50명의 승객과 매칭 기회가 있을 때, 총 탑승 승객 수를 구하는 프로그램을 작성하라.
조건1 : 승객별 운행 소요시간은 5분 ~ 50분 사이의 난수로 정한다.
조건2 : 소요 시간 5분 ~ 15분 사이의 승객만 매칭하고자 한다.
.출력 문장(예시):
[O] 1번째 손님 (소요시간 : 15분)
[X] 2번째 손님 (소요시간 : 50분)
[O] 3번째 손님 (소요시간 : 5분)
...
[X] 50번째 손님 (소요시간 : 16분)
총 탑승 승객 : 8 분
A) 해설
+=은 할당연산자로 2.1절 참조
if는 조건문으로 2.3절 참조
C) 코드: "quiz-05.py"
import random
cnt = 0 # 총 탑승승객수
for i in range(1, 51): # 총 50명 승객
time = random.randrange(5, 51) # 5 ~ 50분 사이의 무작위 소요 시간
if 5 <= time <= 15: # 5분 ~ 15분 사이의 손님의 경우에만 매칭
print("[O] {0}번째 손님 (소요시간 : {1}분)".format(i, time)) # 성공 출력
cnt += 1 # 총 탑승승객수 증가 처리
else: # 매칭 실패한 경우
print("[X] {0}번째 손님 (소요시간 : {1}분)".format(i, time)) # 실패 출력
print("총 탑승 승객 : {0}분".format(cnt))
Q-Report)
당신은 버스를 운전하는 버스 기사이다.
(10 + 학번의 맨 뒷자리 수)개의 정류장을 들린 후, 버스에 남은 승객의 수는?
조건1 : 초기 탑승된 승객은 (학번의 맨 뒷자리 수)명이다.
조건2 : 정류장별 탑승 승객은 5명 ~ 10명 사이의 난수로 정한다.
조건3 : 정류장별 내리는 손님은 소요 2명 ~ 5명 사이의 난수로 정한다.
.출력 문장(예시, 학번이 3으로 끝나는 경우):
1번째 승강장: 탑승 = 5명, 하차 = 3명, 탑승객 = 5명
2번째 승강장: 탑승 = 7명, 하차 = 2명, 탑승객 = 10명
3번째 승강장: 탑승 = 6명, 하차 = 5명, 탑승객 = 11명
...
13번째 승강장: 탑승 = 6명, 하차 = 5명, 탑승객 = 50명
A) 해설: 조건 1
조건1 : 초기 탑승된 승객은 (학번의 맨 뒷자리 수)명이다.
학번이 끝번호가 8이면,
승강장의 수가 1에서 18이 되는 동안(for) 반복하여 출력하는 문장이다.
-----
cnt = 0 # 총 탑승승객수
for i in range(1, 10+8+1):
cnt += 1 # 총 탑승승객수 증가 처리
print("총 탑승 승객 : {0}분".format(cnt))
-----
제어문(for, while, if문)을 사용하기 위해 컴언어를 배우는 것과 같다.
그만큼 for, while, if문은 중요하다.
파이썬은 다른 언어와 달리
제어문을 내용의 경계를 나타내는 end나 {}가 없으므로,
읽기가 더욱 간결하고 좋다.
제어문의 내용을 나타내는 것은 줄바꿈과 띄어쓰기 4칸이다.
그래서 깔끔하게 정렬된 파이썬 코딩을 보면 읽기가 쉽다.
A) 해설: 조건 2, 3
조건2 : 정류장별 탑승 승객은 5명 ~ 10명 사이의 난수로 정한다.
조건3 : 정류장별 내리는 손님은 소요 2명 ~ 5명 사이의 난수로 정한다.
-----
import random
iStop = 1 # 승강장 번호
cnt = 10 + 8 # 초기 탑승승객수
getOn = random.randrange(5, 10+1) # 5 ~ 10명 사이의 무작위 선택
getOff = random.randrange(2, 5+1) # 2 ~ 5명 사이의 무작위 선택
print("{0}번째 승강장: 탑승 = {1}명, 하차 = {2}명, 탑승객 = {3}명".
format(iStop, getOn, getOff, cnt + getOn - getOff)) # 출력
-----
파이썬은 문장이 길어 보기가 어려운 경우,
아무 기호 없이 다음 줄에 연속하여 쓸 수가 있다.
위의 경우에 print문의 시작은 "("이므로, 끝 표시인 ")"이 나오기 전까지
내용(argument)을 여러 줄 연속하여 사용할 수 있다.