[경성 프로그래밍 교육 5일차]파이썬 프로그래밍 - 공 튕기기
중고생을 위한 경성 프로그래밍 교육(파이썬 프로그래밍) - 5.GUI 프로그래밍 공튕기기리스트에 저장된 공을 화면에서 튕기도록 하는 프로그램을 개발해보자. from tkinter import *from random import randint def getRandomColor():color = "#"for j in range(6):color += toHexChar(randint(0,15)) return color def toHexChar(hexValue):if 0
[경성 프로그래밍 교육 5일차]파이썬 프로그래밍 - 하노이 타워
중고생을 위한 경성 프로그래밍 교육(파이썬 프로그래밍) - 5.GUI 프로그래밍 하노이타워(파이썬 프로그래밍)재귀를 이용하여 하노이 타워 문제를 해결해 보자. *교육 종료 후 소스코드 제공 def main():n = eval(input("디스크의 개수를 입력하세요 : ")) print("옮기는 순서는 다음과 같습니다 :")moveDisks(n, 'A', 'B', 'C') def moveDisks(n, fromTower, toTower, auxTower):if n==1: # 정지 조건print("디스크", n, "을/를", fromTower, "에서", toTower, "로 옮긴다.")else:moveDisks(n-1, fromTower, auxTower, toTower)print("디스크", n, "을/..
[경성 프로그래밍 교육 4일차]파이썬 프로그래밍 - 스도쿠GUI
중고생을 위한 경성 프로그래밍 교육(파이썬 프로그래밍) - 4.데이터 구조와 알고리즘 " 숫자가 겹치지 않아야 한다, 한 자릿수 " 스도쿠(sudoku)는 일본에서 개발된 퍼즐게임의 명칭입니다. 게임방법은 가로와 세로 9칸씩 모두 81칸으로 이루어진 정사각형의 가로줄과 세로줄에 각각 1에서 9까지 숫자를 한 번씩만 써서 채우는 것입니다.큰 정사각형은 가로, 세로 각 3칸으로 모두 9칸인 작은 사각형 9개로 이루어져 있는데 그 9칸짜리 작은 사각형 안에서도 1에서 9까지 숫자가 겹치지 않아야 합니다. 가로와 세로 줄의 수를 줄이거나 늘려 난이도를 조절할 수 있으며, 숫자 대신 알파벳이나 도형을 이용하기도 합니다. 스도쿠GUI입력된 스도쿠 풀이가 정확한지 검사하는 GUI 프로그램을 작성해보자. def isV..
[경성 프로그래밍 교육 4일차]파이썬 프로그래밍 - 문자 빈도수 세기
중고생을 위한 경성 프로그래밍 교육(파이썬 프로그래밍) - 4.데이터 구조와 알고리즘 문자 빈도수 세기(파이썬 프로그래밍)100개의 문자 집합에서 각 문자의 개수를 세는 프로그램을 살펴보자. from random import randint # ch1와 ch2 사이의 랜덤 문자를 생성한다.def getRandomCharacter(ch1, ch2):return chr(randint(ord(ch1), ord(ch2))) # 랜덤 소문자를 생성한다.def getRandomLowerCaseLetter():return getRandomCharacter('a', 'z') # 랜덤 대문자를 생성한다.def getRandomUpperCaseLetter():return getRandomCharacter('A', 'Z') ..
[경성 프로그래밍 교육 2일차]파이썬 프로그래밍 - 생일 맞히기
중고생을 위한 경성 프로그래밍 교육(파이썬 프로그래밍) - 2.제어문 생일 맞히기(파이썬 프로그래밍)다섯번의 질문으로 생일을 맞히는 프로그램을 작성해 보자. day = 0 question1 = "Set1에 당신의 생일이 있습니까?\n" + \ " 1 3 5 7\n" + \ " 9 11 13 15\n" + \ "17 19 21 23\n" + \ "25 27 29 31" + \ "\n0(아니오) 또는 1(예)을 입력하세요: "answer = eval(input(question1)) if answer == 1: day += 1 question2 = "Set2에 당신의 생일이 있습니까?\n" + \ " 2 3 6 7\n" + \ "10 11 14 15\n" + \ "18 19 22 23\n" + \ "26 27..
[경성 프로그래밍 교육 3일차]파이썬 프로그래밍 - 회문 검사하기
중고생을 위한 경성 프로그래밍 교육(파이썬 프로그래밍) - 3. 객체 지향 프로그래밍 회문 검사하기(파이썬 프로그래밍)문자열이 회문지 검사하는 프로그램에 대하여 살펴보자. 문자열을 앞으로 읽으나, 뒤로 읽으나 같은 문자열을 '회문'이라고 한다. ex) "mom", "dad", "noon" 등이 있다. def main():s = input("문자열을 입력하세요 : ").strip() if isPalindrome(s):print(s, "는 회문입니다.")else:print(s, "는 회문이 아닙니다.") def isPalindrome(s):# 문자열의 첫 문자 인덱스low = 0# 문자열의 마지막 문자 인덱스high = len(s)-1 while low < high:if s[low] != s[high]:re..
[경성 프로그래밍 교육 3일차]파이썬 프로그래밍 - 16진수를 10진수로 변환하기
중고생을 위한 경성 프로그래밍 교육(파이썬 프로그래밍) - 3. 객체 지향 프로그래밍b 16진수를 10진수로 변환하기(파이썬 프로그래밍)16진수 숫자를 10진수 숫자로 변환해 주는 프로그램을 살펴보자. def main():# 사용자로부터 16진수 숫자를 입력받는다.hex = input("16진수 숫자를 입력하세요: ").strip() decimal = hexToDecimal(hex.upper())if decimal == None:print("잘못된 16진수 숫자입니다.")else:print("입력된 16진수 숫자", hex, "에 대한 10진수 표현은", decimal, "입니다.") def hexToDecimal(hex):decimalValue = 0for i in range(len(hex)):ch =..
[경성 프로그래밍 교육 3일차]파이썬 프로그래밍 - Rational클래스
중고생을 위한 경성 프로그래밍 교육(파이썬 프로그래밍) - 3.객체 지향 프로그래밍 Rational 클래스 (파이썬 프로그래밍)유리수 표현과 처리를 위한 Rational 클래스의 설계 방법을 살펴본다. *교육 끝나고 소스 코드 제공 import Rational # 유리수 r1과 r2를 생성하고 초기화한다.r1 = Rational.Rational(4, 2)r2 = Rational.Rational(2, 3) # 결과를 출력한다.print(r1, "+", r2, "=", r1+r2)print(r1, "-", r2, "=", r1-r2)print(r1, "*", r2, "=", r1*r2)print(r1, "/", r2, "=", r1/r2) print(r1, ">", r2, "의 결과는", r1>r2)prin..
[경성 프로그래밍 교육 2일차]파이썬 프로그래밍 - 랜덤워크
중고생을 위한 경성 프로그래밍 교육(파이썬 프로그래밍) - 2.제어문 랜덤워크(파이썬 프로그래밍)랜덤 워크(random walk)를 시뮬레이션에서 turtle 그래픽을 사용할 수 있다. 격자 공간에서 랜덤 워크(정원을 산책한다거나 어떤 꽃을 보기 위해 돌아다니는 것과 같이)를 시뮬레이션 하는 turtle 프로그램을 작성해보자. import turtlefrom random import randint turtle.speed(1) # turtle을 최저속도로 설정한다. # 16 x 16 격자를 그린다.turtle.color("gray") # 격자의 색상x = -80for y in range(-80, 80+1, 10):turtle.penup()turtle.goto(x,y)turtle.pendown()turtle..
[경성 프로그래밍 교육 2일차]파이썬 프로그래밍 - 윤년 판별하기
중고생을 위한 경성 프로그래밍 교육(파이썬 프로그래밍) - 2. 제어문 윤년 판별하기(파이썬 프로그래밍) 연도가 4로는 나누어지지만 100으로 나누어지지 않거나, 혹은 400으로 나누어진다면 그 연도는 윤년이다. 윤년 판별 알고리즘 접근 방법! # 윤년은 4로 나누어진다.isLeapYear = ( year % 4 == 0 ) # 윤년은 4로 나누어지지만 100으로 나누어지지 않는다.isLeapYear = isLeapYear and ( year % 100 != 0 ) # 윤년은 4로 나누어지지만 100으로 나누어지지 않거나, 혹은 400으로 나누어진다.isLeapYear = isLeapYear or ( year % 400 == 0 ) isLeapYear = ( year % 4 == 0 and year % ..