구구단을 짜놓은 페이지입니다. ---- === 첫 프로그램(루프 이용) === {{{~cpp # gugudan with loop. for dan in range(2, 10): for op in range(1, 10): print ('%d x %d = %d')%(dan, op, dan*op) }}} === 약간 구조적으로 리팩토링 === {{{~cpp # gugudan with slightly structured programming methodology. def dan(d): for op in range(1, 10): print ('%d x %d = %d')%(d,op,d*op) def gugudan(): for d in range(2, 10): dan(d) if __name__=='__main__': gugudan() }}} === recursion 사용 === {{{~cpp # gugudan with recursion. def recurGugu(dan, op, sum): if op < 10 : sum += dan print ('%d x %d = %d') % (dan, op, sum) recurGugu(dan, op+1, sum) else: if dan < 9 : recurGugu(dan+1, 1, 0) else: return return if __name__=='__main__': recurGugu(2, 1, 0) }}} === 객체지향(이라고 보기는 힘든면도..) === {{{~cpp # gugudan with object-oriented programming (just express elements as objects) class Gugudan: def __init__(self): for d in range(2, 10): Dan(d) class Dan: def __init__(self, dan): self.dan = dan for op in range(1, 10): opDan = Operand(dan) opMul = Operand(op) print DanLine(opDan, opMul) class DanLine: def __init__(self, op1, op2): self.op1 = op1.value() self.op2 = op2.value() def __str__(self): return ('%d x %d = %d')%(self.op1, self.op2, self.op1*self.op2) class Operand: def __init__(self, value): self.val = value def value(self): return self.val if __name__=='__main__': Gugudan() }}} ---- ["구구단"]