iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 7
0
Software Development

從零開始的Python練成記系列 第 7

[Day 7]不想重複寫一樣的運算式:建立方法吧

  • 分享至 

  • xImage
  •  

對於要重覆進行的指令,多數時間是可以透過for迴圈來達到自己的目的,不過for迴圈只能在重複執行命令的時候(好比:重複印出相同的字串)比較能用,那如果說是相同的運算式,只不過參數改變了呢?今天這篇文章就是針對這個情況而寫的,我們其實可以透過建立「方法」來把重複的運算式集合起來,然後透過呼叫這個方法來達成目的,那麼,廢話不多說,進入正題

先簡單舉個情境,如果說今天我是一個賣場的倉庫管理員,那麼我就會需要知道倉庫裡面有存放哪些東西,而且絕對是經過分類擺放的各式物品,先取三個種類的物品:水果、冷凍食品與肉品,分別如下:

1.水果(fruits):香蕉、芭樂、鳳梨、火龍果、蘋果
2.冷凍食品(freezed_food):冷凍水餃、冰棒、冰淇淋、冷凍三色蔬菜、冷凍湯品
3.肉品(Meats):羊肉、豬肉、牛肉、雞肉、鵝肉

就一如往常用Java來作範例吧:

package Lin.JCN.iTathlon
public class printList{
    public satatic void main(String args[]){
        String fruits[] = {"香蕉","芭樂","鳳梨","火龍果","蘋果"};
        String freezed_food[] = {"冷凍水餃","冰棒","冰淇淋","冷凍三色蔬菜","冷凍湯品"};
        String meats[] = {"羊肉","豬肉","牛肉","雞肉","鵝肉"};
        for(int i=0;i<fruits.length;i++){
            if(i==fruits.length-1){
                System.out.println(fruits[i]);
            }else{
                System.out.print(fruits[i]+" ");
            }
        }
        for(int i=0;i<freezed_food.length;i++){
            if(i==freezed_food.length-1){
                System.out.println(freezed_food[i]);
            }else{
                System.out.print(freezed_food[i]+" ");
            }
        }
        for(int i=0;i<meats.length;i++){
            if(i==meats.length-1){
                System.out.println(meats[i]);
            }else{
                System.out.print(meats[i]+" ");
            }
        }
    }
}

如果我必須特地為每一個陣列都寫一個for迴圈來把所有資料都印出來的話,三個陣列看起來還好 ,或許用Ctrl+c / Ctrl+v就可以解決,但是當今天有超過十個以上的分類,更不確定之後是不是會需要新增其他類別的陣列的話,這樣就是一個搞死工程師的狀態;所以,這個時候透過建立方法來把一直重複的For迴圈獨立出來變成一個方法,這樣也就比較方便啦,那就來試試看吧:

package Lin.JCNiTathlon
public class printList{
	public PrintList() {
		//在java必須先建立一個空方法,才能做後續的呼叫
	}
	public void Printer(String items[]) {
        //透過建立這個"Printer"方法,並且在括號裡面放入要套入的參數,這樣就可以省去不少時間
		for(int i=0;i<items.length;i++){
            //所以就在這裡提出for迴圈的部分
            if(i==items.length-1){
                System.out.println(items[i]);
            }else{
                System.out.print(items[i]+" ");
            }
        }
	}
    public satatic void main(String args[]){
        PrintList pl = new PrintList();
        //建立空方法,宣告參數,後續就可以做為呼叫方法的建構值
        String fruits[] = {"香蕉","芭樂","鳳梨","火龍果","蘋果"};
        String freezed_food[] = {"冷凍水餃","冰棒","冰淇淋","冷凍三色蔬菜","冷凍湯品"};
        String meats[] = {"羊肉","豬肉","牛肉","雞肉","鵝肉"};
        pl.Printer(fruits);
        pl.Printer(freezed_food);
        pl.Printer(meats);
        //上面這三行就是呼叫方法的句型啦
    }
}

這樣看下來,我就覺得在Java裡面真的是很多複雜的結構,換做Python就瞬間讓我變得很懶真的是很人性化,那就來看看在Python的實際操作吧:

def printlist(type): #這就是在Python裡面建立方法的宣告式
    print(type)
#注意,在Python裡面是透過每一行的對其位置來判斷是否為同一個方法要做的內容
fruits = ["香蕉","芭樂","鳳梨","火龍果","蘋果"]
freezed_food = ["冷凍水餃","冰棒","冰淇淋","冷凍三色蔬菜","冷凍湯品"]
meats = ["羊肉","豬肉","牛肉","雞肉","鵝肉"]

printlist(fruits)
printlist(freezed_food)
printlist(meats)

而輸出結果就像下方所示:

['香蕉', '芭樂', '鳳梨', '火龍果', '蘋果']
['冷凍水餃', '冰棒', '冰淇淋', '冷凍三色蔬菜', '冷凍湯品']
['羊肉', '豬肉', '牛肉', '雞肉', '鵝肉']

真的是省了不少力氣呢030,也在這裡先建一個七天達成的里程碑~~~~~


上一篇
[Day 6]如何讓程式記錄我的輸入: Input方法
下一篇
[Day 8]這麼棒的功能我怎麼不知道:Sort方法
系列文
從零開始的Python練成記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言