2017年10月29日 星期日

python 費氏數列

資料結構-網路資源

youtube網路資源:蕭志明老師

參考書籍python:



目前市面上有關python資料結構的書,都是其它語言硬套進來python環境,期待有更好的書籍可以完全以python的角度來寫資料結構。

n階層的遞迴,python寫法



結果:



遞廻也可以改寫為for迴圈,程式碼如下:

2017年10月11日 星期三

Python在「高中生解題系統」中要如何通過測資

高中生解題系統:https://zerojudge.tw/

該系統是由高師附中的老師所架設,這個網站真的很利害,可以讓你的程式設計功力大大的提升喔!

如果你是用python解題,那有幾個地方要注意一下:
(1)因為大部分的測資是連續的,所以你的程式一開頭必須是
import sys #引入sys
sInput = sys.stdin.readline()    # the 1st line
while (sInput != ""):
sInput = sInput.replace("\r", "").replace("\n", "")  #因為有些測資會在行的最後面有enter,所以最好去掉,避免錯誤
sInput =sInput .strip()   #避免有些測資在行的前面有空格或行的後面有空格
rawNumber_int=int(sInput)
Calc(rawNumber_int)  #開始執行你的主程式
sInput = sys.stdin.readline()   #再次讀再一筆測資

2017年10月3日 星期二

xoops主機架設

參考資料:tad xoops ob2d架設

本校自造中心maker網站架設記錄:
1.軟體版本:ubuntu linux 1604 server版本:網址

2.安裝過程選lamp server結束後,參考tad老師架設ob2d過程,另外要安裝ssh。

3.安裝xoops,參考tad老師xoops架設,採用xoops校園輕鬆架。過程中,要取消資料庫嚴謹模式,不能有些套件會沒辦法裝喔!

本校maker的ipv6設定如下:

2001:288:7293::6

mask 48

gateway 2001:288:7293::fffe

2017年9月28日 星期四

Htc Flyer更新紀錄

參考網站:阿剛老師的異想世界

學校裡申請了70台htc flyer平板電腦,目前參考阿剛老師的部落格,全數更新play商店及好用的app後,將讓同學進行「行動學習」,希望這批平板電腦能夠讓同學的學習效果更佳。

在阿剛老師部落格中用到的itool 3,我的電腦(win7 x64)無法讓htc flyer安裝軟體,所以改用「豌豆夾」,就可以了。

阿剛老師軟體備份存點

2017年8月23日 星期三

Python產生二維陣列方法(list)

matrix=[]
matrix.append([])
matrix.append([])
matrix[0].append(3)
matrix[0].append(5)
matrix[0].append(6)
matrix[0].append(7)
matrix[0].append(8)
matrix[1].append(4)
matrix[1].append(5)
matrix[1].append(3)
matrix[1].append(2)
matrix[1].append(3)
print(matrix)
結果為:
[[3, 5, 6, 7, 8], [4, 5, 3, 2, 3]]

另外作法,產生4 X 5的二維list,可這樣寫:

test_list=[ [None] * 5 for i in range(4) ]
print(test_list)

結果為:
[[None, None, None, None, None], [None, None, None, None, None], [None, None, None, None, None], [None, None, None, None, None]]

2017年8月12日 星期六

python讀入輸入檔(數字)並轉為list

python讀入資料為12 22 33 44時,可以用split分割後,放入list
例如:
import sys
input1_str=sys.stdin.readline() #讀入輸入
input1_list=input1_str.split()
print(type(input1_list))
print(input1_list)

輸入:
11 22 33 44

輸出結果:

['11', '22', '33', '44']

存入的list元素為string型態。如果要存為int,可以用for迴圈,轉為int
例如:
import sys
input1_str=sys.stdin.readline() #讀入輸入
input1_list=input1_str.split()
for i in range(len(input1_list)):
input1_list[i]=int(input1_list[i])
print(type(input1_list))
print(input1_list)

輸入:
11 22 33 44

輸出結果:

[11, 22, 33, 44]

wordpress遭駭,緊急更新

1.今天2017/08/12早上發現此部落格遭駭,2017年的文章全部都被植入廣告網址。
2.緊急把此主機的網路脫離,接著於主機上發現狀況還好,緊急進行WordPress的更新。
3.WordPress可以線上update,但是要修改幾個地方。
參考網址:「教學」WordPress 繞過 FTP 自動升級外掛與佈景主題http://diary.taskinghouse.com/posts/804951-wordpress-automatic-upgrade-plugin-and-theme-bypass-ftp-connection
4.連線主機,修改權限如下:
sudo chown -R www-data:www-data /var/www/biosomeday/
sudo chown -R www-data:www-data /var/www/biosomeday/
sudo chown -R www-data:www-data /var/www/biosomeday/
5.在 WordPress 主目錄下面的 wp-config.php 中插入下列這行指令:

6.接著就可以直接線上更新囉!!讚!

2017年7月26日 星期三

Python random模組

參考文章:Python random模块(获取随机数)常用方法和使用例子

使用前,請記得:
import random #導入random模組

常用例子如下:

random.random
random.random()用于生成一个0到1的随机符点数: 0 <= n < 1.0

random.randint
random.randint(a, b),用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b
print random.randint(12, 20)  # 生成的随机数 n: 12 <= n <= 20

2017年7月23日 星期日

python 字符串內建涵數

參考:Python基礎教程-字符串







































































































































































序号方法及描述
1capitalize()
将字符串的第一个字符转换为大写
2center(width, fillchar)
返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。
3count(str, beg= 0,end=len(string))
返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
4bytes.decode(encoding="utf-8", errors="strict")
Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。
5encode(encoding='UTF-8',errors='strict')
以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace'
6endswith(suffix, beg=0, end=len(string))
检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.
7expandtabs(tabsize=8)
把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 。
8find(str, beg=0 end=len(string))
检测 str 是否包含在字符串中 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1
9index(str, beg=0, end=len(string))
跟find()方法一样,只不过如果str不在字符串中会报一个异常.
10isalnum()
如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False
11isalpha()
如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False
12isdigit()
如果字符串只包含数字则返回 True 否则返回 False..
13islower()
如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
14isnumeric()
如果字符串中只包含数字字符,则返回 True,否则返回 False
15isspace()
如果字符串中只包含空白,则返回 True,否则返回 False.
16istitle()
如果字符串是标题化的(见 title())则返回 True,否则返回 False
17isupper()
如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
18join(seq)
以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
19len(string)
返回字符串长度
20ljust(width[, fillchar])
返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。
21lower()
转换字符串中所有大写字符为小写.
22lstrip()
截掉字符串左边的空格或指定字符。
23maketrans()
创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
24max(str)
返回字符串 str 中最大的字母。
25min(str)
返回字符串 str 中最小的字母。
26replace(old, new [, max])
把 将字符串中的 str1 替换成 str2,如果 max 指定,则替换不超过 max 次。
27rfind(str, beg=0,end=len(string))
类似于 find()函数,不过是从右边开始查找.
28rindex( str, beg=0, end=len(string))
类似于 index(),不过是从右边开始.
29rjust(width,[, fillchar])
返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串
30rstrip()
删除字符串字符串末尾的空格.
31split(str="", num=string.count(str))
num=string.count(str)) 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num 个子字符串
32splitlines([keepends])
按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。
33startswith(str, beg=0,end=len(string))
检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。
34strip([chars])
在字符串上执行 lstrip()和 rstrip()
35swapcase()
将字符串中大写转换为小写,小写转换为大写
36title()
返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())
37translate(table, deletechars="")
根据 str 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中
38upper()
转换字符串中的小写字母为大写
39zfill (width)
返回长度为 width 的字符串,原字符串右对齐,前面填充0
40isdecimal()
检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。

2017年7月20日 星期四

python中的動態變量(動態變數)

參考網址:
http://flysun8848.blog.163.com/blog/static/14846312013034839300/
http://yhhuanglab.blogspot.tw/2016/01/python.html

python中要實現動態變數不像其它語言,可以通過 字串+變數(通常數字),來達到動態變數。
C語言例如
for(i=0,i<5,i++){
"abc"+i+"de"=1
};
可達到abc0de=1;abc1de=1;abc2de=1;abc3de=1;abc4de=1

但是python要用:
for i in range(5):
____locals()["abc%s"%i+"de"]=1
可達到abc0de=1;abc1de=1;abc2de=1;abc3de=1;abc4de=1

 

也可放入兩個動態變量(例如i及j放入)
for i in range(1,11):
____j=9
____locals()["biosomeday%s%s" %( i , j )+"abc"]=3
____print(locals()["biosomeday%s%s" % ( i , j )+"abc"])

2017年7月13日 星期四

APCS檢測環境的建立

1.下載windows下可以運作的虛擬機程式Virtualbox

2.過程中一直下一步,全部允許增加就可以完成。

3.上APCS檢測網站下載ubuntu環境的光碟iso檔(2.48G)

4.開啟virtualbox

5.依圖示作即可完成





















2017年7月12日 星期三

Python教學資源

參考網站:

(1)Python 101 快速入門教學
(2)Python的歷史
(
3)程式語言教學誌
(
4)廖雪峰的免費教學-(內容基礎很多)
(5)Python3教程-菜鳥教程-(語法很完整)
(6)Python3簡明教程-有實驗室操作
(7)良葛格學習筆記

 

網站Youtube教學

Python教學-什麼是python?
(1)黃文龍:Python 程式語言入門 -- 課程介紹
(2)黃文龍:01 第一課 python 簡介(數字)
(3)黃文龍:02 第一課 python 簡介(字串)

台灣阿賢教學
(4)超入門 Python 教學 1 - 安裝 Python
(5)超入門 Python 教學 2 - 整數,浮點數,複數
(6)超入門 Python 教學 3 - 字串
(7)超入門 Python 教學 4.1 - 布林值,比較運算子,邏輯運算子,None
(8)超入門 Python 教學 4.2 - 邏輯運算子補充
(9)超入門 Python 教學 5 - 條件判斷

小甲魚Python視頻教學-(很完整,共53集,適合初學者觀看)
(1)小甲魚工作室-零基礎入門學習Python-youtube

Python練習題目:
(1)10個Python練習題
(2)Python練習100例

Windows下安裝Python及Eclipse

1.前往Python官網下載最新版本Python程式,視電腦是32位元(Windows x86 executable installer)或64位元,Windows x86-64 executable installer)。備註:最好是64位元的電腦

2.先裝java SDK(連結),請自行尋找windows版本的64位元或32位元程式。

3.安裝Eclipse最新版本Oxygen

上圖:

























在新增專案之前,要設定 eclipse的編碼系統,要改為預設 utf8





新增python專案















 

 

 

如果打程式碼有中文時,若按照之前的設定,還是不行的話,那就要在程式碼前做utf8的宣告。通常是因為你在新增python專案之前,沒有先更改eclipse的預設編碼。(是之前,若是新增專案之後才更改預設編碼,可能會產生編碼的問題,請再重新更改編碼後,再新增python專案)

 

//程式碼前記得宣告utf8編碼

#-*- coding: utf-8 -*-   ←表示使用 utf-8 編碼

 

 

 

2017年5月8日 星期一

Google教育方案G Suite for Education申請-2017版本

1.Google教育方案G Suite for Education提供學校單位使用Google服務,而且無容量上限,其中Gmail、雲端硬碟(同步雲)、Google文書處理、相簿備份、Google classroom等服務,都已經深入我們平常的日常用途了,但如果是一般帳號,容量可沒有這麼大,但是Google這家公司為了回饋教育,推出「G Suite for Education」方案,讓學校單位可以擁有開設google帳號,享有無容量上限的空間服務,以下是我們學校的申請過程:

參考資料:
(1)新北市學校單位申請(2)松禧老師教學日誌(3)Google官方說明

以台南市國中小單位申請為例:
1.上Google申請網頁,填寫資料:申請網址




2.接下來,選擇自己學校的網域,例如我們學校的首頁是http://www.hhjh.tn.edu.tw,所以我們學校所掌握的網域就是hhjh.tn.edu.tw,或是你要在自己的網域前加school之類的,我的想法是,越短越好,所以我給的就是單純的網域hhjh.tn.edu.tw,因為以後要給老師及學生們的帳號,能少打幾個字母就能減少一些打錯的機會。


3.建立管理帳號,Google教育方案通過後,可以通過這個超級管理者增加或停用帳號,或做一些管理動作,我習慣用「admin」,所以這邊我打admin,你也可以選用其它的,像是root之類的。密碼要建立強度夠強的,因為這個帳號,是非常的重要的。


4.接著頁面會跳入Google的登入畫面,如果沒有,你就自己登入google的登入網頁,輸入超級管理者的帳號,例如admin@hhjh.tn.edu.tw或是root@hhjh.tn.edu.tw,記得要打@之後的學校網域名稱。


5.接著,要輸入一個手機號碼做驗證,這裡我是輸入自己的手機,然後Google會發驗證碼,再輸入就可以了。




6.接著,就可以登入管理畫面,並開始驗證你具有網域的控制權,畢竟這可不是阿貓阿狗都可以申請的,嘿...






7.選擇「其它方法」,我們要用TXT的方式,去驗證我們網域的控制權。


8.你會得到有關TXT設定的數值,這個東西,要加在自己的DNS伺服器上,因為台南市教育網路中心已經把全台南市國中小的DNS都代管了,而且有web介面,所以這個部分我們可以登入「台南市國中小DNS代管網站」,去輸入這些數值即可。
9.登入「台南市國中小DNS代管網站」,輸入TXT的紀錄數值,完成網域的控制權認證。




10.進入編輯畫面,輸入TXT數值,最後保存後,點選「生效/執行」,然後等個數十秒,就會通過生效了。






11.大概等個1分鐘或是更久(台南市的DNS代管平台,我的經驗是等個幾秒),就以驗證成功了。




12.接著設定電子郵件所需要的MX紀錄,這個部分也要用到DNS代管平台。






13.進入「台南市DNS代管平台」,輸入MX紀錄,這個部分是大家都一樣的數值。你可以參考我的圖。




14.輸入完畢後,一樣要保存後,點選「生效/執行」,再過個幾秒,就生效了。最後,你來到管理畫面,你會看到,你的Google方案只有幾天的試用期,這裡,不用緊張,因為這個部分是由Google單位,以人工的方式再去審核,
過一個星期後,就會審核通過了(最後請記得寄Email信給Google服務員,要升級為教育版,才可加快審核進度喔!這部分請參考松禧老師教學日誌)。因為當初我太緊張了,然後又寄Email給google,後來,居然有一位講英文的Google客服人員打手機給我,直接告訴我,不必緊張,這幾天會審核...Google服務,真是不賴呀!


15.後記,有別校的同仁後來申請,Google會寄信至這個申請網域申請者的信箱,有可能要提供校長相關的佐證資料喔!若有人快到14天的試用期的話,記得趕快寄信給Google,加快人工的審核,若過了14天的試用期....似乎...可能收不到Google的信了,因為你也進不了管理者的信箱收Google的認證信了。最後的關鍵升級至教育版的過程,在松禧老師教學日誌中,有特別針對2017下半年Google的作法,做了詳盡的說明,大家可以參考松禧老師的說明喔!祝大家申請成功。