CCE week6 이론

You might also like

Download as pdf or txt
Download as pdf or txt
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