Hướng dẫn print list of fibonacci numbers python - in danh sách các số fibonacci trong python

Cập nhật lần cuối vào ngày 19 tháng 8 năm 2022 21:51:47 (UTC/GMT +8 giờ)

Danh sách Python: Bài tập - 265 với giải pháp

Viết một chương trình Python để tạo danh sách, chứa chuỗi Fibonacci, cho đến thuật ngữ thứ n.

  • Bắt đầu với 0 và 1, sử dụng list.append () để thêm tổng của hai số cuối cùng của danh sách vào cuối danh sách, cho đến khi độ dài của danh sách đạt đến n.
  • Nếu N nhỏ hơn hoặc bằng 0, hãy trả về danh sách chứa 0.

Giải pháp mẫu:

Mã Python:

def fibonacci_nums(n):
  if n <= 0:
    return [0]
  sequence = [0, 1]
  while len(sequence) <= n:
    next_value = sequence[len(sequence) - 1] + sequence[len(sequence) - 2]
    sequence.append(next_value)
  return sequence
print("First 7 Fibonacci numbers:")
print(fibonacci_nums(7))
print("\nFirst 15 Fibonacci numbers:")
print(fibonacci_nums(15))
print("\nFirst 50 Fibonacci numbers:")
print(fibonacci_nums(50))

Đầu ra mẫu:

First 7 Fibonacci numbers:
[0, 1, 1, 2, 3, 5, 8, 13]

First 15 Fibonacci numbers:
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610]

First 50 Fibonacci numbers:
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986, 102334155, 165580141, 267914296, 433494437, 701408733, 1134903170, 1836311903, 2971215073, 4807526976, 7778742049, 12586269025]

Flowchart:

Hướng dẫn print list of fibonacci numbers python - in danh sách các số fibonacci trong python

Trực quan hóa thực thi mã Python:

Công cụ sau đây trực quan hóa những gì máy tính đang làm từng bước khi nó thực hiện chương trình đã nói:

Trình chỉnh sửa mã Python:

Có một cách khác để giải quyết giải pháp này? Đóng góp mã của bạn (và nhận xét) thông qua Disqus.

Trước đây: Viết chương trình Python để tạo danh sách hai chiều từ danh sách đã cho.next: Viết chương trình Python để đưa ra giá trị được cung cấp làm danh sách nếu không phải là một. Write a Python program to create a two-dimensional list from given list of lists.
Next: Write a Python program to cast the provided value as a list if it's not one.

Có hai loại sai lầm bạn đang mắc phải; Những sai lầm đang tạo ra lỗi và sai lầm đang ảnh hưởng đến khả năng đọc

Cả hai trường hợp của cụm từ [i] nên được xóa. Tôi tin rằng bạn có thể nghĩ rằng nó có liên quan đến việc lặp lại hoặc bộ dữ liệu, nhưng đó là một phần lý do bạn gặp lỗi:

myArray1 = [0] 
myArray2 = [1]

while myArray2 < 700:
    myArray1, myArray2 = b, myArray1+myArray2
    print(myArray2)

Phần khác của lý do bạn gặp lỗi là vì biến b. Bạn không tuyên bố nó và nó không thuộc về. Mã này sẽ lặp lại chính xác nếu bạn chuyển ra B với MyArray2:

myArray1 = [0] 
myArray2 = [1]

while myArray2 < 700:
    myArray1, myArray2 = myArray2, myArray1+myArray2
    print(myArray2)

Sau đó, có một số vấn đề về tính dễ đọc. Tôi sẽ thay đổi cụm từ MyArray1 và 2 thành A và B tương ứng. Đầu tiên bởi vì nó chỉ là quá dài; thứ hai bởi vì trong Python, nó được gọi là danh sách, không phải mảng; Thứ ba vì bạn đang đề cập đến số nguyên, không phải danh sách hoặc mảng:

a = [0] 
b = [1]

while b < 700:
    a, b = b, a+b
    print(b)

Sau đó, các biến là MyArray1 và 2, nhưng bây giờ là A và B; Đó là những số nguyên và chúng không cần phải được thể hiện dưới dạng danh sách đối tượng duy nhất. Vì vậy, hãy loại bỏ các dấu ngoặc xung quanh họ:

a = 0 
b = 1

while b < 700:
    a, b = b, a+b
    print(b)

Sau đó, cụm từ cuối cùng trong mã này nói in (b). Nếu bạn có nó in b thì chuỗi Fibonacci bạn nhận được là thiếu 1. nó sẽ đọc (tất nhiên trên các dòng riêng biệt) 1,2,3,5,8,8,13, v.v. Nó nên đọc 1,1,2,3,5,8,13. Bạn đang thiếu 1. đầu tiên, in (b) cần phải được thay đổi thành in (a):

a = 0 
b = 1

while b < 700:
    a, b = b, a+b
    print(a)

Sau đó, nếu bạn đang biểu thị nhiều hơn một biến, bạn chỉ có thể liệt kê tất cả các biến được phân tách bằng dấu phẩy bằng tất cả các giá trị được phân tách bằng dấu phẩy như thế này:

a,b,c,d = 1,2,3,4

Vì vậy, đối với mã của bạn sẽ dịch thành:

a,b = 0,1

while b < 700:
    a, b = b, a+b
    print(a)

Sau đó, loại bỏ không gian thêm đó, không gian trắng có nghĩa là một cái gì đó trong Python, mặc dù ở đây nó không thực sự tạo ra sự khác biệt:

a,b = 0,1
while b < 700:
    a, b = b, a+b
    print(a)

Vì vậy, tất cả những điều này cho đến nay chỉ là đủ để đưa bạn đến vấn đề ban đầu của bạn: bạn đang nhận được một lần lặp (mỗi giá trị liên tiếp trên một dòng riêng biệt). Dưới đây là cách bạn có thể nhận được danh sách đến bất kỳ số N:

First 7 Fibonacci numbers:
[0, 1, 1, 2, 3, 5, 8, 13]

First 15 Fibonacci numbers:
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610]

First 50 Fibonacci numbers:
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986, 102334155, 165580141, 267914296, 433494437, 701408733, 1134903170, 1836311903, 2971215073, 4807526976, 7778742049, 12586269025]
0

Hy vọng điều đó sẽ giúp