2019年11月22日 星期五

中興智能創作課程


Let's make it ! 中興智能創作課程,總共規劃三個主題:1.智慧農業2.網路爬蟲3.人工智慧。
1081020日辦理第一個主題「智慧農業」,邀請南開科技大學民生學院院長林正敏院長蒞臨本校擔任講座,此次課程主要是運用物聯網的概念與技術,結合無線通訊科技,將蒐集與擷取到的感測數據上傳至雲端資料庫。經過一天充實的課程安排,參與的老師、學生們都覺得學習到對自己有幫助的課程,滿心期待接下來另外兩個主題的相關課程!(國立中興高中1081020臉書)






林正敏院長積極推動智慧科技,近來尤其熱衷於Python程式設計。他辛勤奔走於小學中學和大學校園,也在社區積極推動。



2019年11月21日 星期四

百香果USR之Python程式設計教材

誰說大學教師一定要有博士學位呢?有數十年的經驗的傑出農民也能成為大學最棒的業師,傳授學生如何為百香果搭建棚架,農民業師與師生共同討論要如何搭會比較適合百香果生長⋯⋯。

以下是南開科技大學推動大學社會責任實踐計畫-南投百香果資源永續之煉銀網平台所發展出來的教材。

基礎篇
  1. Python一下百香果故鄉在南投埔里
  2. 百香果含有超過130種以上的芳香物質,130是整數還是字串?
  3. 從百香果分級來看Python的List串列資料結構
  4. 用Python多層容器來儲存百香果大小規格,並用切片來存取
  5. 百香果分級標準居然可以用不可更改的元組來表示
  6. 一堆不可以重複以及改變值的資料的集合可用來百香果分級判斷
  7. 超好用的字典,用鍵查值的觀念來查百香果的分級標準
  8. 用百香果資料串列來學習Python的迴圈
  9. 用百香果資料串列來學習Python的分支

應用篇
  1. 用Python找出埔里地區的文化資產
  2. 用Python來撰寫顯示今天百香果市場交易情形的程式
  3. 用Python來顯示今天各市場百香果交易的統計圖
  4. 使用Python和Django設計百香果農產品交易行情網站
  5. 用Python撰寫「用戶定義的HTTP回呼」結合IFTTT服務在LINE群組報導百香果交易情形
  6. 使用Python/pyecharts四行程式搞定百香果近8年的交易行情圖
  7. 用Python實作水果分類器
  8. Python實作各種水果分類器那一種最好?
  9. 利用最近鄰居法(KNN)搭配matplotlib畫出水果分類圖
  10. 百香果交易行情網站設計(一) - 取得百香果市場交易
  11. 百香果交易行情網站設計(二) - 四個步驟搞定Mezzanine
  12. 百香果交易行情網站設計(三) - 更換主題醜小鴨變天鵝
  13. 百香果交易行情網站設計(四) - 讓Mezzanine承接自己的意圖
  14. 初體驗! 使用pyecharts以水果交易行情為例
  15. 使用Flask模板瑄染,製作水果交易網站
  16. 製作水果交易網站(一) -在Django中用pyecharts製作圖表
  17. 製作水果交易網站(二) - 前後台分離
  18. 製作水果交易網站(三) - 定時全量更新數據
  19. 製作水果交易網站(四) - 定時增量更新圖表
  20. 利用Python透過氣象開放資料平台取得百香果故鄉的氣象資料
  21. 利用MicroPython透過OpenWeather取得百香果故鄉的氣象資料

2019年10月11日 星期五

埔里百香果冰淇淋出現在「中華民國 108 年國慶酒會」

中華民國 108 年國慶酒會出現三款冰淇淋,分別是紅玉紅茶、埔里百香果、文山包種茶。

(圖片摘自下列影片在1分12秒處)

開設創新創業規劃與輔導微學分課程培育創新創業人才

南開科技大學USR-南投百香果資源永續之煉銀網平台計畫開課拉!此次與勞動力發展署中彰投分署青年職涯發展中心暨TCN創客基地-南投據點共同合辦「創新創業規劃與輔導微學分課程」研習,藉由瞭解創業計畫書撰寫、餐飲業創業之現況、政府補助資源以及案例分享等一系列課程規劃安排,培育並啟發同學具備創意、創新、創業的能力與素養,建立創新創業的信心,以成為真正創新創業型人才。
活動資訊:
上課時間:108年10月08日至11月12日每週二下午13:00~16:00,共計6週

2019年8月20日 星期二

百香果栽培新里程碑無毒果園揭牌,全果加值應用做成面膜、蜜餞、蛋糕、冰淇淋



南開科技大學執行教育部大學社會責任實踐計畫南投百香果資源永續煉銀網平台計畫團隊,於108819日來到百香果故鄉南投縣埔里鎮合成里展開一天的行程。回顧107317該計畫團隊與社區民眾首次座談、10766日又再次座談,還有不記次數的明查暗訪。密集座談訪問的目的是藉以了解社區需求,回應社區期待,確立了計畫的走向。轉眼來到了108819日,計畫執行一年多了,有哪些成果?有哪些可以向大眾分享?

    早上到鄭家果園,為無毒果園揭牌去年4月南開團隊在校園栽植30棵百香果,採用無毒友善管理。在不噴灑藥劑的情況下,成功地讓百香果獲得豐碩的收成。果樹度過寒冬,在春分時節,又產出新的的果實。可惜初夏的大豪雨夾帶狂風吹倒了棚架,校園百香果暫時走入歷史。感謝鄭家願意以一年的收成風險讓南開實現無毒場域的理想,也無縫接軌校園百香果。如今鄭家果園滿滿健碩的果實,讓大家鬆了一口氣,也證實我們走在正確的道路上。





下午舉行百香果加值產品發表。由計畫主持人孫校長台平教授以及陳信順里長共同主持,孫校長首先告訴大家一個好消息,計畫團隊所設計的NPF商標具備高產業價值通過,其中N有南投、南開和無毒三層意義;P代表百香果、熱情;而F則有水果以及福爾摩沙諸多種意義。陳里長首先感謝南開科技大學集全校之力,以社區共好、共遊、和共榮三個子計畫投入大學社會責任,經過一年多,成果大家有目共睹,特別感謝孫校長所帶領的煉銀網團隊。

今日發表產品有果皮提煉花青素做的面膜、果肉製成的蜜餞、果汁做成百香果蛋糕、百香果法式冰淇淋等,這些產品都是南開科技大學教師帶領學生完成的,除了有人才培育外,更鏈結在地資源。座談會也有邀請行銷專長的業者雞耀密酥黃榮祥和高應大趙伯元老師提供行銷管道。面膜由陳榮煇學務長提煉花青素研發、果皮蜜餞由本校老師紀璟叡老師研發,百香果蛋糕是甜心大叔江鈴莉、林育德研發。面膜體驗由沐馨工作室創辦人邱斐俞主持,當場邀請合成里三位里民體驗面膜,邱創辦人示範如何運用科學方法來看面膜的保養效果,三位體驗的里民紛紛表示體驗者都稱好。法式冰淇淋是吳書瑀團隊研發,這隻冰淇淋即將在國慶進軍國宴,無毒百香果冰淇淋即將走向國際舞台。純而不膩細緻軟密的蛋糕獲得合成里陳里長高度讚賞,法式冰淇淋打破用添加物才能做出冰淇淋的成規」完整保留百香果的香甜。冰淇淋和蛋糕業者都走天然無添加方向,符合環境永續與身心健康之現代趨勢。面膜、蜜餞則發揮回收再利用之精神,並需以無毒產品為原料,大有益於環境之永續

百香果花青素面膜

面膜體驗

法式冰淇淋 吳書瑀小姐

百香果汁法式冰淇淋

甜心大叔 林育德 先生

百香果汁蛋糕

紀璟叡老師研發果皮蜜餞

百香果果皮蜜餞


2019年8月4日 星期日

利用最近鄰居法(KNN)搭配matplotlib畫出水果分類圖

程式原始碼:https://github.com/susanli2016/Machine-Learning-with-Python/blob/master/Solving%20A%20Simple%20Classification%20Problem%20with%20Python.ipynb

水果資料來源:https://github.com/susanli2016/Machine-Learning-with-Python/blob/master/fruit_data_with_colors.txt


在上一篇文章中,我們發現最近鄰居法(KNN)在水果分類上表現最好,本篇將原始程整理後列出,並以matplotlib套件畫出水果分類圖,在原始程式中有一點小小錯誤,在第25行,已修復,讀者不妨試試。




 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.cm as cm
from matplotlib.colors import ListedColormap, BoundaryNorm
import matplotlib.patches as mpatches
import matplotlib.patches as mpatches
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier

fruits = pd.read_table('fruit_data_with_colors.txt')

X = fruits[['mass', 'width', 'height', 'color_score']]
y = fruits['fruit_label']
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

def plot_fruit_knn(X, y, n_neighbors, weights):
    X_mat = X[['height', 'width']].as_matrix()
    y_mat = y.as_matrix()

    # Create color maps
    cmap_light = ListedColormap(['#FFAAAA', '#AAFFAA', '#AAAAFF','#AFAFAF'])
    cmap_bold  = ListedColormap(['#FF0000', '#00FF00', '#0000FF','#AFAFAF'])

    clf = KNeighborsClassifier(n_neighbors, weights=weights)
    clf.fit(X_mat, y_mat)

    # Plot the decision boundary by assigning a color in the color map
    # to each mesh point.
    
    mesh_step_size = .01  # step size in the mesh
    plot_symbol_size = 50
    
    x_min, x_max = X_mat[:, 0].min() - 1, X_mat[:, 0].max() + 1
    y_min, y_max = X_mat[:, 1].min() - 1, X_mat[:, 1].max() + 1
    xx, yy = np.meshgrid(np.arange(x_min, x_max, mesh_step_size),
                         np.arange(y_min, y_max, mesh_step_size))
    Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])

    # Put the result into a color plot
    Z = Z.reshape(xx.shape)
    plt.figure()
    plt.pcolormesh(xx, yy, Z, cmap=cmap_light)

    # Plot training points
    plt.scatter(X_mat[:, 0], X_mat[:, 1], s=plot_symbol_size, c=y, cmap=cmap_bold, edgecolor = 'black')
    plt.xlim(xx.min(), xx.max())
    plt.ylim(yy.min(), yy.max())

    patch0 = mpatches.Patch(color='#FF0000', label='apple')
    patch1 = mpatches.Patch(color='#00FF00', label='mandarin')
    patch2 = mpatches.Patch(color='#0000FF', label='orange')
    patch3 = mpatches.Patch(color='#AFAFAF', label='lemon')
    plt.legend(handles=[patch0, patch1, patch2, patch3])

        
    plt.xlabel('height (cm)')
    plt.ylabel('width (cm)')
    plt.title("4-Class classification (k = %i, weights = '%s')"
              % (n_neighbors, weights))
    
    plt.show()
plot_fruit_knn(X_train, y_train, 5, 'uniform')

2019年7月14日 星期日

Python實作各種水果分類器那一種最好?

本篇文章延續上一篇:用Python實作水果分類器

水果分類器採用機器學習的技巧來實作,因此可以看出所有的演算法都是把資料分成訓練組和測試組,大家不妨找出那一種分類法,所得到分數最高,就是比較適合水果分類的方法。

求邏輯迴歸(Logistic Regression)值:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import pandas as pd
import matplotlib.pyplot as plt
fruits = pd.read_table('fruit_data_with_colors.txt')

from pandas.tools.plotting import scatter_matrix
from matplotlib import cm
feature_names = ['mass', 'width', 'height', 'color_score']
X = fruits[feature_names]
y = fruits['fruit_label']

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

from sklearn.linear_model import LogisticRegression
logreg = LogisticRegression()
logreg.fit(X_train, y_train)
print('Accuracy of Logistic regression classifier on training set: {:.2f}'
     .format(logreg.score(X_train, y_train)))
print('Accuracy of Logistic regression classifier on test set: {:.2f}'
     .format(logreg.score(X_test, y_test)))

執行結果:

決策樹(Decision Tree):
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import pandas as pd
import matplotlib.pyplot as plt
fruits = pd.read_table('fruit_data_with_colors.txt')

from pandas.tools.plotting import scatter_matrix
from matplotlib import cm
feature_names = ['mass', 'width', 'height', 'color_score']
X = fruits[feature_names]
y = fruits['fruit_label']

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)


from sklearn.tree import DecisionTreeClassifier

clf = DecisionTreeClassifier().fit(X_train, y_train)

print('Accuracy of Decision Tree classifier on training set: {:.2f}'
     .format(clf.score(X_train, y_train)))
print('Accuracy of Decision Tree classifier on test set: {:.2f}'
     .format(clf.score(X_test, y_test)))

執行結果:

設置最大決策樹深度有助於避免過度擬合(Overfitting):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import pandas as pd
import matplotlib.pyplot as plt
fruits = pd.read_table('fruit_data_with_colors.txt')

from pandas.tools.plotting import scatter_matrix
from matplotlib import cm
feature_names = ['mass', 'width', 'height', 'color_score']
X = fruits[feature_names]
y = fruits['fruit_label']

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)


from sklearn.tree import DecisionTreeClassifier
clf2 = DecisionTreeClassifier(max_depth=3).fit(X_train, y_train)
print('Accuracy of Decision Tree classifier on training set: {:.2f}'
     .format(clf2.score(X_train, y_train)))
print('Accuracy of Decision Tree classifier on test set: {:.2f}'
     .format(clf2.score(X_test, y_test)))
執行結果:

K-最近鄰居法(K-Nearest Neighbors):
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import pandas as pd
import matplotlib.pyplot as plt
fruits = pd.read_table('fruit_data_with_colors.txt')

from pandas.tools.plotting import scatter_matrix
from matplotlib import cm
feature_names = ['mass', 'width', 'height', 'color_score']
X = fruits[feature_names]
y = fruits['fruit_label']

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)


from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier()
knn.fit(X_train, y_train)
print('Accuracy of K-NN classifier on training set: {:.2f}'
     .format(knn.score(X_train, y_train)))
print('Accuracy of K-NN classifier on test set: {:.2f}'
     .format(knn.score(X_test, y_test)))

執行結果:


線性區別分析(

Linear Discriminant Analysis):
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import pandas as pd
import matplotlib.pyplot as plt
fruits = pd.read_table('fruit_data_with_colors.txt')

from pandas.tools.plotting import scatter_matrix
from matplotlib import cm
feature_names = ['mass', 'width', 'height', 'color_score']
X = fruits[feature_names]
y = fruits['fruit_label']

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
lda = LinearDiscriminantAnalysis()
lda.fit(X_train, y_train)
print('Accuracy of LDA classifier on training set: {:.2f}'
     .format(lda.score(X_train, y_train)))
print('Accuracy of LDA classifier on test set: {:.2f}'
     .format(lda.score(X_test, y_test)))

執行結果:


單純貝氏分類器(Gaussian Naive Bayes):
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import pandas as pd
import matplotlib.pyplot as plt
fruits = pd.read_table('fruit_data_with_colors.txt')

from pandas.tools.plotting import scatter_matrix
from matplotlib import cm
feature_names = ['mass', 'width', 'height', 'color_score']
X = fruits[feature_names]
y = fruits['fruit_label']

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

from sklearn.naive_bayes import GaussianNB
gnb = GaussianNB()
gnb.fit(X_train, y_train)
print('Accuracy of GNB classifier on training set: {:.2f}'
     .format(gnb.score(X_train, y_train)))
print('Accuracy of GNB classifier on test set: {:.2f}'
     .format(gnb.score(X_test, y_test)))

執行成果:


支撐向量機(support vector machine, SVM):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import pandas as pd
import matplotlib.pyplot as plt
fruits = pd.read_table('fruit_data_with_colors.txt')

from pandas.tools.plotting import scatter_matrix
from matplotlib import cm
feature_names = ['mass', 'width', 'height', 'color_score']
X = fruits[feature_names]
y = fruits['fruit_label']

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

from sklearn.svm import SVC
svm = SVC()
svm.fit(X_train, y_train)
print('Accuracy of SVM classifier on training set: {:.2f}'
     .format(svm.score(X_train, y_train)))
print('Accuracy of SVM classifier on test set: {:.2f}'
     .format(svm.score(X_test, y_test)))

執行結果:

2019年7月13日 星期六

用百香果資料串列來學習Python的分支

可以改變果重變數值的內容:
1
2
3
果重 = 89
大小規格='大(L)' if 果重 > 80 else '中(M)' if 果重 > 60 else '小(S)'
print(大小規格)

執行結果:

用Python實作水果分類器

程式原始碼:https://github.com/susanli2016/Machine-Learning-with-Python/blob/master/Solving%20A%20Simple%20Classification%20Problem%20with%20Python.ipynb

水果資料來源:https://github.com/susanli2016/Machine-Learning-with-Python/blob/master/fruit_data_with_colors.txt

我們先滙入pandas和matplotlib.pyplot函式,分別用來處理資料以及繪製統計圖。首先我們先使用read_table函式來讀取fruit_data_with_colors.txt的資料,並把資料集存在fruits變數中,然後呼叫head()讀取資料前五筆資料,其程式如下:

1
2
3
4
import pandas as pd
import matplotlib.pyplot as plt
fruits = pd.read_table('fruit_data_with_colors.txt')
print(fruits.head())

執行結果:



若要資料集的輪廓,可以讀取shape,其程式如下:

1
2
3
4
import pandas as pd
import matplotlib.pyplot as plt
fruits = pd.read_table('fruit_data_with_colors.txt')
print(fruits.shape)

執行結果:共有59筆資料,有7個欄位。

若想要知道資料集中有幾種水果,可以先讀取fruit_name欄位中的資料,再使用unique()來過濾掉重覆值。

1
2
3
4
import pandas as pd
import matplotlib.pyplot as plt
fruits = pd.read_table('fruit_data_with_colors.txt')
print(fruits['fruit_name'].unique())

執行結果:可以看出四種水果

接下來我們來繪製數量統計圖,這時我們採用seaborn函式庫。

1
2
3
4
5
6
7
import pandas as pd
import matplotlib.pyplot as plt
fruits = pd.read_table('fruit_data_with_colors.txt')

import seaborn as sns
sns.countplot(fruits['fruit_name'],label="Count")
plt.show()

執行結果:

為了觀察資料的變異值,我們選用盒鬚圖來繪製。

1
2
3
4
5
6
7
8
import pandas as pd
import matplotlib.pyplot as plt
fruits = pd.read_table('fruit_data_with_colors.txt')

fruits.drop('fruit_label', axis=1).plot(kind='box', subplots=True, layout=(2,2), sharex=False, sharey=False, figsize=(9,9),
    title='Box Plot for each input variable')
plt.savefig('fruits_box')
plt.show()

執行結果:


接下來我們使用直方圖來表示各輸入值的分佈情形:
1
2
3
4
5
6
7
8
9
import pandas as pd
import matplotlib.pyplot as plt
fruits = pd.read_table('fruit_data_with_colors.txt')

import pylab as pl
fruits.drop('fruit_label' ,axis=1).hist(bins=30, figsize=(9,9))
pl.suptitle("Histogram for each numeric input variable")
plt.savefig('fruits_hist')
plt.show()

執行結果:

我們來看看各變數間的相依關係:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import pandas as pd
import matplotlib.pyplot as plt
fruits = pd.read_table('fruit_data_with_colors.txt')

from pandas.tools.plotting import scatter_matrix
from matplotlib import cm
feature_names = ['mass', 'width', 'height', 'color_score']
X = fruits[feature_names]
y = fruits['fruit_label']
cmap = cm.get_cmap('gnuplot')
scatter = pd.scatter_matrix(X, c = y, marker = 'o', s=40, hist_kwds={'bins':15}, figsize=(9,9), cmap = cmap)
plt.suptitle('Scatter-matrix for each input variable')
plt.savefig('fruits_scatter_matrix')
plt.show()

執行結果:

求邏輯迴歸分類值:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import pandas as pd
import matplotlib.pyplot as plt
fruits = pd.read_table('fruit_data_with_colors.txt')

from pandas.tools.plotting import scatter_matrix
from matplotlib import cm
feature_names = ['mass', 'width', 'height', 'color_score']
X = fruits[feature_names]
y = fruits['fruit_label']

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

from sklearn.linear_model import LogisticRegression
logreg = LogisticRegression()
logreg.fit(X_train, y_train)
print('Accuracy of Logistic regression classifier on training set: {:.2f}'
     .format(logreg.score(X_train, y_train)))
print('Accuracy of Logistic regression classifier on test set: {:.2f}'
     .format(logreg.score(X_test, y_test)))

執行結果:

對於有關其他統計分析可以參考:http://www.atyun.com/14092.html

2019年7月7日 星期日

用百香果資料串列來學習Python的迴圈

參考1:How to loop with indexes in Python
參考2:從百香果分級來看Python的List串列資料結構

在Python語言中,迴圈就屬while和for兩種,我們先從while開始介紹,從參考2中,可以得知使用PassionFruit用串列方式來儲存資料。首先我們先使用一個計數器的變數i,第三行程式將i歸零,第5行程式,呼叫len()來取得串列儲存資料的個數,因此當計數器i小於List的長度時,把計數當成索引值來讀取PassionFruit串列的內容。

1
2
3
4
5
6
7
PassionFruit=['適用範圍','改良種','統一編碼','2030200000515','品名代碼','51']

i=0

while i<len(PassionFruit):
    print(PassionFruit[i])
    i+=1

執行結果:

第二種寫法,我們採用for指令,搭配range()來產生從0到len()-1的數字,這些數字會依序放在i變數中,因此就可以用i當成索引值來讀取PassionFruit的資料。

1
2
3
4
PassionFruit=['適用範圍','改良種','統一編碼','2030200000515','品名代碼','51']

for i in range(len(PassionFruit)):
    print(PassionFruit[i])

第三種寫法是最常用的,直接利用逐一檢視串列中的元素。
1
2
3
4
PassionFruit=['適用範圍','改良種','統一編碼','2030200000515','品名代碼','51']

for item in PassionFruit:
    print(item)

第四種再使用索引值。
1
2
3
4
PassionFruit=['適用範圍','改良種','統一編碼','2030200000515','品名代碼','51']

for i in range(len(PassionFruit)):
    print("PassionFruit {}: {}".format(i + 1, PassionFruit[i]))

執行結果:

最後一種採用列舉的方式,會把總共有多少的數量傳給num變數,然後再逐一的讀取串列中每個元素。
1
2
3
4
PassionFruit=['適用範圍','改良種','統一編碼','2030200000515','品名代碼','51']

for num, item in enumerate(PassionFruit):
    print("{}: {}".format(num, item))

執行結果:

2019年6月23日 星期日

百香果USR團隊用Python啟動資訊力發揮格萊珉互助精神



南開科技大學孫台平校長為大學社會責任實踐計畫-「南投百香果資源永續之煉銀網平台」計畫主持人,他以敏銳科技觀察力發現Python語言的重要性,計畫起跑,即指示煉銀網平台以Python為核心建構網路服務平台,來落實人才培育以及在地鏈結。
該計畫執行長林正敏教授以Python/Django/Mezzanine等技術發展快速地架設具有內容管理系統(Content Management SystemCMS)功能的網站之動手做教材,並於107學年度第二學期於該校民生學院院必修課程「物聯網程式設計」進行試教,經由期中考評量結果不管是餐管、文創、福祉、和應外等非資訊專業系科的學生,都能順利完成CMS網站的架設。
台灣尤努斯基金會透過發展格萊珉微型信貸及社會型企業,致力於貢獻社會、改善台灣民生問題,並強化非營利組織與企業之間的合作交流。該基金會於2018929日在台中市霧峰區光復新村國際NGO中心設立社會型企業創新輔育基地。尤努斯基金會董事長蔡慧玲女士邀請南開科技大學百香果USR團隊成為尤努斯社企聯盟一員。百香果USR團隊與尤努斯社企聯盟發揮格萊珉互助精神,以共享經濟模式朝輔導聯盟成員,創立社會企業來解決社會貧窮和飢餓等問題。
為了發揮格萊珉互助精神,台灣尤努斯基金會成立尤努斯社企聯盟樂學堂,舉辦一系列研習活動,包括:手拍微電影、社群行銷、啟動資訊力、以及指引技術等課程。2019620日邀請「南投百香果資源永續之煉銀網平台」執行長林正敏院長分享簡易網站架設實作,活動策劃人邱仲呈先生以及李東霖先生在活動開始前非常擔憂資訊力不足的學員的學習,經由4小時的研習活動,每位學員竟然都能順利地完成Python/Django/Mezzanine的網站架設。經由大學社會責任所研發教材經由課堂試教,再擴散到社會型企業創新輔育基地的場域實作的成功,再度印證孫台平校長獨到眼光。用最好的人工智慧語言Python來發展百香果煉銀網平台是正確方向。