Le livre d'exercices Python que j'utilise est légèrement dépassé, mais j'ai décidé de continuer à l'utiliser avec la dernière version de Python pour pratiquer le débogage. Parfois, il y a quelques choses dans le code du livre que j'apprends ont changé dans le Python mis à jour, et je ne suis pas sûr que ce soit l'un d'entre eux. Tout en corrigeant un programme afin qu'il puisse imprimer des valeurs factorielles plus longues, il utilise un int long pour résoudre le problème. Le code d'origine est la suivante:Littéral long Int - Syntaxe invalide?
#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()
La version longue int est comme suit:
#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()
Mais en cours d'exécution de la version longue int du programme dans le shell Python génère l'erreur suivante:
>>> 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
(Considérer que tout le problème aurait pu être démontré en essayant et montrant le résultat de 'fact = 1L'; le reste du code est juste un bagage pour le bien de la question) – user2864740
@ user2864740: mais si vous faites l'hypothèse que le Python 2 avait une raison d'ajouter le postfix 'L', alors peut-être que le reste du contexte était nécessaire pour déterminer comment traduire son utilisation en Python 3? L'hypothèse est fausse, mais quelqu'un de nouveau à Python 2 ne peut pas le savoir. –
@MartijnPieters Il n'est pas nécessaire de reproduire le problème. Le problème est que le code fourni entraîne une erreur de syntaxe. Cela peut être reproduit avec 'fact = 1L' qui échouera là où échoue ci-dessus qui échouera également. – user2864740