發表文章

目前顯示的是 2015的文章

python 重載 overload

python不支持重載。習慣JAVA重載的寫作方式就要花點心思。每一種程式都有其思考的方式,也是該學習。不支持重載的python是如何思考的呢? 主要的問題還是在於python的參數型態不需要宣告。這是很方便的設計,但在重載上就會出問題。例如 def test(a, b):     print a*b def test(a, b):     xFile = open(b, 'r')     xFile.write(a)     xFile.close() 當程式出現這樣的寫法,後者的 test 會覆蓋前者。如果python支持重載,就必需要能進一步在編譯時判斷a是什麼,b是什麼。再決定使用那一個test。這也不是作不到,但以script語言來說,要付出一定的代價。語法也不再精簡。 兩個比較可行的方法 def test(a, b =1):     print a*b 這樣使用時,可選擇只給a,或 a 與 b同時給。 test(2) 印出 2 test(2,3) 印出 6 另一種方法就是用星號 def test(*a):     for i in a:         print i 這樣就不限制使用的參數數量 test(1,2,3,5) 印出 1 2 3 5 test(2,"good",5) 印出 2 good 5

python list remove

要移除python list 中的一個項目 a = [1,2,3,4,5,6] a.remove(2) 結果 a = [1, 3, 4, 5, 6] 想要移除所有項目 a=[1,2,3,4,5,6] a=[] #即可清空 或是 ( 小心會出錯,這是指標的問題 ) a = [1,2,3,4,5,6] for b in a:     a.remove(b) print a 結果 a = [2,4,6] 必需是 a = [1,2,3,3,4,5,6] for b in list(a):     a.remove(b) 結果 a=[]

清空 python list

清空python list,使用del與真接給定[]的分別 a = [1,2,3] b = a a=[] print a print b 得 a = [] b = [1,2,3] ###################################### a = [1,2,3] b = a del a[:] print a print b 得 a = [] b = []

Java 字串分開的方法

用split   String test = "It's a dog."; String[] testSplit = test.split(" ");  for ( int i = 0 ; i < testSplit.length ; i++ ){   System.out.println(testSplit[i]); System.out.println("\n"); }   印出 It's a dog.   ################################################################### 用token   String ori1 = "I am a good man."; StringTokenizer st1 = new StringTokenizer(ori1); while (st1.hasMoreTokens()) { System.out.print(st1.nextToken()); System.out.print('\n') } 印出 I am a  good man #################################################################### 用 scaner String ori1 = "I am a good man."; Scanner tokenize = new Scanner(ori1); while (tokenize.hasNext()){ System.out.print(tokenize.next()); System.out.print("\n"); }   印出 I am a  good man 除了split可以任意指定要分隔的字元。 token 和 scanner 都只能分隔空白鍵。

Java 陣列宣告

語言學多了,腦子的混亂度就開始增長。隨著年紀的增長,筆記就變成重要的東西。 在java中宣告陣列,可以如下 String[] iAmString; iAmString = new String[3]; 也可以如下 String iAmString[];          iAmString = new String[3]; 也可以如下 String[] iAmString = new String[3]; 也可以如下 String[] iAmString = {"apple","coffee","food"};  int[][][] arr = {                   {{1, 2, 3}, {4, 5, 6}},                   {{7, 8, 9}, {10, 11, 12}}                 }; String iAmString[] 中括號在參數名後面,這個語法好不好?見人見智!但我相信是給喜歡把一大堆東西一起宣告的人用的。例如 int x, y, w[], length; 喜歡分類的人總是要分的清楚 int x, y; int[] w;      //這是陣列 int length;     

android google map 使用

圖片
整個流程就是安裝 Google Play Service 的過程。 第一步 到 Android SDK Manager,把Tools更新到最新版吧! 主要更新的有 Android SDK Tools Android SDK Platform-tools Android SDK Build-tools PS. 如果這一步發生版本衝突無法安裝,請參考這一篇( Eclipse 移除 Plugin ),把衝突的版本移除。個人是在ADT上出現了問題,所以把舊ADT 2.0 移除。 移除後,從Help -> Install New Software,再次從  https://dl-ssl.google.com/android/eclipse/ 安裝即可。 第二步: 更新完,會在<android-sdk>/extras/google/底下長出一個 google_play_services, 如果沒有,請重開Eclipse -> Window -> Android SDK Manager 查看 Package 中的 extra 是否存在 google_play_services。如果存在,即可以安裝。 如果還是不存在,請將<android-sdk>/extras/google底下的資料都刪除,再一次重開Eclipse -> Window -> Android SDK Manager 此時extra就會出現google_play_services了。 PS. 我們可能忘了<android-sdk>的位置。沒關係,Eclipse -> Window -> Preferences -> Android 就會看到了。 第2步之1: 安裝完,在Eclipse 中 import -> Existing Android Code Into Workspace ,位置在<android-sdk>/extras/google/google_play_services/libproject/google-play-services_lib,記得複制一份到workspace下,再從workspace下的google-play-servic

Python 的多項式曲線擬合

圖片
import numpy as np import pylab as plt # 隨機產生資料點來Fit x = np.random . rand ( 7 ) y = np.random . rand ( 7 ) # 最高次項為4次方的多項式 line4 = polyfit ( x , y , 4 ) pn4 = poly1d ( line4 ) line3 = polyfit ( x , y , 3 ) # 最高次項為3次方的多項式 pn3 = poly1d ( line3 ) xaxis = linspace ( 0 , 1 , 100 ) plt . plot ( x , y , 'o' , xaxis , pn4 ( xaxis ), '-g' , xaxis , pn3 ( xaxis ), '-b' ) plt . legend ([ 'data to fit' , '4th degree poly' , '3th degree poly' ]) plt . axis ([ 0 , 1 , 0 , 1 ]) plt . show () 再提高次方數可以擬合的更好,點到即止。