點擊愛心追蹤,獲取每周免費文章

figure-1



各位朋友們大家早安,我是股宅,

今天要來教大家如何在 Python 裡創造屬於自己的函式。

在 Python 語言的世界哩,我們通常都使用官方預設的函式(例如 print、 range),

或是引用套件(package)裡別人寫好的函式(如 numpy、 pandas)構築出我們想要完成的事情。

除了引用他人寫少的函式外,我們也可用 def 功能來定義出自己專屬的函式,具體用法如下 : 


figure-2


上圖中,我們簡單定義出了平方的函式。

在第一行def 後,首先我們先打出想為函式命的名稱,圖中的例子我將函式命名為square;


在名稱後的括弧中,則打上函式中我們要輸入的值的代表(參數),

在例子裡,我們將想平方的數代表為x,之後打上冒號,結束第一行;


而在第一行我們則開始輸入我們想要函式做的事情,

與前三周所講的 for 與 if 一樣,在 def裡我們同樣透過縮排來代表函式的開始與結束位置,

在縮排後我們讓變數x再乘上自己,完成平方,並將結果命名成y。

在自定義函式後,我們通常會加上 return() 來告訴程式語言函式最後該回傳甚麼值。

接著我們將 x = 5 輸入函式裡做測試,函式回傳了正確答案25。


在自定義函式十,我們所設的參數可以有很多個 : 


figure-3


甚至還可以不設任何參數,例如以下我們寫擲硬幣的函式 : 


figure-4


在擲硬幣的例子哩,我們用到了套件 random 裡的 random( ) 函式,它會隨機給我們一個0~1之間的隨機值,

我們簡單用這個隨機值是否大於0.5來代表硬幣的正反面 : 


figure-5



自定義函式的功能在於將稍微複雜的功能包裝成一個函式,方便我們做後續的使用與程式閱讀,

底下我為大家寫了一個抽籤系統的函式,大家可以複製下來玩玩看並研究呦 ! 

有任何問題也歡迎大家留言發問~


figure-6


import numpy as np


def draw_lots() :

    

    range_ = input("請輸入號碼範圍,ex. 1~10 : ")

    range_ = np.array(range_.split("~")).astype(int)

    

    nums = input("請輸入中獎數量 : ")

    nums = int(nums)

    

    results = random.sample(range(range_[0],range_[1]+1),nums)

    

    print("Bingo! 以下為中獎號碼 : ",results)

    return(results)




必學的程式語言

一個月四篇免費基礎教學figure-1

總的來說 Python 是個簡單易學的程式語言,可做到的功能卻十分豐富,非常適合作為程式初學者學習的第一種程式語言,並且 Python 強大的資料處理分析能力及人工智慧支援性,使得 Python 能夠協助使用者處理以往 Excel 不容易處理的大數據,提升使用者的工作品質及效率。

這個訂閱專欄的主要功能,就是深入淺出的教大家寫 Python,只要跟著股宅一步一步的學習,不管在投資上、工作上,都能為自己加分喔!! 而且重點是 : 「絕對學得會」!


從 0 至 1 的新手程式教學

一、每月 4 篇輕量級 Python 教學

->程式學習

->投資應用

->生活應用

->資料整理

二、加開互動式議題研究室

每 3 個月做出一個短暫公開的網站,以數據分析探討一個股市/經濟議題/迷思/都市傳說,設計互動遊戲功能,讓使用者在互動過程中,檢視視覺化數據分析,從而了解議題,破解迷思。

一個月僅 99 元,趕緊訂閱加入學習 Python (點擊前往



拍手 拍手
1 次拍手
拍手 拍手
追蹤

推薦文章

您需要 後才能開始留言
凱凱sky
06/23

老師我使用spyder在程式代碼編輯區輸入抽籤的程式碼,按shift+enter在右下角的終端機部分再輸入draw_lots(),出現詢問我請輸入號碼範圍,ex.110,我輸入後就會出現以下錯誤,我不太懂為甚麼,請老師協助解惑,謝謝

請輸入號碼範圍,ex.110 : 110
Traceback (most recent call last):

File "", line 1, in
draw_lots()

File "", line 4, in draw_lots
range_=np.array(range_.split("~")).astype(int)

ValueError: invalid literal for int() with base 10: '\t:\t1'

顯示完整內容
回覆
【股宅學程式】: 工作加薪、投資理財,我都靠 Python
06/25

關鍵發生在 range_=np.array(range_.split("~")).astype(int) 這一行。

回覆
【股宅學程式】: 工作加薪、投資理財,我都靠 Python
06/25

我當初在打範圍時已經預設好範圍輸入格式為 "a~b" 的格式

回覆
【股宅學程式】: 工作加薪、投資理財,我都靠 Python
06/25

因此我在決定範圍上下界時是輸入指令讓程式碼以波浪號(~)區別範圍上下界。

回覆
【股宅學程式】: 工作加薪、投資理財,我都靠 Python
06/25

你如果想將範圍改寫成"a:b"的話要把split("~")改成split(":")。

回覆
聲音節目
沒有描述
--:--
--:--
1.0x
播放速度
2.0x
1.75x
1.5x
1.25x
1.0x
0.75x
收藏節目
播放清單
沒有播放清單
沒有待播放的清單
返回播放器
接著播放
清除全部
沒有待播放的清單