1. 程式人生 > >Python——面試小題

Python——面試小題

1、關於斐波那契數列

什麼是斐波那契數列,斐波那契數列就是形如”0 1 1 2 3 5 8 13 21“這種數列

即某個值等於前兩個值之和,所以我們使用遞迴函式時,最主要的就是要將所求某個數的前兩個值之和加起來。

#關於斐波那契數列的第一種使用遞迴的用法 

 def fibo(n):
     if n==1:
             return 0
     if n==2:
             return 1
     return fibo(n-1)+fibo(n-2)

#這個遞迴出來的數相當於數列的第一個數的下標為1

#關於斐波那契數列的第二種使用遞迴的用法

#第一種:
 def fibo(n):
     if n==0 or n==1:      # if n<=1
             return n
     return fibo(n-1)+fibo(n-2)

#這個遞迴出來的數相當於數列的第一個數的下標為0

2、關於賦值前變數的引用

首先我們要了解在Python中,關於函式的作用域,即關於LEGB的優先權,如果不瞭解LEGB,可以先去了解一下。

#首先我們現在函式外面定義一個變數x,然後在函式內呼叫並宣告變數x

 x = 5
 def f():
     print(x)
     x+=1

#呼叫函式f(),會出現如下錯誤
 f()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in f
UnboundLocalError: local variable 'x' referenced before assignment


#出現如上錯誤是因為賦值前引用變數x,即在程式在執行這個函式時,當執行函式時,程式會自動先在這個函式裡面尋找變數x,如果沒有則會跳出這函式,但是在這個函式裡面,有變數x,所以不會跳出這個函式,但是這個變數定義在引用變數之後,這是不允許的,所以會報錯。