FAQ
I'm trying to write a simple program to calculate permutations. I created a file called "mod.py" and put the following in it:

def factorial(n):
a = n
b = n
while a>0 and b>1:
n = (n)*(b-1)
b = b-1

def perm(n, r):
a = factorial(n)
b = factorial(n-r)
q = a / b
print q

Then I went back to IDLE and input the following:
import mod
mod.perm(5, 4)
I recieved the following error message:

Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
mod.perm(5, 4)
File "C:\Python25\mod.py", line 27, in perm
q = a / b
TypeError: unsupported operand type(s) for /: 'NoneType' and 'NoneType'

I have no idea how to fix it. I'm pretty new to Python. I have IDLE 1.2.2 and Python 2.5.2,

Please help.

Search Discussions

  • Sean DiZazzo at May 2, 2008 at 1:17 am

    On May 1, 5:21?pm, "Jordan Harry" wrote:
    I'm trying to write a simple program to calculate permutations. ?I created a file called "mod.py" and put the following in it:

    def factorial(n):
    ? ? a = n
    ? ? b = n
    ? ? while a>0 and b>1:
    ? ? ? ? n = (n)*(b-1)
    ? ? ? ? b = b-1

    def perm(n, r):
    ? ? a = factorial(n)
    ? ? b = factorial(n-r)
    ? ? q = a / b
    ? ? print q

    Then I went back to IDLE and input the following:
    import mod
    mod.perm(5, 4)
    I recieved the following error message:

    Traceback (most recent call last):
    ? File "<pyshell#1>", line 1, in <module>
    ? ? mod.perm(5, 4)
    ? File "C:\Python25\mod.py", line 27, in perm
    ? ? q = a / b
    TypeError: unsupported operand type(s) for /: 'NoneType' and 'NoneType'

    I have no idea how to fix it. ?I'm pretty new to Python. ?I have IDLE 1.2.2 and Python 2.5.2,

    Please help.
    Your factorial function needs to return something.

    ~Sean
  • Ben Finney at May 2, 2008 at 1:31 am

    "Jordan Harry" <jharry at EmeryWeiner.org> writes:

    I'm trying to write a simple program to calculate permutations. I
    created a file called "mod.py" and put the following in it:

    def factorial(n):
    a = n
    b = n
    while a>0 and b>1:
    n = (n)*(b-1)
    b = b-1
    A function that does some calculations internally, but has no 'return'
    statement and thus implicitly returns 'None'.
    def perm(n, r):
    a = factorial(n)
    b = factorial(n-r)
    These statements bind the 'None' returned by the 'factorial' function
    to the names 'a' and 'b'.
    q = a / b
    This attempts to use the '/' operator on 'None' with 'None', which
    raises the exception you saw.

    (good sigmonster, have a cookie)

    --
    \ "Pinky, are you pondering what I'm pondering?" "I think so, |
    `\ Brain, but Zero Mostel times anything will still give you Zero |
    _o__) Mostel." -- _Pinky and The Brain_ |
    Ben Finney

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
grouppython-list @
categoriespython
postedMay 2, '08 at 12:21a
activeMay 2, '08 at 1:31a
posts3
users3
websitepython.org

People

Translate

site design / logo © 2022 Grokbase