發表文章

目前顯示的是 9月, 2019的文章

讓你成為Python控制結構達人(1)布林值

圖片
首篇Python控制結構教學,先來學學入門的學問-布林值的True 和False大解密! Python 程式語法中的其中一種,就是布林代數 (Boolean algebra),而 Python教學 就會告訴你,它布林型態為 bool。 說到布林值(Boolean value),它僅有兩種: True 和 False。 而布林值可以藉由關係運算子 (Relational operator) 來建立。例如:兩個等號 == 用來比較兩個值,如果相等,回覆 True,否則就回覆 False: >>> Megadeth = True >>> bool(Megadeth) True >>> bool(2==3) False >>> bool(3==3) True >>> bool("Hangar 18"=="Hangar 18") True >>> bool("Return to Hangar"=="Return to Hangar") True 與兩個等號「==」相反的關係運算子「!=」,也是用來比較兩個值,如果「不」相等就回覆 True,否則回覆 False: >>> bool(2!=3) True >>> bool(2!=2) False >>> bool("Megadeth"!="Megadeth") False >>> bool("megadeth"!="Megadeth") True Python教學 中應該都有提到,在  Python 中, 大小寫是不能視為相等的 。所以上方最後兩個例子雖然字母都一樣(都為 “Megadeth”),但是後一個例子的開頭字母大小寫不同,所以就被視為「不」相等。 比較兩個數值(不限整數或是浮點數)大小的運算子「>(大於)」、「<(小於)」、「>=(大於或等於)」、「<=(小於或等於)」 請看以下例子: >&

使用SEO,知己知彼才能百戰百勝!(下)分析競爭者網站的數據

圖片
在SEO中,知道如何分析競爭者網站的數據本來就超重要,快點學免得被對方反將一軍! SEO 優化,可說是與其他網站競爭排名的比賽。在前一篇文章【 SEO前,先分析競爭者的網站(一)誰是你的競爭者? 】中,我們已經了解到:找出誰是自己網站的競爭對手的方法。接下來,我們就要分析這些網站的各項重點數據。方法如下:   第二步:分析競爭者網站的數據 一、網站速度 網站的載入速度,會影響到搜尋引擎排名。要了解對手的網站速度,我們可在 Google 提供的免費線上工具「 PageSpeed Insights 」中鍵入對手網站的 URL,即可獲得概略的數據以及改善建議。 二、使用者習慣經由哪種管道來接觸這個網站? 在你完全不知道如何增加點閱率時,就可以參考對手多是經由哪些管道,來吸引使用者點入。在此,我們可以使用 SimilarWeb 來查看。承第一步的例子,你想知道使用者都是透過何種管道進入東森、UDN 等新聞網站,使用 SimilarWeb 查看後結果如下: 由上圖可以看出,UDN 的讀者來源,大部分來自 Search (搜尋引擎)輸入特定關鍵字後,進到 UDN 的網頁;而東森新聞雲的讀者最多都是從 Facebook 等 Social 社群網站的連結進來。 參考兩者,現在回到你自己經營的新聞網站,要增加點閱數,你有兩件方向可以做:做好 SEO 以增加 Search 流量以及經營 Facebook、IG 來增加 Social 流量。 流量管道的資料表現,會因著產業的不同而有著不同的流量結構。你可以在將預算花下去之前,先了解對手有在經營哪些流量管道。 假如所有的對手都在做 SEO,而比較不偏重於 Facebook 的經營時,你是否該跟隨他們加入 SEO 的戰場,殺個你死我活,還是先專注在社群經營,走出一條新路? 另一方面,若情境相反,今天你對手都沒有在做 SEO(恰巧跟你產業有關的關鍵字都有一定的搜尋量時),你就可以考慮一下是否可靠著 SEO 找到藍海。 若你的產業是真的真的非常 Social 導向的, 你就可以觀察頂尖對手的 FB 經營策略(廣告投遞模式、辦過哪些活動、多久貼文一次等等),並且看他們的粉絲團按讚數以及貼文按讚數、哪種貼文獲得比較好的共鳴、參考他們是如何跟粉絲互動等等。 三、反向連結流

使用SEO,知己知彼才能百戰百勝!(上)找出你的競爭者!

圖片
在做SEO之前,你得找出你的競爭者,才能對症下藥,對吧!? SEO 優化,可說是與其他網站競爭排名的競爭。因此你的 SEO 必須要先了解競爭網站的狀況,才會知道如何準備這場比賽。 然而,有許多 SEO 人員在忙碌之中,粗心忽略了對競爭對手的分析。 至於競爭網站有哪些呢?其實,只要該網站被 Google 收錄的關鍵字是與你重疊的,都可以算是你的競爭網站。而這些競爭網站有可能是你的同業對手,也有可能不是。 分析競爭對手的目的,是了解他們的 SEO 操作手法、優點與弱點。但是千萬別把他們當成自己的門檻、或是完全模仿複製,例如某些老闆會缺乏遠見地說:「同業的網站都沒有 RWD,我們也就先不用 RWD 了,只是多此一舉罷了!」。 另外在現實生活中,我們也經常看到:同個行業,不同商家,但是網站、文案都很類似,人們往往分不清楚哪個網站是哪家公司的。 第一步:誰是我的競爭者網站? 要找出競爭網站很容易,我們可以從這些方向著手: 一、現實生活中的兢爭對手網站 二、經由 Google 等搜尋引擎中輸入關鍵字,排名在你附近或是你前面的網站 三、被收錄於 Similar Web 或 Alexa 等流量排行榜中你的同業網站。 例如,你的網站是新聞網,則現實生活中的對手可能是東森、中時、三立、UDN 等新聞網;而經由 Google 搜尋「國內新聞」、「國外新聞」等關鍵字,排名在你前面的新聞網站,大多都可說是你的競爭對手(當然也有例外狀況:如路線跟你不同的傳媒網站,像是科技類傳媒、重機傳媒等)。 另外,你還可以從 SimilarWeb 、 Alexa 等流量排行榜中,擷取出的與你網站同類型的新聞網站,將之視為競爭對手。  SEO 可參考 SimilarWeb 的流量排行榜,找出競爭對手網站 找出了你的競爭對手之後,下一步就要接著分析他們的重點數據,知己知彼,才能百戰百勝,擬定出自己的 SEO 作戰策略!至於有哪些重點數據要分析呢?請見下篇【 SEO前,先分析競爭者的網站(二)分析競爭者網站的數據 】 延伸閱讀文章: SEO攻略-分析競爭者的網站是首要之務!(下)競爭者網站的數據 之前提到的SEO優化的結構化資料,這次直接教你如何快速上手!  必學八個圖片SEO基本功(1)圖檔

搞懂這些,Python變得好實用!(9)-原地運算符

圖片
在Python中只有加法可以用原地運算符嗎?再不進來惡補基本常識就太晚啦! 你知道嗎? Python 中的原地運算符 (In-place operators) 可以用來精簡代碼,例如,「x=x+3」就可以精簡為「x+=3」。而且,不只加法,只要是加減乘除都可以用喔! >>> x = 70 >>> print(x) 70 >>> x += 7 >>> print(x) 77 >>> x = 70 >>> print(x) 70 >>> x *= 7 >>> print(x) 490 另外, Python 中的原地運算符 (In-place operators) 除了用在數值外,碰到字串時也可以使用它。 >>> x = "cat" >>> print(x) cat >>> x += "meow" >>> print(x) catmeow >>> x = "cat" >>> print(x) cat >>> x *=3 >>> print(x) catcatcat 延伸閱讀文章: 搞懂這些,Python變得好實用!(6)串接字串運算子 搞懂這些,Python變得好實用!(7)-類型轉換 搞懂這些,Python變得好實用!(8)-變數 美國上市公司達內教育攜手惠普英特爾一起培育下一代IT人才! 暑假快到了!與其讓兒子盲目拚學測,我寧可讓他先選擇人生方向~ 你還搞不清楚前端工程師和後端工程師的差異嗎!? NOWnews 今日新聞

研發麻將人工智慧的技術真那麼高?聽微軟解釋總不會錯了吧?(下)

圖片
這篇再來繼續帶你看這個麻將人工智慧,它後面更多不為人知的發展和秘密,看完讓你恍然大悟! 為何我們會想寫這篇文章? 讀者看到了這篇文章: AI人工智慧又贏了!微軟Suphx突破日本麻將最高紀錄,打敗人類頂尖玩家 時,可能會立即聯想到 Google 開發的圍棋 人工智慧 Alpha Go 於兩年前以近乎完美姿態打敗人類選手李世乭和柯潔的新聞。根據微軟所說:研發麻將 AI 人工智慧的技術門檻可說是比研發圍棋、德州撲克等棋牌、博弈類的遊戲難多了!是真的嗎?這篇取材自微軟亞洲研究院的新聞稿,解釋為何同樣是 人工智慧 ,為何研發 AI 麻將技術門檻就是比 Alpha Go 等棋類 AI 高的還多!     「全新機制、教練先知、全面預測」對付麻將AI研發瓶頸   全新機制應對「巨大的狀態空間」 例如,為了應對「巨大的狀態空間」,研究團隊引入了全新的機制:對探索過程的多樣性,進行動態調控,讓 Suphx 可以比傳統算法更加充分地試探牌局狀態的多種可能。另一方面,一旦某一輪的底牌給定,其狀態子空間會大幅縮小;所以研究團隊讓Suphx 在推理階段根據本輪的牌局,來動態調整策略,對縮小了的狀態子空間進行更有針對性的探索,從而更好地根據本輪牌局的演進做出自適應的決策。   「先知教練技術」應對「非完美資訊」 其次,針對「非完美訊息」博弈的挑戰,Suphx 創新性地嘗試了先知教練技術來提升強化學習的效果。其基本思想是在自我博弈的訓練階段,利用一些不可見的隱藏訊息,來引導 AI 人工智慧 模型的訓練方向,使其學習路徑能更加清晰、更加接近完美資訊意義下的最佳路徑,從而讓 AI 人工智慧 模型能更加深入地理解可見信息,從中找到有效的決策依據。   「全盤預測技術」理解「復雜的獎勵機制」 另外,對於麻將復雜的牌面表達和計分機制,研究團隊還利用全盤預測技術搭建起每輪比賽和8輪過後的終盤結果之間的橋樑。這個預測器通過精巧的設計,可以理解每輪比賽對終盤的不同貢獻,從而將終盤的獎勵信號合理地分配回每一輪比賽之中,以便對自我博弈的過程進行更加直接而有效的指導,並使得Suphx可以學會一些具有大局觀的高級技巧。 得益於以上新技術和其他方面的創新,自今年 3 月進入天鳳平台以來,Suphx 在與人類玩家的對局中,學得非常快。目前,在平衡攻擊和防

研發麻將人工智慧的技術真那麼高?聽微軟解釋總不會錯了吧?(上)

圖片
圍棋的人工智慧算什麼,先前提到的麻將AI"Suphx",它的技術可是高出許多呢! 為何我們會想寫這篇文章? 讀者看到了這篇文章: AI人工智慧又贏了!微軟Suphx突破日本麻將最高紀錄,打敗人類頂尖玩家 時,可能會立即聯想到 Google 開發的圍棋 人工智慧 Alpha Go 於兩年前以近乎完美姿態打敗人類選手李世乭和柯潔的新聞。根據微軟所說:研發麻將 AI 人工智慧的技術門檻可說是比研發圍棋、德州撲克等棋牌、博弈類的遊戲難多了!是真的嗎?這篇取材自微軟亞洲研究院的新聞稿,解釋為何同樣是 人工智慧 ,為何研發 AI 麻將技術門檻就是比 Alpha Go 等棋類 AI 高的還多!   微軟:麻將變動度,更勝圍棋德州撲克等 微軟的新聞稿上提到了開發麻將 AI 人工智慧 「Sphix」難度與象棋、圍棋、德州撲克等棋牌類遊戲相比,麻將具有更復雜的隱藏信息和更高的難度。總言而之,麻將 AI 人工智慧主要面臨以下挑戰:   巨大的狀態空間: 和只有 52 張牌的德州撲克相比,136 張麻將牌的排列組合擁有更多的可能性。同時,麻將中同一個玩家在兩次出牌之間,夾雜了其他 3 個玩家的出牌和自己摸的底牌,可能出現的不同局面數目非常巨大! 值得提出的是,在麻將中,4 位玩家的出牌順序是不固定的,任意一位玩家的「吃」、「碰」、「槓」都有機會改變出牌順序,導致遊戲順序的不規則和莫大的變化。靠著這些變動,就能使麻將很難直接利用 AlphaGo 等棋盤遊戲 人工智慧 常用的蒙特卡洛樹搜索算法。   非完美資訊遊戲: 你聽過賽局理論嗎?在賽局理論中,資訊集合是指對於特定的參與者,建立基於其所觀察到的所有賽局中可能發生的行動的集合。如果賽局是完美資訊的,每個資訊集合只能有一個參與者,並顯示賽局所處的階段。否則,有的參與者可能就不知道賽局的狀態,以及自己周圍的形勢。 象棋和圍棋屬於完美資訊遊戲,玩家可以看到棋局中對方玩家的落子。麻將則存在大量的隱藏資訊。具體而言,麻將中每個玩家可以有 13 張手牌,另外還有 84 張底牌。對於一個玩家而言,他只知道自己手裏的 13 張牌和之前已經打出來的牌,卻無法知道別人的手牌和沒有翻出來的底牌,所以最多可以有超過 120 張未知的牌。這麽多的未知資訊,使得麻將的難度非常高。一方面

搞懂這些,Python變得好實用!(8)-變數

圖片
今天這篇要教你如何建立.指定.命名變數!別錯過啦! Python 的變數 在 Python 中要建立變數,無需宣告型態,只要命名變數並指定值給它,就可引用在該程式中的其他地方。 要指定變數,其實只要使用一個等號(=)即可。 >>> x = 7 >>> print(x) 7 >>> print(x + 9) 16 >>> print(x) 7 如看不懂下面例子的人,建議可看這篇: Python基本概念第六課-字串運算子的串接 (concatenate) 中的「字串的複製」 >>> cat = "meow!" >>> print(cat * 3) meow!meow!meow! 變數的值可依照實際需要,而被重新定義。 在 Python 中,變數沒有特定的類型,因此可以給變數定義為某個數值,然後再將同個變數重新定義為另一個字串,如下例所示: >>> x = 7.1 >>> print(x) 7.1 >>> x = "meow" >>> print(x + "!") meow!   為變數命名 Python 的變數命名,可以用字母、數字和底線來表示。注意!但是開頭不能使用數字,且名字中間不能有連字號或空白。以下為錯誤命名的範例: >>> 123abc = 7 SyntaxError: invalid syntax >>> spaces are not allowed SyntaxError: invalid syntax >>> a-variable-name SyntaxError: invalid syntax 這裡再提供你一個進階用法:你可以為變數定義的值為使用者輸入的值(輸入的用法請參照: Python基本概念第五課-輸入與輸出 ,如下例所示: SyntaxError: invalid syntax >>> meow = input("Enter a n

搞懂這些,Python變得好實用!(7)-類型轉換

圖片
學會Python的類型轉換,之後遇到操作不順的情況,就能"信手拈來"啦! 類型轉換 在 Python 中無法完成某些操作,常常是因為類型不同而導致。例如類型為字串的'1'和'1'加在一起無法產生 2,只能產生'11'。 若你希望'1'+'1'產生 2 的話,那就要進行類型轉換(Type Conversion)的程序了。在此例中,使用的「int」函數如下所示: >>> "1" + "1" '11' >>> int("1") + int("1") 2 >>> int("1" + "1") 11 這裡提供 Python 類型轉換的另一個例子:將用戶輸入(輸入的用法請參照: Python基本概念第五課-輸入與輸出 )的為字串轉換為 浮點數 ,並計算: >>> float(input("Enter a number: ")) + float(input("Enter another number: ")) Enter a number: 70 Enter another number: 7 77.0 小試身手,來挑戰看看:【選擇題】在以下 Python 程式碼中輸入 2 ,最後的結果會是: [1]222 [2]222.0 [3]111111.0 [4]"111111" >>> float("111" * int(input("Enter a number:" ))) Enter a number: 2 提示:該題目有套用到 Python基本概念第六課-字串運算子的串接 (concatenate) 中的「字串的複製」 延伸閱讀文章: 搞懂這些,Python變得好實用!(6)串接字串運算子 搞懂這些,Python變得好實用!(8)-

搞懂這些,Python變得好實用!(6)串接字串運算

圖片
這篇文章要教你的是有關python的串接字串漢字串的複製,一起來學學這超方便的功能! 字串的串接 在 Python 中, 字串 可由文字、整數、 浮點數等組成。我們也可以使用「+」串接字串。串接字串時,雙引號的字串可以與單引號的字串混合串接。 >>> "Word" + 'Press' 'WordPress' >>> print("First string" + ", " + "second string") First string, second string 即使您的字串包含數字,它們仍將被視為字串,而不是數字。將字串添加到數字會產生錯誤,即使它們看起來很相似,但它們是兩個不同的實體。例如,我們串接兩個「2」,兩個「2」都是以字串的方式輸入(有加單引號或是雙引號)如下: >>> "2" + "2" '22' 承上例,若其中一個「2」以數字(沒有加引號),而不是以字串的方式鍵入,在 Python  就會產生如下所示的錯誤: >>> 2 + "2" Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for +: 'int' and 'str'   字串的複製 Python 的字串當然是可以複製的!我們可以採用「字串*倍數」或是「倍數*字串」的方式讓字串重複複製,一起來看看下面的例子: >>> print("meow" * 3) meowmeowmeow >>> 3 * '7' '777' 倍數的部分,是不能以字串屬性表示(加單或雙引號),也不能以浮點數的方式表示: >>> &

搞懂這些,Python變得好實用!(5)輸入與輸出

圖片
Python輸出輸入的函數你知道嗎?這篇用簡單幾句就把你教會! Python 的輸出函數:print 通常工程師在寫程式時,程式接受所輸入的訊息,數理過後再輸出,稱為「output」。在 Python 中,輸出(output)的函數為「print」,print 函數可以將輸出的內容以文字的方式,展示在螢幕上。 >>> print(2 + 1) 3 >>> print("He said,\n\"Welcome!\"") He said, "Welcome!" Python 的輸入函數:input 要從 Python 中取得用戶輸入的訊息,你可以使用直覺命名的「input」函數。該函數會提示用戶輸入訊息,再以字串形式回傳他們輸入的內容(內容自動編碼)。 就如以下所示: >>> s = input("Enter something please: ") print(s) 之後你輸入了「something」,Python 程式就會將它輸出(print),而螢幕顯示就如以下所示: Enter something please: something 延伸閱讀文章: 搞懂這些,Python變得好實用!(4)Strings字串 搞懂這些,Python變得好實用!(6)串接字串運算子 搞懂這些,Python變得好實用!(7)-類型轉換 人工智慧一如往常打敗人類紀錄?來看看它在麻將領域的表現!(3) SEO優化網路行銷課程加碼篇(上):加碼主關鍵字,吸睛率也跟著加碼? 暑假快到了!與其讓兒子盲目拚學測,我寧可讓他先選擇人生方向~ 達內課程先就業再付款- 中時電子報