Long Int literal - Invalid Syntax?

15,346

Solution 1

Just drop the L; all integers in Python 3 are long. What was long in Python 2 is now the standard int type in Python 3.

The original code doesn't have to use a long integer either; Python 2 switches to the long type transparently as needed anyway.

Note that all Python 2 support is shortly ending (no more updates after 2020/01/01), so at this point in time you'd be much better of switching tutorials and invest your time in learning Python 3. For beginner programmers I recommend Think Python, 2nd edition as it is fully updated for Python 3 and freely available online. Or pick any of the other Stack Overflow Python chatroom recommended books and tutorials

If you must stick to your current tutorial, you could install a Python 2.7 interpreter instead, and work your way through the book without having to learn how to port Python 2 to Python 3 code first. However, you'd then also have to learn how transition from Python 2 to Python 3 in addition.

Solution 2

You just need remove L

fact = 1

Python 3.X integers support unlimited size in contrast to Python 2.X that has a separate type for long integers.

Share:
15,346
Ziggy
Author by

Ziggy

Updated on June 25, 2022

Comments

  • Ziggy
    Ziggy almost 2 years

    The Python tutorial book I'm using is slightly outdated, but I've decided to continue using it with the latest version of Python to practice debugging. Sometimes there are a few things in the book's code that I learn have changed in the updated Python, and I'm not sure if this is one of them.

    While fixing a program so that it can print longer factorial values, it uses a long int to solve the problem. The original code is as follows:

    #factorial.py
    #   Program to compute the factorial of a number
    #   Illustrates for loop with an accumulator
    
    def main():
        n = input("Please enter a whole number: ")
        fact = 1
        for factor in range(int(n), 0, -1):
            fact = fact * factor
    
        print("The factorial of ", n, " is ", fact)
    
    main()
    

    The long int version is as follows:

    #factorial.py
    #   Program to compute the factorial of a number
    #   Illustrates for loop with an accumulator
    
    def main():
        n = input("Please enter a whole number: ")
        fact = 1L
        for factor in range(int(n), 0, -1):
            fact = fact * factor
    
        print("The factorial of ", n, " is ", fact)
    
    main()
    

    But running the long int version of the program in the Python shell generates the following error:

    >>> import factorial2
    Traceback (most recent call last):
      File "<pyshell#3>", line 1, in <module>
        import factorial2
      File "C:\Python34\factorial2.py", line 7
        fact = 1L
                ^
    SyntaxError: invalid syntax