[강의소개]
  • 본 과목은 다양한 문제해결을 위한 코딩을 하는 기초적인 방법을 다룸
  • 코딩은 최근 여러 분야에서 각광을 받고 있고 응용분야를 확대하고 있는 파이썬을 사용
[문제해결을 위한 코딩 첫걸음]
[강의노트]
[과제제출 및 성적확인]
[과목 게시판]
[과제]

번호

과제내용

#1


1장에서 3장까지 배운 내용을 종합하여 아래와 같이 동작하는 프로그램을 작성하시오.

  • 동작 화면:
  • 동작
    • 3장에서 배운 tkinter를 이용하여 "터틀 도형 그리기" 윈도우를 만듦
      • "정사각형", "원", "별" Button을 만들고 각 도형을 그리는 함수와 연결
      • "전진", "왼쪽 90도", "오른쪽 90도" Button을 만들고 해당 동작을 하는 함수와 연결
      • "도형" 과 "이동" Label을 "Times 16 bold" 폰트로 노란바탕 검정글씨로 만듦
      • 만든 Button과 Label 들을 grid() 배치관리자를 이용하여 그림처럼 배치함
        (hint: 여러 column 차지하기는 columnspan=3)
    • 3장에서 배운 turtle 그리기를 이용하여 그리는 함수 작성
      • "정사각형", "원", "별"을 그리는 함수 작성
        (사각형 변의 길이, 원의 지름, 별의 크기는 100을 기준)
      • "전진", "왼쪽 90도", "오른쪽 90도"로 동작하는 함수 작성
        (전진 크기는 100을 기준으로 이동)
      • "전진" 동작 시 penup() 하여 이동하여 이동 시에는 선이 표시되지 않게 할 것!!!
      • 각 도형을 그린 후에 현재 위치를 얻어서 현재위치와 도형의 이름을 표시
        (위치를 얻는 함수는 t.position() 함수)
    • 실행
      • 도형과 이동 버튼을 클릭해서 다양한 도형을 여러 위치에 다양하게 그림
    • 기타, 구글에서 관련 자료를 찾아서 참고하여 수행
  • 제출 (한글이나 워드파일에 아래 내용을 넣어서 제출)
    • 프로그램 소스 코드 (필수)
    • 실행 결과화면 (필수)
    • 과제 중 발생한 문제, 해결방법, 배운 것, 느낀점 (필수)

#2


1장에서 6장까지 배운 내용을 종합하여 아래와 같이 동작하는 프로그램을 작성하시오.

  • 동작 화면:
  • 동작
    • 3장에서 배운 tkinter를 이용하여 "숫자 맞추기 게임" 윈도우를 만듦
      • "1~100 사이의 숫자 하나를 맞추세요" 라는 Lable을 "Times 16 bold" 폰트로 노란바탕 검정글씨로 만듦
      • "숫자 입력:" 라는 Label을 만듦
      • 숫자를 입력받을 Entry을 만듦
      • "입력" 이라는 Button을 만들고 숫자를 맞추었는지 처리 함수와 연결
        • 처리 함수의 동작
          • 컴퓨터가 선택한 숫자와 사용자가 입력한 숫자를 비교
          • 사용자가 입력한 숫자가 크면 "Down" 출력
          • 사용자가 입력한 숫자가 작으면 "Up" 출력
          • 사용자가 입력한 숫자가 같으면 "성공" 출력
          • 시도할 때마다 trial 이라는 변수가 하나씩 증가하고 이를 이용해 "(2번 시도)" 와 같이 출력
          • 성공한 경우 smile.png 파일을 이용하여 Label로 표시
        • 만든 Button과 Label, Entry 들을 place() 배치관리자를 이용하여 그림처럼 배치함
      • 실행
        • 게임을 실행해서 성공이 나오도록 함
      • 기타, 구글에서 관련 자료를 찾아서 참고하여 수행
    • 제출 (한글이나 워드파일에 아래 내용을 넣어서 제출)
      • 프로그램 소스 코드 (필수)
      • 실행 결과화면 (필수)
      • 과제 중 발생한 문제, 해결방법, 배운 것, 느낀점 (필수)

#3


1장에서 8장까지 배운 내용을 종합하여 아래와 같이 동작하는 프로그램을 작성하시오.

  • 동작 화면:
  • 동작
    • 동작화면과 같은 야구게임 설명화면을 보여줌
    • "입력: "을 표시하고 숫자 4개를 입력받음
    • 컴퓨터가 0에서 9까지의 한 자릿수 중에서 4개의 수를 무작위로 선택함
      • 4개의 수는 중복되면 안됨
      • random.sample() 함수를 이용
      • 컴퓨터가 선택한 4개의 숫자를 저장한 리스트가 만들어짐
    • 사용자로부터 4개의 수를 입력받음
    • 컴퓨터가 선택한 4개의 숫자 리스트와 사용자로 부터 받은 4개의 숫자 리스트를 비교
      • 이중 for 반복문을 사용해야함 (4*4=16 개의 모든 경우 체크해야함)
      • 위치가 같은데 숫자도 같으면 strike 증가시킴
      • 위치가 다른데 숫자가 같으면 ball 증가시킴
    • strike 와 ball 결과를 출력함
      • 동작화면 처럼 시도한 횟수를 괄호안에 표시해주고 strike 와 ball 결과를 출력
    • 4개의 숫자를 다 맞춘 4 strike 인 경우 (게임종료)
      • 5번 이하 시도에서 맞춘 경우 출력: "매우 잘 하는 군요. n 스텝에 맞췄습니다."
      • 6번~10번 이하 시도에서 맞춘 경우 출력: "잘 하는 군요. n 스텝에 맞췄습니다."
      • 11번~15번 이하 시도에서 맞춘 경우 출력: "n 스텝에 맞췄습니다."
      • 16번 이상 시도에서 맞춘 경우 출력: "분발하세요. n 스텝에 맞췄습니다."
    • 실행
      • 게임을 실행해서 정상적으로 동작하는지 확인
  • 제출 (한글이나 워드파일에 아래 내용을 넣어서 제출)
    • 프로그램 소스 코드 (필수)
    • 실행 결과화면, 최소한 3번 이상의 실행결과 포함할 것(필수)
    • 과제 중 발생한 문제, 해결방법, 배운 것, 느낀점 (필수)

#4


교재 1장~9장에서 배운 내용 및 추가 10장 강의노트를 참고하여 아래와 같이 동작하는 프로그램을 작성하시오.

  • 동작 화면:
  • 동작
    • 동작화면과 같은 행맨게임을 구현함
    • 여기를 클릭하여 영어단어 사전을 다운로드 받음
      • 854개의 영어 단어가 있음
      • 이를 이용하여 문제 출제
      • 힌트
        • 파일에서 데이터 읽어오는 방법 (추가 10장 강의노트 및 인터넷 참고)
          	infile = open("words.txt","r")
          	lines = infile.readlines()
          	infile.close() 
    • 컴퓨터가 854개의 단어 중에 하나의 단어를 무작위로 선택
      • 선택한 단어의 개수를 알려줌: 예) 알파벳 수(4)
      • 단어의 개수의 2배의 기회를 줌: 예) 8번 만에 맞추세요.
      • 힌트
        • 리스트의 항목 개수를 확인하는 방법
          	n_words = len(lines)	
        • 리스트 항목 중에 하나를 선택하는 방법
          	sel = random.randint(0,n_words-1)
          	sel_word = lines[sel]
          	sel_word = sel_word.strip() # 단어 뒤에 있는 \n을 제거하는 기능  
    • 시도 횟수와 알파벳 개수만큼의 '_' 출력
      • 예) ( 1) ____
    • 사용자로부터 하나의 알파벳을 입력받음
      • 해당 알파벳이 있는 위치에 알파벳 표시
      • 예) ( 4) _oo_
    • 사용자가 완성해가는 단어가 컴퓨터가 선택한 단어와 같은지 비교
      • 리스트를 문자열로 변환하여 비교해야함
      • 힌트
        • out_word 리스트를 str_word 문자열로 변환하는 방법
          	str_word = "".join(out_word) # 리스트를 문자열로 변환   
    • 기회 횟수가 되도록 못 맞추면 문제 단어를 알려주고 '분발하세요' 출력
      • '분발하세요' 출력 후 새로운 문제 자동 시작
    • 기회 횟수 이내에 맞추면 문제 단어와 'Success!!!'를 출력
      • 'Success!!!' 출력 후 '또 하시겠습니까? (y/n)'를 출력
      • 사용자 답변에 따라서 'y'를 입력하면 새 게임 시작, 'n'을 입력하면 게임 종료
    • 실행
      • 게임을 실행해서 정상적으로 동작하는지 확인
  • 제출 (한글이나 워드파일에 아래 내용을 넣어서 제출)
    • 프로그램 소스 코드 (필수)
    • 실행 결과화면, 최소한 3번 이상의 실행결과 포함할 것(필수)
    • 과제 중 발생한 문제, 해결방법, 배운 것, 느낀점 (필수)