學Python就是要摸透它的底細!一次弄懂它與人工智慧的關係!

學Python就是要摸透它的底細!一次弄懂它與人工智慧的關係!
學Python就是要摸透它的底細!一次弄懂它與人工智慧的關係!

學Python的你清楚它的底細嗎?聽說它跟人工智慧和大數據密不可分呢!

在媒體一直報導人工智慧 (AI)、機器人(Robot)未來可能會取代我們的工作時,我們又看到坊間有教人工智慧技術的機構,又端出一堆名詞如大數據(Big Data)、Python 程式語言……,還有深度學習等等。那到底這些名詞中間到底又有什麼關聯?這篇將以問答方式一一幫你解答

推薦閱讀:AI 人工智慧來了!你的未來何去何從?學好 Python 是正解

人工智慧、機器人,是同一個東西嗎?

相信大家都看過有關機器人的電影,都把機器人描述的很厲害,甚至比人類還強!沒錯,這些機器人很賴害是因為他們裡面被導入了「人工智慧

推薦閱讀:5 部電影告訴你:AI 時代來臨,是否對人類造成威脅?

人工智慧」,又稱「人工智能」,英文為「Artificial Intelligence(縮寫為 AI)」簡單來說就是:任何讓電腦能夠像人類般思考、表現出類似人類的行為」的科技;更具體一點的說法,人工智慧是一種可以感知、學習、推理、協助決策,並採取行動幫助我們解決問題的科技。

推薦閱讀:妻子機器人在日本大賣?假的!但本尊也是會說笑的 AI 美人

為何有些人工智慧會比真人還厲害

日前又 AI 甩尾,角度精準過方程式車手的消息;還有 AI 雀士在網路上打日式麻將打過一拖拉庫真人的訊息、⋯⋯究竟人工智慧是怎麼學習的?為何會比真人厲害?

推薦閱讀:AI 又贏了?人工智慧「Suphx」打敗人類麻將高手!

AI 學習事務其實與人類學習事物的方法相仿,就是所謂的機器學習及深度學習。

機器學習理論主要是設計和分析一些讓電腦可以自動「學習」的演算法。機器學習演算法是一類從資料中自動分析而歸納出規則來,並利用此規則對未知的資料進行預測的演算法。

而「深度學習」又是模擬人類神經網絡的運作方式,只要懂得定義問題,有足夠質量的資料以及轉化為模型的能力,幾乎可以應用在任何決策問題上,雖然不見得都有準確的預測能力。不過目前常見的 Google 語音辨識、文字翻譯、照片分類、自動回信、垃圾郵件判斷,現在都是用深度學習來做的。

推薦閱讀:AI 人工智慧、ML 機器學習、深度學習、Python 是什麼?看這一篇就對了!

搜集大數據讓AI去做機器學習,加上不同的演算法成就不同專長的AI?

餵給 AI 正確的大量資料(大數據),加上好的大腦(演算法),AI 才能做出正確的判斷。

各種領域都應用了不同功能的人工智慧,如醫療、教育、製造、理財及自動駕駛等,就如同每個人擅長的領域都不一樣:有的人擅長賽車、有的人擅長分析、有人善於醫療等等。

推薦閱讀:台灣研發 AI 走進加護病房,預測敗血症準確率達八成五

演算法的不同深深影響 AI 的思考與學習模式,好的演算法可以製造出卓越的人工智慧。例如甩尾角度比人類還精準的 MartyKHANA AI。

推薦閱讀:AI 甩尾媲美 Ken Block、屌打玩命關頭?方程式冠軍嘆:要失業了⋯⋯

反之,不好的演算法會讓 AI 判斷錯誤。2016 年發生了全球首例 Tesla 自駕車撞上大貨車的意外,是因為 Tesla 的自動駕駛系統,無法辨識在強烈日照下而有反光的大貨車,因此未能即時做出煞車判斷。因為此演算法從未學習過這類大數據。

Python 與 人工智慧的關係?

Python 是目前人工智慧領域最被廣泛使用用的程式語言

因為 Python 的語言十分簡單好懂、就像是使用人類的語言在與電腦溝通一樣,加上跨平台的性質,操作方便又快速,因此已有許多工程師使用其語言發布大量與人工智慧、機器學習、深度學習領域相關的資料庫,讓用戶可自由套用、執行各式各樣的功能、操作。這些資料庫由來自四面八方的來源 (如 PyPi) 所發布,包含預先編寫好的程式片段,讓 AI 開發人員不需要從頭開始編寫程式。

機器學習與深度學習都需要連續的數據處理,Python 的函式庫則可以讓你取用、處理、轉換這些數據。例如應用於深度學習的 Keras 函式庫,它允許快速計算和原型設計,因為它除了使用計算機的 CPU 之外還使用 GPU。

其他與人工智慧、機器學習、深度學習有關的八個函式庫,請見此篇文章:連 IBM 都推!入行 AI 人工智慧必學 Python 的8大理由

推薦閱讀:AI 產業革命開始!為何 Python 成人工智慧必備語言?

 

 

 

 

 

 

推薦文章:
AI人工智慧將如何衝擊你的未來?還是學好Python吧!


AI 產業革命開始!為何 Python 成人工智慧必備語言?


AI 重機車手 MOTOBOT – 專為超越 MotoGP 冠軍 Rossi 而生


連 IBM 都推!入行 AI 人工智慧必學 Python 的8大理由


穿戴裝置潮流正夯,人工智慧眼鏡如何改造你我世界?!(上)


聽聽看不吃虧!關於Python的24條真心建議!


人工智慧時代新寵兒-機器狗Aibo(上)

人工智慧只當應援團不夠看!還能打棒球?!(下)

人工智慧只當應援團不夠看!還能打棒球?!(下)
人工智慧只當應援團不夠看!還能打棒球?!(下)

人工智慧當應援團還不夠,這次竟然能訓練它打棒球?!(下)

本篇為下篇,上篇請點此連結

如果能夠實現「精準預測球體飛行的模型」後,機器人才能上場:先用攝影機取得投手「球剛離開手」的幾張照片並將輸入到模型內,模型進行估算、預測出完整的球體飛行軌跡後,機器人才能看著球落到事先設定好的地方,用最適當的角度、力道,精準地擊出一記安打!

也許未來有一天,我們真的能夠觀賞真人球員與人工智慧對決的棒球賽事呢!

體壇上的 AI 機器人 總有一天超越人類選手?

2015 年的東京車展上,Yamaha 展出了會騎摩托車的 AI 機器人「MOTOBOT Ver1」。此時的 MOTOBOT 只可以騎到時速一百以及做一些角度較大、較簡單的過彎動作。但 MOTOBOT 在當時的官方影片中,指名挑戰「The Doctor」——Yamaha 自家最強 MotoGP 選手 Valentino Rossi。

推薦閱讀:為超越MotoGP冠軍VR46而生:人工智慧重機賽車手MOTOBOT

▲2015 年的 AI 重機車手「MOTOBOT」第一代剛「誕生」不久,就指名要挑戰 MotoGP 選手 Valentino Rossi。

兩年後的 2017,第二代「MOTOBOT Ver2」再現於東京車展上。此時的 MOTOBOT 手腳細節都已經改良過,且已騎到時速 200 km,更重要的是——根據 Yamaha 官方釋出的影片上,它只落後 Rossi 30 多秒!

▲2017 年的「MOTOBOT」時速已可達兩百,且還只落後 Rossi 30 多秒!連 Rossi 本人都對其進步速度感到驚訝。

只要兩年的時間,這款 AI 機器人就能從時速一百進步到時速兩百,而且還只落後 Rossi 30 多秒!這樣子的進步,連 Rossi 都感到驚訝。

推薦閱讀:AI 甩尾技術勝 Ken Block!方程式冠軍車手嘆:要失業了

▲史丹佛開發 AI 甩尾技術已超越人類,影片 1:35 處顯示方程式車手 Fredric Aasbø 看了 AI 甩尾的影片後,嘆「要失業了…」

其實在體壇上,不僅僅是機車賽事的 MotoGP 受到衝擊,汽車甩尾界首屈一指的「D 級方程式」甩尾大賽的多年冠軍——Fredric Aasbø 再看了史丹佛大學研發的甩尾 AI 機器人,精準連甩了多個極其狹窄的彎道之後,都大嘆「要失業了」!難道有一天,人類運動選手真的會被取代嗎?

即使職業車手會因 AI 而自開玩笑「擔心失業」,換個角度想,如果能成為人工智慧的創造者,想必就不用擔心會失業了吧。

推薦閱讀:AI 又贏了?人工智慧「Suphx」打敗人類麻將高手!

 

 

 

 

 

 

 

推薦文章:
狗狗是人工智慧的最佳教練!Google AI機器人學狗左轉右彎還能小跑


【前端工程師CSS教學】定位元素Positioning Elements


APCS 程式檢定,該從 C、Java 還是 Python 下手?


從哆啦A夢到 iPhone…為何 UI 設計用「圓角」就是比較討喜?


想要遠距工作高效率?那你不能錯過人工智慧”番茄鐘工作法”(上)


學Python的三大好處,看完馬上手刀報名了!


電腦白癡也想當工程師?真心建議先學Python!

 

人工智慧只當應援團不夠看!還能打棒球?!(上)

人工智慧只當應援團不夠看!還能打棒球?!(上)
人工智慧只當應援團不夠看!還能打棒球?!(上)

人工智慧當應援團還不夠,這次竟然能訓練它打棒球?!(上)

新冠疫情癱瘓了全球政治、經濟——包含因疫停賽的美、日、韓等國家的職棒;同時卻也激發各產業的創意,設法推出應變奇招。中華職棒突破萬難,在 4 月 12 日領先全球,在桃園閉門複賽,為世界棒壇注入一針強心劑!

▲日前(4月12日)中華職棒在桃園閉門複賽,派出 AI 機器人樂團應援與人形立牌充當觀眾,廣獲中外媒體注意、報導 。

雖然複賽仍以閉門的模式——不開放觀眾到場,少了擊鼓應援、加油的吶喊聲,恐會讓比賽冷場走味。但俗話說「養兵千日,用在一時」,這不就是那些機器人們「神救援」的好時機嗎?職棒界的「點子王」——主場位於桃園的樂天桃猿隊,除了在觀眾席設下靜態人形立牌、人偶充當觀眾之外,還增設桃園在地祥儀機器人夢工廠的機器人應援團「AI 精靈樂團」,擊鼓替球員加油,增添看球趣味性。

機器人都能應援球賽了,那AI是否能上場打球?

▲交大電機教授蕭得聖於 2014 年研發的「會打棒球的機器人2.5代」,已能精準判斷球路、好球、壞球,並能判斷打擊後球的落點,自主決定是否揮棒。

現實世界中,一位職棒選手的養成,可以說是經歷千辛萬苦。台灣職棒選手前往美國挑戰大聯盟,大多是年輕時就從小聯盟開始訓練(除了從日職轉戰大聯盟的陳偉殷之外)。小聯盟又分成六級別,所以一待就是好幾年,也不一定能打到大聯盟。

除了需要長年經驗,棒球的技巧也是千變萬化。投手不可能只是丟個直球而已,還會隨機出現卡特球、伸卡球、滑球、螺旋球等出其不意的球路,加上僅僅只有零點幾秒的速度……人工智慧機器人是否有能力打到球呢?

交通大學電控所蕭得聖教授所領導的團隊,長期鑽研打棒球的機器人。他們的目標不只是要讓 AI 機器人打得到球,還要擊出安打!針對打造此類「安打機器人」,蕭教授提到了四個關鍵點:

四關鍵點 成就人工智慧棒球員「安打機器人」

首先,機器人必須要能「看」得準個是來球!為了能讓機器人能即時測量球體在三度空間中的飛行軌跡,超高速雙眼攝影機是必須配備。如果以現今的技術來說是可行的,預算夠充足的話,連球的縫線都能看得清清楚楚!

只看得到球還不夠,還要能把球打出去!此時就要依照球的質量、慣量、球速等數值,估算出球衝擊到球棒時的動量(描述物體「運動狀態與慣性大小」的空間向量)。這影響到機器人手臂的材質、馬達必須輸出多少力距等等。

如果以上兩條件都實現了,難道就夠了嗎?不!還要經過「磨合」的階段,彼此校正,讓攝影機與機器手臂間的訊息傳遞同步、協調,避免眼手「各行其事」不同調。

現在能看能打的機器人出來了!前面提到,蕭教授的目標是機器人「每打必能擊出安打」,所以除了「眼明手快」的條件達成之外,還要「精準地預測球通過本壘板時的位置與速度」,因此需要能「精準預測球體飛行軌跡的模型」。這個模型決定了棒球機器人的成敗。

▲棒球比賽中,投手常隨機投出難以預測的球路。影片為伸卡球、滑球與指叉球介紹。

快速球、選轉球……每位投手投球時各有獨門祕技,甚至還會妙用球的縫線做變化。因此要打造球體飛行軌跡的預測模型,必須優先考慮到重力、空氣阻力等來自四面八方的外力以及其他的複雜狀況,對於各式球路所造成的影響。這套精準模型其中的秘辛,都是蕭教授的 know-how 。

本篇為上篇,下篇請點此連結

 

 

 

 

推薦文章:
狗狗是人工智慧的最佳教練!Google AI機器人學狗左轉右彎還能小跑


APCS 程式檢定,該從 C、Java 還是 Python 下手?


【前端工程師CSS教學】定位元素Positioning Elements

從哆啦A夢到 iPhone…為何 UI 設計用「圓角」就是比較討喜?


極致精準甩尾竟然靠人工智慧?!還有什麼是它辦不到?!(上)


青少年隱私的守門員!人工智慧手機具”防拍裸照”功能(上)


真狗地位不保了?!人工智慧機器狗Aibo將取代?!(上)

最夯程式語言Python,你夠了解它嗎?!

最夯程式語言Python,你夠了解它嗎?!
最夯程式語言Python,你夠了解它嗎?!

堪稱世界最夯的程式語言Python,究竟是什麼原因讓它這麼火?還有哪些你不知道的祕密呢?

 

一、Python是什麼語言,python是什麼類型的語言?

二、Python是什麼意思,python怎麼讀?

三、Python的發展歷程

四、Python未來十年的發展預測

五、Python可以用來幹什麼?

六、Python為什麼這麼火?

七、Python和人工智慧的關係?

八、Python的優勢和劣勢

九、誰適合學Python?

十、學習Python的可以從事的工作?

十一、如何入門學習python

十二、Python入門書籍推薦

十三、Python各版本下載:

十四、結語

 

一、Python到底是什麼語言,python是什麼類型的語言?

Python是一種解釋型、面向對象、動態數據類型的高級程序設計語言。

PythonGuido van Rossum1989年底發明,第一個公開發行版發行於1991年。

Perl語言一樣, Python 源代碼同樣遵循 GPL(GNU General Public License)協議。

 

二、Python是什麼意思,python怎麼讀?

Python(英國發音:/ˈpaɪθən/ 美國發音:/ˈpaɪθɑːn/,漢語翻譯為巨蟒、巨蛇的意思
三、Python的發展歷程

1989年的聖誕節,Guido開始編寫Python語言的編譯器。 Python這個名字,來自Guido所摯愛的電視劇Monty Python’s Flying Circus。他希望這個新的叫做Python的語言,能符合他的理想:創造一Cshell之間,功能全面,易學易用,可拓展的語言。

 

1991年,第一個Python編譯器誕生。它是用C語言實現的,同時能夠調用C語言的庫文件。從一出生,Python已經具有了:類,函數,異常處理,包含表和詞典在內的核心數據類型,以及模塊為基礎的拓展系統。

 

Python 1.0 – January 1994 增加了 lambda, map, filter and reduce.

1999 Pythonweb框架之祖——Zope 1發布

Python 2.0 – 2000/10/16,加入了內存回收機制,構成了現在Python語言框架的基礎

Python 2.4 – 2004/11/30, 同年目前最流行的WEB框架Django 誕生

Python 2.5 – 2006/09/19

Python 2.6 – 2008/10/1

Python 2.7 – 2010/07/03

Python 3.0 – 2008/12/03

Python 3.1 – 2009/06/27

Python 3.2 – 2011/02/20

Python 3.3 – 2012/09/29

Python 3.4 – 2014/03/16

Python 3.5 – 2015/09/13

 

201411月,Python2.7將在2020年停止支持的消息被發布,並且不會在發布2.8版本,建議用戶盡可能的遷移到3.4+ Python最初發佈時,在設計上有一些缺陷,比如Unicode標準晚於Python現,所以一直以來對Unicode的支持並不完全,而ASCII編碼支持的字符有限。例: 對中文支持不好Python3相對Python早期的版本是一個較大的升級,Py3在設計的時候沒有考慮向下兼容,所以很多早期版本的Python的程序無法再Py3上運行。為了照顧早期的版本,推出過渡版本2.6——基本使用了Python 2.x的語法和庫,同時考慮了向Python 3.0的遷移,允許使用部分Python 3.0的語法與函數。 2010年繼續推出了兼容版本2.7,大量Python3的特性被反向遷移到了Python2.72.72.6進步非常多,同時擁有大量3中的特性和庫,並且照顧了原有的Python開發人群。

 

四、python十年後發展預測

2027年,Python 已經推出了5.0版本,開發效率堪稱極高、運行速度飛快,成為全球最受程式設計師歡迎的開發語言!全球超過50% IT 系統是基於 Python 開發的!這不是危言聳聽或誇大其詞, Python 是目前我了解的所有語言裡,是最有可能成為最符合人類對程式期待的語言。人類對程式語言的期待是什麼?當然就是更高更快更強!

 

就是這樣的,分別解釋下:

更高——開發效率更高

這一兩年Python 在業界十分熱門 我一直思考原因是為什麼,除了雲計算幫Python 帶了一波節奏外,還有沒有其它原因呢?必然有,我認為還有一個主要原因就是近幾點互聯網創業熱情高漲,千千萬萬程式設計師聽了各種創業雞湯,辭掉了大公司安穩工作玩創業,1415年的中關村創業大街那叫一個熱鬧,總理都去過好幾次,當時大家都急著要把東西快速開發出來去拿融資,那時的投資人腦子也是熱呀,大批大批的錢投給各創業公司,供他們各種現金補貼搶用戶。時間就是金錢,大家恨不得今天剛有了 idea,明天產品就能上線,產品晚上線一個月,可能戰爭就跟你沒關係了。因此,一門開發效率極高的語言就此進入開發者眼簾,開發者們因為猶如神助,開發效率不知道比C, Java 高到哪裡去了,眾多創業公司首選Python 做為開發語言,雖然那些創業公司大多都失敗了,但是催生起了Python 在全球大熱的前戲。

 

更快——運行速度更快

顯然Python 並不是一門快語言,慢也是被很多程式設計師詬病Python 的主要原因,但最近幾年PyPy 解釋器在不斷的提高著Python 的運行速度,通過PyPy 運行的程序,在某些場景下速度直接逼近C 語言,相信再過幾年,Python 的運行速度將不再是問題。另外,由於近些 CPU 處理速度的快速發展,程式語言本身的快慢在大多數業務場景下已不再被做為主要考量(除了對響應速度極為敏感的業務,如搜素)

 

更強——功能更強

這是導致 Python 大火的另一個主要原因之一,Python 的標準庫和第三方庫強大到你無法想像,無論你想從事任何方向的技術程式語言,你幾乎都能找到相應的庫支持。

 

以下僅舉幾個例子:

WEB開發——最火的 Python web 框架 Django, 支持異步高並發的 Tornado 框架,短小精悍的 flask,bottle, Django 官方的標語把 Django 定義為 the framework for perfectionist with deadlines

 

網絡程式語言——支持高並發的 Twisted 網絡框架, py3 引入的 asyncio 使異步程式語言變的非常簡單

 

爬蟲——爬蟲領域,Python 幾乎是霸主地位,Scrapy\Request\BeautifuSoap\urllib 等,想爬啥就爬啥

 

雲計算——目前最火最知名的雲計算框架就是 OpenStack, Python 現在的火,很大一部分就是因為雲計算

 

人工智慧——誰會成為 AI 和大數據時代的第一開發語言?這本已是一個不需要爭論的問題。如果說三年前,MatlabScalaRJava Python 還各有機會,局面尚且不清楚,那麼三年之後,趨勢已經非常明確了,特別是前兩天Facebook 開源了PyTorch 之後,Python 作為AI時代頭牌語言的位置基本確立,未來的懸念僅僅是誰能坐穩第二把交椅。

 

自動化運維——問問中國的每個運維人員,運維人員必須會的語言是什麼?10個人相信會給你一個相同的答案,它的名字叫Python

 

金融分析——我個人之前在金融行業,10年的時候,我們公司寫的好多分析程序、高頻交易軟件就是用的 Python,到目前, Python 是金融分析、量化交易領域裡用的最多的語言

 

科學運算—— 你知道麼,97年開始,NASA 就在大量使用Python 在進行各種複雜的科學運算,隨著NumPy, SciPy, Matplotlib, Enthought librarys 等眾多程序庫的開發,使的Python 越來越適合於做科學計算、繪製高質量的2D 3D 圖像。和科學計算領域最流行的商業軟件 Matlab 相比,Python 是一門通用的程序設計語言,比 Matlab 所採用的腳本語言的應用範圍更廣泛

 

遊戲開發——在網絡遊戲開發中 Python 也有很多應用。相比Lua or C++,Python Lua 有更高階的抽象能力,可以用更少的代碼描述遊戲業務邏輯,與Lua 相比,Python 更適合作為一種Host 語言,即程序的入口點是在Python那一端會比較好,然後用C/C++ 在非常必要的時候寫一些擴展。 Python 非常適合編寫 1 萬行以上的項目,而且能夠很好地把網游項目的規模控制在 10 萬行代碼以內。另外據我所知,知名的遊戲<文明>就是用Python寫的

 

列舉這麼多之後,你會發現,Python 幾乎在上述每個領域可以說是都做的十分優秀,這是一門真正意義上的全棧語言,即使目前世界上使用最廣泛的Ja​​va 語言,在很多方面與Python相比也遜色很多!我目前還看不到有哪門語言,能夠同時在在如此多的領域能做出這些成績。

 

最後我在做幾點與Python相關的預測:

 

5年之內,Python 會取代 PHP,成為最受歡迎的 WEB 開發語言

10年內,Python 的使用量將趨近甚至超過Java

10年內,主流的人工智慧技術都是基於 Python 開發

Python 應用率已經取得第一的領域有:雲計算、爬蟲、自動化運維、金融分析

 

五、Python可以用來幹什麼?

在我看來,基本上可以不負責任地認為,Python 可以做任何事情。無論是從入門級選手到專業級選手都在做的爬蟲,還是Web 程序開發、桌面程序開發還是科學計算、圖像處理,Python都可以勝任。

Python為我們提供了非常完善的基礎代碼庫,覆蓋了網絡、文件、GUI、數據庫、文本等大量內容,被形像地稱作內置電池(Batteries included)”。用Python開發,許多功能不必從零編寫,直接使用現成的即可。

除了內置的庫外,Python還有大量的第三方庫,也就是別人開發的,供你直接使用的東西。當然,如果你開發的代碼通過很好的封裝,也可以作為第三方庫給別人使用。

許多大型網站就是用Python開發的,例如YouTubeInstagram,還有全球的豆瓣。很多大公司,包括GoogleYahoo等,甚至NASA(美國航空航天局)都大量地使用Python

龜叔給Python的定位是優雅明確簡單,所以Python程序看上去總是簡單易懂,初學者學Python,不但入門容易,而且將來深入下去,可以編寫那些非常非常複雜的程序。

總的來說,Python的哲學就是簡單優雅,盡量寫容易看明白的代碼,盡量寫少的代碼。如果一個資深程式設計師向你炫耀他寫的晦澀難懂、動不動就幾萬行的代碼,你可以盡情地嘲笑他。

 

六、Python為什麼這麼火?

Python 是一門更注重可讀性和效率的語言,尤其是相較於JavaPHP 以及C++ 這樣的語言,它的這兩個優勢讓其在開發者中大受歡迎,同時在運維領域也被大量運用到自動化運維場景中。以下是Python的五大優勢:

1Python 易於學習;

2、用少量的代碼構建出很多功能;

3Python 擁有最成熟的程序包資源庫之一;

4Python 緊挨著 R 語言,都是現代數據科學中最常被使用的語言;

5Python 是跨平台且開源的。

 

七、Python和人工智慧的關係?

我們經常聽到“Python”人工智慧這兩個詞,也很容易混淆這兩個詞,那麼Python和人工智慧有什麼關係呢?

 

首先我們先來說說人工智慧

人工智慧是計算機科學的一個分支,它企圖了解智慧的實質,並生產出一種新的能以人類智慧相似的方式做出反應的智慧機器,該領域的研究包括機器人、語言識別、圖像識別、自然語言處理和專家系統等。

簡單來說,人工智慧是一種未來性的技術。

 

再來說說Python

Python是一門計算機程序語言,目前人工智慧科學領域應用廣泛,應用廣泛就表明各種資料庫,各種相關聯的框架都是以Python作為主要語言開發出來的。谷歌的TensorFlow大部分代碼都是Python,其他語言一般只有幾千行 。如果講開發效率,用Python,誰會用Java這種高不成低不就的語言搞人工智慧呢?Python雖然是腳本語言,但是因為容易學,迅速成為科學家的工具,從而積累了大量的工具庫、架構,人工智慧涉及大量的數據計算,用Python是很自然的,簡單高效。Python有非常多優秀的深度學習庫可用,現在大部分深度學習框架都支持Python,不用Python用誰?

 

八、Python的優勢和劣勢

Python的定位是優雅明確簡單,所以Python程序看上去總是簡單易懂,初學者學Python,不但入門容易,而且將來深入下去,可以編寫那些非常非常複雜的程序。

 

python語言的優點

⑴作為初學python的科班出身的小白,python算是非常簡單,非常適合人類閱讀。閱讀一個良好的Python程序就感覺像是在讀英語一樣,儘管這個英語的要求非常嚴格!Python的這種偽代碼本質是它最大的優點之一。它使你能夠專注於解決問題而不是去搞明白語言本身。

⑵易學。 python雖然是用c語言寫的,但是它擯棄了c中非常複雜的指針,簡化了python的語法。

PythonFLOSS(自由/開放源碼軟件)之一。簡單地說,你可以自由地發布這個軟件的拷貝、閱讀它的源代碼、對它做改動、把它的一部分用於新的自由軟件中。 Python希望看到一個更加優秀的人創造並經常改進。

⑷可移植性————由於它的開源本質,Python已經被移植在許多平台上(經過改動使它能夠工作在不同平台上)。如果你小心地避免使用依賴於系統的特性,那麼你的所有Python程序無需修改就可以在下述任何平台上面運行。這些平台包括LinuxWindowsFreeBSDMacintoshSolarisOS/2AmigaAROSAS/400BeOSOS/390z/OSPalm OSQNXVMSPsionAcom RISC OSVxWorks PlayStationSharp ZaurusWindows CE甚至還有PocketPCSymbian以及Google基於linux開發的Android平台!

⑸在計算機內部,Python解釋器把源代碼轉換成稱為字節碼的中間形式,然後再把它翻譯成計算機使用的機器語言並運行。事實上,由於你不再需要擔心如何編譯程序,如何確保連接轉載正確的庫等等,所有這一切使得使用Python更加簡單。由於你只需要把你的Python程序拷貝到另外一台計算機上,它就可以工作了,這也使得你的Python程序更加易於移植。

Python既支持面向過程的函數程式語言也支持面向對象的抽象程式語言。在面向過程的語言中,程序是由過程或僅僅是可重用代碼的函數構建起來的。在面向對象的語言中,程序是由數據和功能組合而成的對象構建起來的。與其他主要的語言如C++Java相比,Python以一種非常強大又簡單的方式實現面向對象程式語言。

可擴展性和可嵌入性。如果你需要你的一段關鍵代碼運行得更快或者希望某些算法不公開,你可以把你的部分程序用CC++編寫,然後在你的Python程序中使用它們。你可以把Python嵌入你的C/C++程序,從而向你的程序用戶提供腳本功能。

⑻豐富的庫。 Python標準庫確實很龐大。 python有可定義的第三方庫可以使用。它可以幫助你處理各種工作,包括正則表達式、文檔生成、單元測試、線程、數據庫、網頁瀏覽器、CGIFTP、電子郵件、XMLXML-RPCHTMLWAV文件、密碼系統、GUI (圖形用戶界面)Tk和其他與系統有關的操作。記住,只要安裝了Python,所有這些功能都是可用的。這被稱作Python功能齊全理念。除了標準庫以外,還有許多其他高質量的庫,如wxPythonTwistedPython圖像庫等等。

Python確實是一種十分精彩又強大的語言。它合理地結合了高性能與使得編寫程序簡單有趣的特色。

⑽規範的代碼。 Python採用強制縮進的方式使得代碼具有極佳的可讀性。

 

python語言的缺點

很多時候不能將程序連寫成一行,如import sys;for i in sys.path:print i。而perlawk就無此限制,可以較為方便的在shell下完成簡單程序,不需要如Python一樣,必須將程序寫入一個.py文件。 (對很多用戶而言這也不算是限制)

⑴運行速度,有速度要求的話,用C++改寫關鍵部分吧。不過對於用戶而言,機器上運行速度是可以忽略的。因為用戶根本感覺不出來這種速度的差異。

⑵既是優點也是缺點,python的開源性使得Python語言不能加密,但是目前全球市場純粹靠編寫軟件賣給客戶的越來越少,網站和移動應用不需要給客戶源代碼,所以這個問題就是問題。不過隨著時間的推移,很多全球軟件公司,尤其是遊戲公司,也開始規模使用他。

構架選擇太多(沒有像C#這樣的官方.net構架,也沒有像ruby由於歷史較短,構架開發的相對集中。Ruby on Rails 構架開發中小型web程序天下無敵)。不過這也從另一個側面說明,python比較優秀,吸引的人才多,項目也多。

 

九、誰適合學Python?

我們首先來看一看誰在學Python

第一類:入行程式語言新手:大學剛畢業或者其他行業轉崗,想從事程式語言開發的工作,目前認為Python比較火,想入行;

第二類:Linux系統運維人員:Linux運維以繁雜著稱,對人員系統掌握知識的能力要求非常高,那麼也就需要一個程式語言能解決自動化的問題,Python開發運維工作是首選,Python運維工資的薪資普遍比Linux運維人員的工資高。

第三類:做數據分析或者人工智慧:不管是常見的大數據分析或者一般的金融分析、科學分析都比較大程度的應用了數據分析,人工智慧的一些常見應用也使用了Python的一些技術。

第四類:在職程式設計師轉Python開發:平常只關注div+css這些頁面技術,很多時候其實需要與後端開發人員進行交互的,現在有很多Java程序在轉到Python語言,他們都被Python代碼的優美和開發效率所折服

第五類:其他:一些工程師以前在做很多SEO優化的時候,苦於不會程式語言,一些程序上面的問題,得不到解決,只能做做簡單的頁面優化。現在學會Python之後,可以編寫一些查詢收錄,排名,自動生成網絡地圖的程序,解決棘手的SEO問題。

 

從入門級選手到專業級選手都在做的——爬蟲

Python 寫爬蟲的教程網上一抓一大把,據我所知很多初學 Python 的人都是使用它編寫爬蟲程序。小到抓取一個小黃圖網站,大到一個互聯網公司的商業應用。通過Python 入門爬蟲比較簡單易學,不需要在一開始掌握太多太基礎太底層的知識就可以很快上手,而且很快可以做出成果,非常適合小白一開始想做出點看得見的東西的成就感。

除了入門,爬蟲也被廣泛應用到一些需要數據的公司、平台和組織,通過抓取互聯網上的公開數據,來實現一些商業價值是非常常見的做法。當然這些選手的爬蟲就要厲害的多了,需要處理包括路由、存儲、分佈式計算等很多問題,與小白的抓黃圖小程序,複雜度差了很多倍。

 

Web 程序

除了爬蟲,Python 也廣泛應用到了 Web 端程序,比如你現在正在使用的知乎,主站後台就是基於 Python tornado 框架,豆瓣的後台也是基於 Python。除了 tornado (Tornado Web Server)Python 常用的 Web 框架還有 Flask(Welcome | Flask (A Python Microframework))Django (The Web framework for perfectionists with deadlines) 等等。通過上述框架,你可以很方便實現一個Web 程序,比如我認識的一些朋友,就通過Python 自己編寫了自己的博客程序,包括之前的zhihu.photo,我就是通過Flask 實現的後台(出於版權等原因,我已經停掉了這個網站)。除了上述框架,你也可以嘗試自己實現一個 Web 框架。

 

桌面程序

Python 也有很多UI 庫,你可以很方便地完成一個GUI 程序(話說我最開始接觸程式語言的時候,就覺得寫GUI 好炫酷,不過搞了好久才在VC6 搞出一個小程序,後來又輾轉Delphi Java等,最後接觸到Python 的時候,我對GUI 已經不感興趣了) Python 實現 GUI 的實例也不少,包括大名鼎鼎的 Dropbox,就是 Python 實現的服務器端和客戶端程序。

 

人工智慧(AI)與機器學習

人工智慧是現在非常火的一個方向,AI熱潮讓Python語言的未來充滿了無限的潛力。現在釋放出來的幾個非常有影響力的AI框架,大多是Python的實現,為什麼呢?因為Python足夠動態、具有足夠性能,這是人工智慧技術所需要的技術特點。比如基於Python的深度學習庫、深度學習方向、機器學習方向、自然語言處理方向的一些網站基本都是通過Python來實現的。

機器學習,尤其是現在火爆的深度學習,其工具框架大都提供了Python接口。 Python在科學計算領域一直有著較好的聲譽,其簡潔清晰的語法以及豐富的計算工具,深受此領域開發者喜愛。

早在深度學習以及Tensorflow等框架流行之前,Python中即有scikit-learn,能夠很方便地完成幾乎所有機器學習模型,從經典數據集下載到構建模型只需要簡單的幾行代碼。配合Pandasmatplotlib等工具,能很簡單地進行調整。

TensorflowPyTorchMXNetKeras等深度學習框架更是極大地拓展了機器學習的可能。使用Keras編寫一個手寫數字識別的深度學習網絡僅僅需要寥寥數十行代碼,即可藉助底層實現,方便地調用包括GPU在內的大量資源完成工作。

值得一提的是,無論什麼框架,Python只是作為前端描述用的語言,實際計算則是通過底層的C/C++實現。由於Python能很方便地引入和使用C/C++項目和庫,從而實現功能和性能上的擴展,這樣的大規模計算中,讓開發者更關注邏輯於數據本身,而從內存分配等繁雜工作中解放出來,是Python被廣泛應用到機器學習領域的重要原因。

 

科學計算

Python 的開發效率非常高,性能要求較高的模塊可以用 C 改寫,Python 調用。同時,Python 可以更高層次的抽象問題,所以在科學計算領域也非常熱門。包括 scipynumpy 等用於科學計算的第三方庫的出現,更是方便了又一定數學基礎,但是計算機基礎一般的朋友。

 

 

 

 

 

 

 

推薦文章:
從哆啦A夢到 iPhone…為何 UI 設計用「圓角」就是比較討喜?


狗狗是人工智慧的最佳教練!Google AI機器人學狗左轉右彎還能小跑


【前端工程師CSS教學】定位元素Positioning Elements


APCS 程式檢定,該從 C、Java 還是 Python 下手?

程式語言入門首選Python,四招教你輕鬆學會!


視障朋友的希望!Google人工智慧眼鏡帶你看世界(上)


又墜一顆星!!台灣人工智慧代表陳昇瑋逝世!

人工智慧MOTOBOT存在,竟然讓重機賽車手冠軍都備感威脅?!

人工智慧MOTOBOT存在,竟然讓重機賽車手冠軍都備感威脅?!
人工智慧MOTOBOT存在,竟然讓重機賽車手冠軍都備感威脅?!

人工智慧MOTOBOT真的太厲害!厲害到連重機賽車手冠軍都嘆”快失業了!”

人工智慧科學家正在研發適用於各行各業的 AI 時,經常拿該領域的頂尖人物作為人工智慧學習的對象,並「餵」給它最精準的數據。有時研發出的人工智慧,表現竟意外超越人類。像是過去史丹佛大學研發的甩尾 AI「MARTYKhana」讓方程式車手嘆「要失業了⋯⋯」。過去在 2015 年,YAMAHA 就在東京車展上公開 AI 重機賽車手「MOTOBOT」第一代。

推薦閱讀:AI 甩尾技術勝 Ken Block!方程式冠軍車手嘆:要失業了

人工智慧機器人 MOTOBOT 可以放在「一般(指未對摩托車進行任何便於 AI 的改裝)」的重機上,並有「以人類的角度出發」而自主操控機車的能力。第一代的「MOTOBOT」僅僅有騎到時速 100 的實力,並會一些基本的大角度過彎。如果經過有效率的機器學習,可達到 GP 等級賽車手的實力。

▲2015 年的 AI 重機車手「MOTOBOT」第一代剛「誕生」不久,就指名要挑戰 MotoGP 選手 Valentino Rossi。

從 Yamaha 官方釋出的影片「To『The Doctor』, 致親愛的羅西」中可看出,這個人工智慧 MOTOBOT 可說是野心勃勃呢!它竟想挑戰過去「曾」多年在 MotoGP 賽事中獲「年度總冠軍」的車手「VR46」Valentino Rossi,還向 Rossi 下了賽道圈速的戰帖。

2016 年,第一次看到這只 AI 車手的 Rossi 顯得十分驚訝。Rossi 跟 MOTOBOT 的其中一位技術人員談了什麼?請看以下影片:

▲AI 重機車手「MOTOBOT」與真人 MotoGP 冠軍 Rossi 相見歡影片。

在 2015-2017 年間,「MOTOBOT」藉由不斷的學習、修正並進化。2017 年,YAMAHA 在東京車展上公開了第二代的「MOTOBOT Ver2」,在機器人的手臂、腿部等細節處有做一些改良。此時的 MOTOBOT 手腳細節都已經改良過,且已騎到時速 200 km,更重要的是——根據 Yamaha 官方釋出的影片上,它只落後 Rossi 30 多秒!

▲2017 年的「MOTOBOT」時速已可達兩百,且還只落後 Rossi 30 多秒!連 Rossi 本人都對其進步速度感到驚訝。

研發「MOTOBOT」的主題是「Beyond Human Capabilities」,意指透過強化一般機器人的用途,發揮「超越人類極限」的性能。也許在未來某一天,各行各業的菁英被 AI 取代已經不是無稽之談了。此時不妨換個角度想:乾脆成為人工智慧的創造者,想必就不會失業了,甚至還可以管轄多個 AI 機器人吧!

推薦閱讀:機器人都能應援棒球賽了!AI 組隊打職棒將不是夢?

 

 

 

 

推薦文章:
從哆啦A夢到 iPhone…為何 UI 設計用「圓角」就是比較討喜?


【前端工程師CSS教學】定位元素Positioning Elements


APCS 程式檢定,該從 C、Java 還是 Python 下手?


狗狗是人工智慧的最佳教練!Google AI機器人學狗左轉右彎還能小跑


又墜一顆星!!台灣人工智慧代表陳昇瑋逝世!


人工智慧將造反?!別怕,歐盟發布”AI白皮書”規範AI(上)


遠距工作高效率不是夢!人工智慧”番茄鐘工作法”可以幫助你(上)

 

UI設計用”圓角”,超人氣背後的祕密竟是?(下)

UI設計用"圓角",超人氣背後的祕密竟是?(下)
UI設計用”圓角”,超人氣背後的祕密竟是?(下)

為何UI設計用”圓角”就是比較討喜?其背後到底是什麼原因?(下)

本篇為下篇,上篇請點此連結

1. 認知負荷論(cognitive load theory)

認知負荷理論是由澳大利亞新南威爾士大學的認知心理學家 John Sweller 於1988 年提出,他假設人類的認知結構由工作記憶和長時記憶組成。其中工作記憶也可稱為短時記憶,容量十分有限,一次只能記下 5~9 條簡單的訊息。

著有《視知覺》(Visual Perception)的瑞士物理學家、藝術家 Jürg Nänni 也曾提出:視網膜中區處理「正圓形」是最快速的,而處理多稜角的形狀則較吃力,速度也較慢。

結合以上理論我們可以得知:「圓角」屬於較容易被大腦處理,因為它能夠降低大腦的認知負荷,也有利於在同樣時間內接受更多資訊。故比起一般的矩形,人類的大腦更願意接納圓潤的圓角矩型。

2. 視覺動線論

視覺動線是指在讀取眼前資訊時,視覺移動時所構成的方向路徑。這表示視覺動線決定了設計的焦點所在、擺放的位置與順序。

人眼在擷取資訊時,通常不一定會意識到有視覺動線隱藏其中,但眼睛卻會自然而然地依照視覺動線的設計來移動。

而圓角的「曲線」可以自然地、圓滑地帶動一般人的視覺動線,並且不會感到突兀與刺眼。

3. 曲線偏坦論(Contour Bias)

以演化心理學的觀點來看,人在面臨可能造成危害的事物時,通常會湧現出恐懼、不安與抗拒的情緒,這是人類經歷長時間的演化後遺傳下來的「適應體」,目的是為了幫助我們存活,提高生存機會。

除了心理學,腦科學也指出當面對尖銳的物體時,大腦的杏仁核活性會增強。杏仁核是邊緣系統的皮質下中樞,有產生情緒的功能,能產生恐懼記憶並引發應急反應,讓身體能逃離危險。

所以,人類對於形狀銳利的物品往往會有先天的排斥,如會連想到尖銳物的方角矩型;對於有曲線的圓融物體則會有較高的接納度,讓圓角矩型不被人腦淺意識抗拒。

圓角不是萬靈丹 善用不濫用才是好的 UI

我們已經知道了圓角佔有許多先天優勢,但並不是一股腦地選擇圓角就是正確答案。

在 UI 設計的領域,需要考量的有許多面向,如品牌識別、選用字體、色彩配置以及邊緣線條的採用等等,今天企業若要一切都端正穩重,那圓角就不一定是最佳解答;並且若是矯枉過正,使用弧度過大的圓角可能會看起來不專業,造成反效果。

UI設計師能塑造出怎麼樣的品牌視覺,背後有許多的「眉眉角角」,需要不斷吸收新知、訓練思考,長時間累積自我的美學素養。

 

 

 

 

推薦文章:
AI人工智慧救地球!Google:AI 保護環境還比人類快 3000 倍


APCS 程式檢定,該從 C、Java 還是 Python 下手?


【前端工程師CSS教學】float浮動屬性


從哆啦A夢到 iPhone…為何 UI 設計用「圓角」就是比較討喜?


菜鳥Java工程師必會(一)-關於Java身世的秘密


網頁前端偷吃步小技巧-display與visible屬性介紹


科技始於人性!最新版UI設計身分證10月份問世!(上)

 

UI設計用”圓角”,超人氣背後的祕密竟是?(上)

UI設計用"圓角",超人氣背後的祕密竟是?(上)
UI設計用”圓角”,超人氣背後的祕密竟是?(上)

為何UI設計用”圓角”就是比較討喜?其背後到底是什麼原因?(上)

「圓角矩形」可以說是近年盡人皆知的 UI 設計優勢,自從 iPhone 4 發售至今日,到處都可以看到這個乍看簡單、但其實富有深意的幾何圖形。

然而圓角矩形到底為何可以能擄獲 Steve Jobs 以至於世人芳心呢?箇中緣由,其實也藏在哆啦 A 夢身上!

「圓角矩形」在現代 UI 中代表簡約、清爽與和平易近人。這些印象是因幾何圖形能帶給人們的心理暗示,任何圖形設計元素如形狀、線條、顏色、紋理和圖案,都能淺移默化地影響人們的感官認知,從而讓平面圖形附上不同的喻意。

乍聽之下有點形而上學,但其實我們從童年開始就不斷在接收幾何圖形的心理暗示了——許多卡通動畫中的角色,也都被賦予了「幾何暗示」!

三角形的小夫、方形的胖虎……哆啦 A 夢中的幾何暗示


▲ 哆啦 A 夢中的五個角色造型都跟個性息息相關(圖片取自 flickr) 

 

陪伴許多人長大的國民作品《哆啦 A 夢》(ドラえもん),其中的主要角色個個形象鮮明、深入人心,是運用幾何圖形設計角色的好範例:自戀愛現、在狡猾的同時又常有鬼點子的小夫,從是身形、嘴形到髮型都呈現三角形;而個性粗暴、蠻不講理,但在緊要關頭時又展現了正直的胖虎,無論臉型與身體都呈現寬大的方型。

至於個性善良溫柔、富有同情心的靜香,臉型與整題造型都較圓潤,沒有稜角;至於最備受喜愛的哆啦 A 夢,整個角色從頭到手都是圓型設計。

▲藝術家實際示範如何以基礎的圓型、三角形與方形設計角色形象。

不只日本,歐美的畫家、藝術家、動畫師等角色設計專家們也時常以「幾何造型」為基底,藉此創造出引人入勝、個性鮮明的角色,可以得知一個好的幾何設計所具有的優勢。

卡通之外 賈伯斯也瘋狂的圓角設計

不只卡通動漫畫之外,其實許多商業產品也為了讓客戶留下良好的第一印象,採用親民的圓角設計。

話說從頭,要談圓角矩型,就不得不談它成為設計趨勢的轉折點——iPhone 的發布。Steve Jobs 認為:所有物件都有圓角,而且相較於圓形與橢圓形,圓角矩形設計在生活中其實更為常見。

▲ 2020 年發售的 iPhone SE 依然保留標誌性的圓角設計。

1981 年,Steve Jobs 要求當時任職蘋果的電腦工程師 Bill Atkinson 設計出可以快速畫出圓角矩形的方法。當時已能快速繪製出長方形、圓形與橢圓形的 Bill當下便反駁:「圓角的矩形很難用電腦技術畫出來,而且又不必要!」

Steve Jobs 二話不說便把 Bill 從座位上拉起來,指著房間內的白板、桌椅等所有圓角矩型的物品。更帶著他出門上街,指出大街小巷每個小角落的圓角矩形給他看:「你看,到處都有圓角矩形!」

最後,在一個「禁止停車」的圓角矩形路標牌被指出來後,Bill 認輸了。「好啦,我放棄。我回去看看是不是真的跟我想像的一樣困難。」

隔天下午,Bill 就研究出快速繪製圓角矩形的方法。如今在 iOS 系統裡,這個幾何圖形已經成為其 UI 介面傳承的一部分。

不只是「好看」 圓角設計的背後深意

近年來, 3C 產品硬體設計上都大量使用圓角,UI 介面設計也順其自然地大量採用圓角。除了是為了要「跟上潮流」,圓潤的造型也的確讓產品設計加分。舉凡服務性產品、企業官網、社群媒體、網路商店等,需要 UI 介面的地方全都導入圓角設計。但是圓角「好看」的背後,到底是什麼原因?

人們究竟為何會如此熱愛圓角的科學根據尚未定論,大致有以下三種說法:

本篇為上篇,下篇請點此連結

 

 

 

 

 

推薦文章:
AI人工智慧救地球!Google:AI 保護環境還比人類快 3000 倍


從哆啦A夢到 iPhone…為何 UI 設計用「圓角」就是比較討喜?


APCS 程式檢定,該從 C、Java 還是 Python 下手?


【前端工程師CSS教學】float浮動屬性


全端.後端.前端工程師大不同?!到底差在哪?


入門網頁前端好輕鬆,小技巧報你災!!


科技始於人性!最新版UI設計身分證10月份問世!(上)

 

搞定APCS檢定有一套-實作題篇

搞定APCS檢定有一套-實作題篇
搞定APCS檢定有一套-實作題篇

搞定APCS檢定很難嗎?到底又該從何下手?建議您可以了解實作哦!

本篇為下篇,上篇請點此連結

程式設計實作題

  • 題型:共計 4 個題組,以撰寫完整程式或副程式計分。
  • 檢測與計分方式:為單節次檢測 (測驗時間 140 分鐘),滿分 400 分

實作題例題

問題描述

一次考試中,於所有及格學生中獲取最低分數者最為幸運,反之,於所有不及格同學中,獲取最高分數者,可以說是最為不幸,而此二種分數,可以視為成績指標。請你設計一支程式,讀入全班成績(人數不固定),請對所有分數進行排序,並分別找出不及格中最高分數,以及及格中最低分數。當找不到最低及格分數,表示對於本次考試而言,這是一個不幸之班級,此時請你印出:「worst case」;反之,當找不到最高不及格分數時,請你印出「best case」。註:假設及格分數為 60,每筆測資皆為 0~100 間整數,且筆數未定。

輸入格式

第一行輸入學生人數,第二行為各學生分數(0~100 間),分數與分數之間以一個空白間格。每一筆測資的學生人數為 1~20 的整數。

輸出格式

每筆測資輸出三行。
第一行由小而大印出所有成績,兩數字之間以一個空白間格,最後一個數字後無空白;
第二行印出最高不及格分數,如果全數及格時,於此行印出 best case;
第三行印出最低及格分數,當全數不及格時,於此行印出 worst case。

範例一:輸入

10
0 11 22 33 55 66 77 99 88 44

範例一:正確輸出

0 11 22 33 44 55 66 77 88 99
55
66

(說明)不及格分數最高為 55,及格分數最低為 66。

範例二:輸入

1
13

範例二:正確輸出

13
13 worst case

(說明)由於找不到最低及格分,因此第三行須印出「worst case」。

範例三:輸入

2
73 65

範例三:正確輸出

65 73
best case
65

(說明)由於找不到不及格分,因此第二行須印出「best case」。

評分說明

輸入包含若干筆測試資料,每一筆測試資料的執行時間限制(time limit)均為 2 秒, 依正確通過測資筆數給分。

對於實作題,我們分別使用 C、PythonJava 來解題分析,語法如下:

實作題解法#1 – 使用 C 語言(最費時):

#include < stdio.h >
#include < stdbool.h >

int len;
int *scores;

main()
{
    int i, j, tmp, highestUnpass, lowestPass;
    bool best=false, worst=false;
    scanf("%d", &len);
    scores = (int *)malloc(sizeof(int) * len);
    for (i=0;i < len;i++)
        scanf("%d", &scores[i]);
    for (i=0;i < len-1;i++)
        for(j=i+1;j < len;j++)
            if (scores[i] > scores[j])
            {
                tmp = scores[i];
                scores[i] = scores[j];
                scores[j] = tmp;
            }
    for (i=0;i < len;i++)
    {
        printf("%d", scores[i]);
        if (i < len-1)
            printf(" ");        
    }
    printf("\n");
    if (scores[len-1] < 60)
    {
        worst = true;
        highestUnpass = scores[len-1];
    }
    if (scores[0] >= 60)
    {
        best = true;
        lowestPass = scores[0];
    }
    if (worst == false && best == false)
    for (i=0;i < len;i++)
        if (scores[i] >= 60)
        {
            highestUnpass = scores[i-1];
            lowestPass = scores[i];
            break;
        }
    if (best)
        printf("best case\n");
    else
        printf("%d\n",highestUnpass);
    if (worst)
        printf("worst case\n");
    else
        printf("%d\n",lowestPass);
}

實作題解法#2 – 使用 Python 語言(最省時):

nums = int(input())
strScores = input()
scores = strScores.split(" ")
for i in range(len(scores)):
    scores[i] = int(scores[i])
scores.sort()
for i in range(len(scores)):
    print(scores[i], end="")
    if i < len(scores)-1:
        print(" ", end="")
print()
best = False
worst = False
if scores[len(scores)-1] < 60:
    worst = True
    highestUnpass = scores[len(scores)-1]
if scores[0] >= 60:
    best = True
    lowestPass = scores[0]
if best==False and worst == False:
    for i in range(len(scores)):
        if scores[i] > 60:
            lowestPass = scores[i]
            highestUnpass = scores[i-1]
            break
if best:
    print("best case")
else:
    print(highestUnpass)
if worst:
    print("worst case")
else:
    print(lowestPass)

實作題解法#3 – 使用 Java 語言(所花時間適中):

import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Scanner;

public class T01 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scanner = new Scanner(System.in);
        
        String nouse = scanner.nextLine();
        String data = scanner.nextLine();
        String[] strScores = data.split(" ");
        int len = strScores.length;
        int [] intScores = new int[len];
        int i;
        for (i=0;i < len;i++)
        {
            intScores[i] = Integer.parseInt(strScores[i]);
        }
        Arrays.sort(intScores);
        boolean best=false, worst=false;
        int highestUnpass = 0, lowestPass = 0;
        if (intScores[0] >= 60)
        {
            best = true;
            lowestPass = intScores[0];
        }
        if (intScores[intScores.length-1] < 60)
        {
            worst = true;
            highestUnpass = intScores[intScores.length-1];
        }
        
        for (i=0;i < len;i++)
        {
            System.out.print(intScores[i]);
            if (i < len-1)
                System.out.print(" ");              
        }
        System.out.println();
        if (best == false && worst == false)
        {
            for (i=0;i < len;i++)
            {       
                if (intScores[i] > 60)
                {
                    highestUnpass = intScores[i];
                    lowestPass = intScores[i-1];
                    break;
                }           
            }
        }
        if (best)
        {
            System.out.println("best case");
        }
        else
        {
            System.out.println(highestUnpass);
        }
        if (worst)
        {
            System.out.println("worst case");           
        }
        else
        {
            System.out.println(lowestPass);
        }                
    }
}

總結一下綜合比較的部分:

  • 學習上手速度:Python > Java > C
    (但 Python 與其他兩者程式語言差異較大,若一開始就選擇從 Python 語言上手 ,還是必須多花不少時間理解 C 語言,才能解答觀念題。)
  • 實際作答速度:Python > Java > C
    (Python 與 Java 都具備函式庫,在實作題作答時會比 C 語言快速。)

APCS 短期衝刺,從 Java 著手 CP 值最高!

以學習效果與所花時間的比值來說,學習 Java 的 CP 值相較於高。以下說明為什麼:

雖然 Python 堪稱「程式語言的瑞士刀」,其語法直觀、編寫簡潔快速,比起 C , Java 屬於更容易上手,但由於觀念題是由 C 語言出題,若學 Python 再接觸 C ,對於有時間與其他課業壓力的考生來說,可以說是相當辛苦、費時的。

Java 本身是由 C / C++為概念改良而成的語言,在設計之初,考量重點之一便是簡潔,因此學習與 C 語言語法架構相似的 Java ,讓考生有操作基礎後再學習 C 語言,更能在檢測學習之路,更加如魚得水。

綜合以上觀點,投資在能兼顧「理論題」與「實務題」的 Java,才是事半功倍、投報率最高的首選!

最後貼心提醒:109 年第 2 次 APCS 檢測暫訂 2020 年 7 月 4 日!

看完以上分析後,各位考生可以開始逐步準備 APCS 檢測囉!

 

 

 

 

 

推薦文章:
【前端工程師CSS教學】float浮動屬性


APCS 程式檢定,該從 C、Java 還是 Python 下手?


AI人工智慧救地球!Google:AI 保護環境還比人類快 3000 倍


從哆啦A夢到 iPhone…為何 UI 設計用「圓角」就是比較討喜?


程式語言入門首選Python,四招教你輕鬆學會!


電腦白癡也想當工程師?真心建議先學Python!


APCS認證到底是什麼?為什麼它是如此重要?!(一)

搞定APCS檢定有一套-觀念題篇

搞定APCS檢定有一套-觀念題篇
搞定APCS檢定有一套-觀念題篇

搞定APCS檢定很難嗎?到底又該從何下手?建議您可以了解觀念哦!

 

第一次考 APCS 程式語言,到底該從哪個程式語言下手才能夠事半功倍呢?

假設是一開始就選到一個好上手、測驗時又好作答的程式語言,就可以減少準備時間和學習負擔!本篇文章將以三款詢問度較高的應考語言 C , Java , Python 來做解析、比較。

此篇你將了解…

  1. 1. APCS 檢測的規範與基礎
  2. 2. C , Java Python – 哪個語言適合解題?

先來了解一下檢測內容的基礎概念,APCS 的兩大題組 【觀念題】與【實作題】

程式設計觀念題

  • 題型:單選題 (含題組),以運算思維、問題解決與程式設計概念測試為主。
  • 檢測與計分方式:分兩節次檢測 (單節測驗時間60分鐘), 檢測分數為合併計分,滿分100分

觀念題例題#1

1. 右側程式碼,執行時的輸出為何?

  1. (A) 0 2 4 6 8 10
  2. (B) 0 1 2 3 4 5 6 7 8 9 10
  3. (C) 0 1 3 5 7 9
  4. (D) 0 1 3 5 7 9 11
void main() {
    for (int i=0; i<=10; i=i+1) {
        printf ("%d ", i);
        i = i + 1;
    }
    printf ("\n");
}

(出自 105 年 3 月 5 日,理論題第 15 題)

這一題主要要測驗的內容,是考驗考生是否了解 C 語言當中, for 迴圈的結構。

以 for 迴圈來說,三的區段的值分別是初始值、條件值、運算值。

在這一題當中,第一次執行的時候 i 為 0 ,所以會先印出 0。

接下來,因為第四行 i=i+1 的關係, i 會變為 1 。但是執行迴圈時,回到了 for 的第三部分,這個時候,還是另外一次的 i=i+1 ,所以 i 變為 2,然後進行驗證, i <= 10

根據這樣的方式去執行邏輯, i 每印出一個就會 +2 一次,直到 i 超過 10 之後跳出迴圈。

Ans:所以會印出「0 2 4 6 8 10」

觀念題例題#2

2. 若以 f(22)呼叫右側 f()函式,
總共會印出多少數字?

  1. (A) 26
  2. (B) 22
  3. (C) 11
  4. (D) 15
void f(int n) {
    printf ("%d\n", n);
    while (n != 1) {
        if ((n%2)==1) {
            n = 3*n + 1;
        }
        else {
            n = n / 2;
        }
        printf ("%d\n", n);
    }
}

(出自 105 年 3 月 5 日,理論題第 21 題)

本題所考內容,是對於 while 與 if 的熟悉度。

傳入 22 進 function 之後,會先印出 22。

接下來進入 while 迴圈,如果 n 不是 1 ,那麼這個迴圈會一直執行。

while 當中, 如果 n 是奇數,則 n 會變成 3xn+1 ,如果 n 是偶數,那 n 會變成原來的一半。

所以整個流程將會是「22➔11➔34➔17➔52➔26➔13➔40➔20➔10➔5➔16➔8➔4➔2➔1」。

Ans:所以答案是 16 個。

本篇為上篇,下篇請點此連結

 

 

 

 

 

 

推薦文章:
AI人工智慧救地球!Google:AI 保護環境還比人類快 3000 倍


【前端工程師CSS教學】float浮動屬性


APCS 程式檢定,該從 C、Java 還是 Python 下手?


從哆啦A夢到 iPhone…為何 UI 設計用「圓角」就是比較討喜?


真心不騙!!十分鐘弄懂APCS認證!(一)


掌握Java,掌握世界(一)-關於Java身世的秘密


學Python的三大好處,看完馬上手刀報名了!

狗狗也能當老師!人工智慧機器人學會轉彎還會小跑步!(下)

狗狗也能當老師!人工智慧機器人學會轉彎還會小跑步!(下)
狗狗也能當老師!人工智慧機器人學會轉彎還會小跑步!(下)

沒想到人工智慧機器人也會轉彎小跑步!而且老師竟然還是狗狗!!(下)

本篇為下篇,上篇請點此連結

讓機器人能自立自強的人工智慧技術

然而 Google 研究人員的下一個目標,就是如何用最少的人力、讓機器人在現實世界中可以正常運作。

儘管機械手臂的技術已經大有突破,比如同樣為 Google 研發人員設計的分散式 Q 學習演算法(QT-Opt)。但是,將相同的方法應用於四足機器人卻十分困難,因四足機器人更可能會因事故損壞自身、離開訓練區域,相較之下更需要人工干預。

▲四足機器人的自動化學習系統面臨安全性與自動化的挑戰。

首先研究人員透過多任務學習(multitask learning)生成,將機器人驅動到工作空間,以防止機器人離開訓練區域;並通過設計安全約束,將機器人跌倒的次數降到最低。

例如:若當前有兩項任務,「向前」與「向後」行走。如果機器人處在工作區的後面,調度程序將選擇「向前」任務,反之亦然。如果機器人掉落,則將調用自動起身控制器,接著進行下一個任務。

該框架成功地訓練了從無到有的策略,無需人工干預,機器人就可以朝不同的方向走,還使機器人能挑戰非平坦的地面,例如記憶泡棉床墊和鏤空的地墊。

四足機器人的未來展望

四足機器人能夠像真正的狗一樣走路,但仍然還有不足之處:由於算法和硬體的限制,它並不能完成高度動態的行為,像是大幅度的跳躍。也不比全手動設計的控制器穩定;並且絆倒後雖能重新站起來,但仍然不甚靈活。

不過即使如此,研究人員依舊十分相信,他們的方法可以促進人工智慧機器人的發展,未來更能獨立運作,足以完成現實世界中的工作,像是在多層倉庫或是訂單履行中心裡運輸物料;並表示,未來也有興趣繼續研發,將自動培訓系統應用於更複雜的現實環境中。

 

 

 

 

推薦文章:
AI機器狗Aibo成最新愛寵 真狗會被取代嗎?


AI人工智慧救地球!Google:AI 保護環境還比人類快 3000 倍


CSS教學-display與visible屬性介紹


用Python寫出唐鳳「番茄鐘工作法」程式,讓AI幫你集中注意力!


人工智慧將造反?!別怕,歐盟發布”AI白皮書”規範AI(上)


掌握Python就靠它?!19個語法你應該要先知道!


Python自學有方法!6種數據類型先搞定!