Sách hướng dẫn Python tôi đang sử dụng hơi lỗi thời, nhưng tôi đã quyết định tiếp tục sử dụng nó với phiên bản Python mới nhất để thực hành gỡ lỗi. Đôi khi có một vài điều trong mã của cuốn sách mà tôi học đã thay đổi trong Python cập nhật, và tôi không chắc chắn nếu đây là một trong số họ.Dài Int chữ - Cú pháp không hợp lệ?
Trong khi sửa chương trình sao cho nó có thể in các giá trị giai thừa dài hơn, nó sử dụng một hàm dài để giải quyết vấn đề. Mã gốc như sau:
#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()
Phiên bản int dài như sau:
#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()
Nhưng chạy phiên bản int dài của chương trình trong vỏ Python tạo ra các lỗi sau:
>>> 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
(Hãy xem xét toàn bộ sự cố có thể đã được chứng minh khi thử và hiển thị kết quả của 'fact = 1L', phần còn lại của mã chỉ là hành lý vì lợi ích của câu hỏi) – user2864740
@ user2864740: nhưng nếu bạn giả định rằng Python 2 có lý do để thêm hậu tố 'L', thì có lẽ phần còn lại của ngữ cảnh là cần thiết để xác định cách dịch nó sang Python 3? Giả định là sai, nhưng ai đó mới với Python 2 không thể biết điều này. –
@MartijnPieters Không cần phải tái tạo sự cố. Vấn đề là mã được cung cấp dẫn đến lỗi cú pháp. Điều này có thể được sao chép với 'thực tế = 1L' mà sẽ thất bại trong trường hợp ở trên thất bại mà sẽ thất bại là tốt. – user2864740