Long Int literal - 无效语法?

时间:2014-06-16 17:59:46

标签: python python-3.x int syntax-error long-integer

我使用的Python教程略有过时,但我决定继续使用最新版本的Python来练习调试。有时我在学习的代码中有一些东西,我在更新的Python中已经改变了,我不确定这是否是其中之一。

在修复程序以便打印更长的阶乘值时,它使用long int来解决问题。原始代码如下:

#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()

long int版本如下:

#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()

但是在Python shell中运行程序的long int版本会产生以下错误:

>>> 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

2 个答案:

答案 0 :(得分:20)

放下L; Python 3中的所有整数都很长。 Python 2中的long现在是Python 3中的标准int类型。

原始代码也不必使用长整数; Python 2根据需要透明地切换到long类型无论如何

请注意,所有Python 2支持都将很快结束(2020/01/01之后不再需要更新),所以此时您可以更好地切换教程并将时间花在学习Python 3上。对于初学者程序员,我建议使用Think Python, 2nd edition,因为它已针对Python 3进行了全面更新,并且可以在线免费获取。或pick any of the other Stack Overflow Python chatroom recommended books and tutorials

如果您必须坚持当前的教程,那么您可以安装Python 2.7解释器,并且不必学习如何首先将Python 2移植到Python 3代码。但是,您还必须了解如何从Python 2过渡到Python 3。

答案 1 :(得分:0)

您只需要删除L

fact = 1

Python 3.X整数支持无限制的大小,而Python 2.X具有长整数的单独类型。