Lecture 강의

Undergraduates 학부 Graduates 대학원 Lecture 역학 Lecture 설계 Lecture IT(IoT, AI) Lecture SAP2000 Lecture 아바쿠스 Lecture 파이썬 Lecture 엑셀 VBA Lecture 마이다스 Lecture 이탭스

[Quiz 05] 2.1 연산자(할당), 2.3 제어문(if)

작성자 : kim2kie

(2023-03-05)

조회수 : 1549

[참조]
.관련 동영상
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)을 여러 줄 연속하여 사용할 수 있다.