我使用的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
答案 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具有长整数的单独类型。