Das Python-Tutorial-Buch, das ich verwende, ist etwas veraltet, aber ich habe beschlossen, es weiterhin mit der neuesten Version von Python zu verwenden, um das Debuggen zu üben. Manchmal gibt es ein paar Dinge im Code des Buches, die ich im aktualisierten Python geändert habe, und ich bin mir nicht sicher, ob dies einer von ihnen ist.Long Int Literal - Ungültige Syntax?
Während ein Programm zur Festsetzung, so dass es faktorielles Werte mehr drucken können, verwendet es eine lange int das Problem zu lösen. Der ursprüngliche Code wird wie folgt:
#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()
Die lange int Version ist wie folgt:
#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()
Aber läuft die lange int Version des Programms in der Python-Shell erzeugt den folgenden Fehler:
>>> 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
(Bedenken Sie, dass das gesamte Problem hätte demonstriert werden können, wenn Sie das Ergebnis von 'fact = 1L' versuchen und zeigen, der Rest des Codes ist nur Gepäck für Sake die Frage) – user2864740
@ user2864740: aber wenn man davon ausgehen, dass der Python 2 hatte einen Grund hinzuzufügen wurde den 'L' postfix, dann vielleicht der Rest des Kontextes, um zu bestimmen, wie erforderlich, deren Nutzung zu Python 3 zu übersetzen? Die Annahme ist falsch, aber jemand, der Python 2 neu ist, kann das nicht wissen. –
@MartijnPieters Es ist nicht erforderlich, das Problem zu reproduzieren. Das Problem ist, dass der angegebene Code zu einem Syntaxfehler führt. Dies kann mit "fact = 1L" reproduziert werden, was fehlschlägt, wenn das obige fehlschlägt, was ebenso fehlschlagen wird. – user2864740