You are on page 1of 26

공학도를 위한

창의적 컴퓨팅

HOSUNG JO
Hanyang University
CCE 사전 안내

 중간고사 안내
• 일정, 방식, 주의사항

수업코드(학과) 중간고사 일정
10535 (전기공학전공) 10월25일(화) 12:00 ~ 13:00 (PC1, PC2, PC3)
10556 (바이오메디컬) 10월25일(화) 13:10 ~ 14:10 (PC3, PC4)
10892 (신소재공학부1) 10월25일(화) 16:00 ~ 17:00 (402)
13340 (신소재공학부2) 10월26일(수) 11:30 ~ 12:30 (402)
13341 (건축학부) 10월26일(수) 12:40 ~ 13:40 (402)

공학도를 위한 창의적컴퓨팅 2
CCE 오늘의 할일

 Quick Review
• While, ASCIIART, TIME, WINSOUND module

 가위바위보 게임 2
• 무한반복 , break
• 중첩 while

공학도를 위한 창의적컴퓨팅 3
CCE 두더지 찾기 게임 2

공학도를 위한 창의적컴퓨팅 4
CCE 조건반복문 - while

 while
• 조건이 만족하는 동안
실행블록 반복 수행

공학도를 위한 창의적컴퓨팅 5
CCE 조건반복문 - while
시작
 while
print (‘파이썬의 세계에 오신 것
• 조건이 만족하는 동안 실행문장을 반복한다. 을 환영합니다.’)

cnt = 0

NO
cnt < 5

print ('파이썬의 세계에 오신 것을 환영합니다.') YES

print (‘파이썬은 재미있습니다.’)


cnt = 0 cnt = cnt + 1

while cnt < 5:


print ('파이썬은 재미있습니다.')

cnt = cnt + 1
공학도를 위한 창의적컴퓨팅 6
CCE 게임 꾸미기

 ASCII ART and Modules

WINSOUND Module TIME Module


import winsound import time
Winsound.Beep(a,b) time.sleep(s)

공학도를 위한 창의적컴퓨팅 7
CCE 실습문제

 P1. 다음 while 반복문의 실행결과를 예측해보고, 실행해보세요.

공학도를 위한 창의적컴퓨팅 8
CCE 실습문제

 P2. 홀수와 짝수의 개수 구하기


• 1부터 100 사이의 정수 1개를 생성한 뒤,
홀수인지 짝수인지 구별하세요.
• 생성된 정수가 홀수라면 홀수의 개수를
증가시키고, 짝수라면 짝수의 개수를
증가시키세요.
• 위의 과정을 10번 반복한 뒤 10개 중에
짝수의 개수와 홀수의 개수를 구하여
출력하세요.

공학도를 위한 창의적컴퓨팅 9
CCE 실습문제

 P3. 합과 평균 구하기
• 사용자는 정수들의 합과 평균을 구하기 위해 정수들을 입력한다.
정수의 입력이 끝나면 ‘입력끝’이라는 문자열을 입력한다.
• 사용자가 ‘입력끝’이라는 문자열을 입력하면 지금까지 입력된 정수들의 합과
평균을 화면에 출력한다.

공학도를 위한 창의적컴퓨팅 10
CCE 실습문제

 P4. 1초간 멈추었다가 출력하기


• 다음 프로그램을 작성하고 실행해보세요

공학도를 위한 창의적컴퓨팅 11
CCE 실습문제

 P5. x 초 알람 만들기
• 사용자로부터 x를 입력받으세요.
• 1부터 x까지 1초마다 출력하다가 x초가 되면
“x초가 경과하였습니다.” 라고 출력하세요.
• 이후 “삐” 소리를 0.25초간 10번 나도록
프로그램을 작성하세요.

• Tips. “삐” 소리를 0.25초간 나게 하려면


다음 명령어를 이용하세요.
 Import winsound
MacOS는 winsound를 사용할 수가
 winsound.Beep(550, 250) 없고 print(‘\a’) 를 사용하세요.
## 550은 주파수(Hz), 250은 시간(ms) 공학도를 위한 창의적컴퓨팅 12
CCE 실습문제

 P6. 중복없는 로또번호 만들기


• 1~30 사이의 숫자를 무작위로 4개를 중복없이 선택하는 프로그램을
작성하세요.
 random 모듈을 이용하여 1~30 사이의 숫자를 무작위로 선택하는 프로그램을 먼저
만들어봅시다.
 while을 이용하여 1~30 사이의 숫자를 무작위로 4개를 선택하도록 수정해 봅시다.
 if 조건문과 논리연산자를 이용하여 선택된 숫자가 중복되지 않도록 검사하도록 수정해
봅시다.
 위의 차례대로 프로그램을 작성해 보되 각 과정을 보일 필요는 없습니다.
 최종 프로그램 1개만 작동하면 됩니다.

공학도를 위한 창의적컴퓨팅 13
CCE 가위바위보 게임2

 가위바위보 게임 2
• 게임 진행방식은 기존과 동일
 컴퓨터와 사람이 대결
 가위바위보 중에 하나를 무작위로 선택 혹은 입력받아 진행
 가위바위보 판단 규칙에 의해 승패 결정

• 2승 선승제로 진행 반복 가능하게 변경
 중첩 if문으로 진행된 가위바위보를 2승 선승제 진행 후 승패 판단
 2승 선승제 후 사용자에게 반복 여부 확인 후 전체 종료 혹은 반복 실행

공학도를 위한 창의적컴퓨팅 14
CCE 가위바위보 2

 순서도

시작

컴퓨터 / 사용자 선택

승자 판단

승자판단 출력

공학도를 위한 창의적컴퓨팅 15
CCE 가위바위보 2

 순서도 시작

False
반복 < 3
시작 True

컴퓨터 / 사용자 선택 컴퓨터 / 사용자 선택

승자 판단 승자 판단

승자판단 출력 승자판단 출력


3번 반복 후, 최종 승자 출력

공학도를 위한 창의적컴퓨팅 16
CCE 가위바위보 2 시작

가위바위보 게임 소개

 순서도 시작 True
False
반복 < 3
False
True 반복 < 3
True
컴퓨터 / 사용자 선택
컴퓨터 / 사용자 선택
승자 판단
승패 판단
승자판단 출력
승자판단 출력

3번 반복 후, 최종 승자 출력 3번 반복 후, 최종 승자 출력

False
끝 그만할까요?
True
끝 공학도를 위한 창의적컴퓨팅 17
CCE 가위바위보 2 시작

가위바위보 게임 소개
 순서도
True

False
반복횟수 < 3
True
컴퓨터 선택 설정

사용자 선택 입력

승자판단해서 해당 메시지 출력

3번 반복 후, 최종 승자 출력

False
그만할까요?
True

공학도를 위한 창의적컴퓨팅 18
import random # 승부결과출력-------------------------------------------------------
CCE
print ('가위~', '바위~', '보~!!!!! ') if winner == '당신':
print (‘2판 선승제 가위바위보~!!!!! ') print ('당신 이김! 컴퓨터 짐! (You:', yourHand, ', Com:',
while True: comHand,')')
print ('삼세판 가자~') cnt_userWin = cnt_userWin + 1
cnt, cnt_userWin, cnt_comWin = 0, 0, 0 elif winner == '컴퓨터':
while cnt < 3 : print ('당신 짐! 컴퓨터 이김! (You:', yourHand, ', Com:',
print ('-'*50) comHand,')')
# 사용자값 및 컴퓨터값 결정 ------------------------------------ cnt_comWin = cnt_comWin + 1
yourHand = input('가위~ 바위~ 보 ! 중에 하나를 골라주세요~ ') else :
comRandom = random.randint(1,3) print ('무승부! (You:', yourHand, ', Com:', comHand,')')
if comRandom == 1: cnt = cnt + 1
comHand = '가위'
elif comRandom == 2: print ('-'*50)
comHand = '바위'
else: # 2판 선승제 승자 결정 ------------------------------------
comHand = '보' print ()
# 승부판단 ------------------------------------------------------- if cnt_userWin > cnt_comWin :
## 컴퓨터가 이기는 경우 print ('>>> 당신이 최종 승리! <<<')
if ((comHand == '가위' and yourHand =='보') elif cnt_comWin > cnt_userWin :
or (comHand == '바위' and yourHand =='가위') print ('>>> 컴퓨터가 최종 승리! <<<')
or (comHand == '보' and yourHand =='바위')): else :
winner = '컴퓨터' print ('>>> 무승부 <<<')
## 사용자가 이기는 경우 print ()
elif ((comHand == '가위' and yourHand =='바위')
or (comHand == '바위' and yourHand =='보') # 가위바위보 반복실행 여부 결정 ------------------------------------
or (comHand == '보' and yourHand =='가위')): if input('그만 하시겠습니까? (y/n) ') == 'y':
winner = '당신' break
## 비기는 경우
else:
winner = '비김' 공학도를 위한 창의적컴퓨팅 19
CCE While 응용

 무한반복 + break

공학도를 위한 창의적컴퓨팅 20
CCE While 응용

 중첩 while

공학도를 위한 창의적컴퓨팅 21
CCE While 응용

 While + if

공학도를 위한 창의적컴퓨팅 22
CCE 연습문제

 다음 소스코드의 실행결과를 예측해보고 결과를 확인하세요.

공학도를 위한 창의적컴퓨팅 23
CCE 연습문제

 다음과 같이 2가지 방법으로


구구단 중 1~3단을 화면에 출력해보세요.
• (1) 가로로 출력
• (2) 세로로 출력

공학도를 위한 창의적컴퓨팅 24
import random # 승부결과출력-------------------------------------------------------
CCE
print ('가위~', '바위~', '보~!!!!! ') if winner == '당신':
print ('2판 선승제 가위바위보~!!!!! ') print ('당신 이김! 컴퓨터 짐! (You:', yourHand, ', Com:',
while True: comHand,')')
print ('삼세판 가자~') cnt_userWin = cnt_userWin + 1
cnt, cnt_userWin, cnt_comWin = 0, 0, 0 elif winner == '컴퓨터':
while cnt < 3 : print ('당신 짐! 컴퓨터 이김! (You:', yourHand, ', Com:',
print ('-'*50) comHand,')')
# 사용자값 및 컴퓨터값 결정 ------------------------------------ cnt_comWin = cnt_comWin + 1
yourHand = input('가위~ 바위~ 보 ! 중에 하나를 골라주세요~ ') else :
comRandom = random.randint(1,3) print ('무승부! (You:', yourHand, ', Com:', comHand,')')
if comRandom == 1: cnt = cnt + 1
comHand = '가위'
elif comRandom == 2: print ('-'*50)
comHand = '바위'
else: # 2판 선승제 승자 결정 ------------------------------------
comHand = '보' print ()
# 승부판단 ------------------------------------------------------- if cnt_userWin > cnt_comWin :
## 컴퓨터가 이기는 경우 print ('>>> 당신이 최종 승리! <<<')
if ((comHand == '가위' and yourHand =='보') elif cnt_comWin > cnt_userWin :
or (comHand == '바위' and yourHand =='가위') print ('>>> 컴퓨터가 최종 승리! <<<')
or (comHand == '보' and yourHand =='바위')): else :
winner = '컴퓨터' print ('>>> 무승부 <<<')
## 사용자가 이기는 경우 print ()
elif ((comHand == '가위' and yourHand =='바위')
or (comHand == '바위' and yourHand =='보') # 가위바위보 반복실행 여부 결정 ------------------------------------
or (comHand == '보' and yourHand =='가위')): if input('그만 하시겠습니까? (y/n) ') == 'y':
winner = '당신' break
## 비기는 경우
else:
winner = '비김' 공학도를 위한 창의적컴퓨팅 25
CCE 오늘의 할일

 Quick Review
• While, ASCIIART, TIME, WINSOUND module

 가위바위보 게임 2
• 무한반복 , break
• 중첩 while

공학도를 위한 창의적컴퓨팅 26

You might also like