夢追い人

"It takes a dreamer to make a dream come true."―Vincent Willem van Gogh

python苦戦中

とあるコードについて・・・

#!/usr/bin/env python
# -*- coding:utf-8 -*-

class algo:
 def __init__(self):
  self.data = []
 def per(self,n):
  x = n
  while n > 0:
   n = n - 1
   x = x * n
  self.data.append(x)
  return result
 def com(self,n,m):
  a = n - 1
  b = per(m)
  c = b[0]
  while m > 0:
   n = n * a
   a = a - 1
   m = m - 1
  d = n / c
  self.data.append(d)
  return result
 def  fin(self):
  self.p = self.data[0]
  self.c = self.data[1]

def venn(n):
 y = algo(n,1)
 i = y.p
 n = n - 1
 a = 1
 while n > 0:
  if a % 2 == 0:
   b = algo(n,a)
   x = b.p * b.c
   i = i + x
   n, a = n-1, a+1
  else:
   b = algo(n,a)
   x = b.p * b.c
   i = i - x
   n, a = n-1, a+1
 print i

print """
--------------------------------------------------------------------------------

Q. 1からnまでの数字を1個ずつ使う、n文字の順列のうち
    「1が1番目になく、2が2番目になく・・・nがn番目にない」
     ようなものはいくつあるか?

--------------------------------------------------------------------------------
"""
n = int(raw_input("nにあたる数を入力してください:"))
print  """
--------------------------------------------------------------------------------
"""
print 'Answer is'
venn(n)
print """
--------------------------------------------------------------------------------
"""


このコードどうしても動かない。
問題点指摘してくれる人がいればいいんですけどね(泣)
だれかこの記事を見てくれているという前提で、参考までにどのようなエラーになるかだけ載せておきます。
ubuntu@ubuntu:~/py_script$ python venn.py

--------------------------------------------------------------------------------

Q. 1からnまでの数字を1個ずつ使う、n文字の順列のうち
    「1が1番目になく、2が2番目になく・・・nがn番目にない」
     ようなものはいくつあるか?

--------------------------------------------------------------------------------

nにあたる数を入力してください:5

--------------------------------------------------------------------------------

Answer is
Traceback (most recent call last):
  File "venn.py", line 61, in
    venn(n)
  File "venn.py", line 30, in venn
    y = algo(n,1)
TypeError: __init__() takes exactly 1 argument (3 given)
ubuntu@ubuntu:~/py_script$

 このTypeErrorどういう意味なんだろ・・・