1. 程式人生 > >python 3.2隨便寫寫

python 3.2隨便寫寫

Python3 程式設計第一步

在前面的教程中我們已經學習了一些 Python3 的基本語法知識,下面我們嘗試來寫一個斐波納契數列。

例項如下:

#!/usr/bin/python3# Fibonacci series: 斐波納契數列# 兩個元素的總和確定了下一個數
a, b =0,1while b <10:print(b)
    a, b = b, a+b

執行以上程式,輸出結果為:

112358

這個例子介紹了幾個新特徵。

第一行包含了一個複合賦值:變數 a 和 b 同時得到新值 0 和 1。最後一行再次使用了同樣的方法,可以看到,右邊的表示式會在賦值變動之前執行。右邊表示式的執行順序是從左往右的。

輸出變數值:

>>> i =256*256>>>print('i 的值為:', i)
i 的值為:65536

end 關鍵字

關鍵字end可以用於將結果輸出到同一行,或者在輸出的末尾新增不同的字元,例項如下:

#!/usr/bin/python3# Fibonacci series: 斐波納契數列# 兩個元素的總和確定了下一個數
a, b =0,1while b <1000:print(b,end=',')
    a, b = b, a+b

執行以上程式,輸出結果為:

1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  1. print() sep 引數使用:

    >>> a=10;b=388;c=98>>>print(a,b,c,sep='@')10@388@98

       cnjc1855

      133***[email protected]

    9個月前 (08-06)
  2.    hackmeng

      715***[email protected]

    看了一下,目前還沒有把遞迴單獨拿出來講解

    下面使用遞迴方式求斐波納契數列

    其實遞迴就是函式內部呼叫自身。

    使用 print(fab(num)) #num 是所求項位於數列中的位數【‘fab(1)’是指第一位斐波納契數】,可用遞迴方式求輸入數字的斐波納契結果

    def fab(n):if n<
    1:print('輸入有誤!')return-1if n==1or n==2:return1else:return fab(n-1)+fab(n-2)

       hackmeng

      715***[email protected]

    8個月前 (09-13)
  3.    月夜面尊

      Han***[email protected]

    樓上說用遞迴的,單純說遞迴還好,其實遞迴在很大程度上犧牲了空間換取了可讀性。每次呼叫遞迴函式的時候都會建立一個函式棧,如果遞迴深度過大,則會造成溢位狀況。原文中使用a,b = b,a+b 方法求斐波那契數列,佔用空間少,來回只有兩個變數的空間佔用,很方便。

       月夜面尊

      Han***[email protected]

    5個月前 (12-10)
  4.    leviyb

      lev***@163.com

    樓上給出了求取斐波那契數列第n項的方法,利用列表可以將前20項輸出.但是遞迴演算法重複計算太多,基本計算到第40項就卡住了,太浪費資源,利用列表記錄n-1項,可以很大程度上減少重複計算量.利用字典記錄也可以實現相同運算.

    n=int(input('請輸入一個整數:'))def fab(n):if n<1:print('輸入有誤!')return-1if n==1or n==2:return1else:return fab(n-1)+fab(n-2)
    result=[]for i in range(1,n+1):
        result.append(fab(i))print(result)
    
    n=int(input('請輸入一個整數:')) 
    dic ={0:0,1:1}def fib(n):if n in dic:return dic[n]else:
            temp = fib(n-1)+fib(n-2)
            dic[n]= temp
            return temp
    for i in range(n):print(fib(i),end=" ")