2020年2月27日 星期四

中國木蘭爆出抄襲Python疑雲

大眾質疑中國木蘭抄襲編程語言Python
大眾質疑中國木蘭抄襲編程語言Python

全世界對智慧財產權、自主研發技術日益的看重,中國也開始技術自主轉型,致力發展國產科技。
中國宣稱自主研發、但是抄襲的新聞喧囂塵上,2018 年自稱國產的紅芯瀏覽器被爆抄襲 Chrome ,現在又一樁涉及造假的新聞引起大家注意……

承載著中國對自主研發希望的「木蘭」

隸屬中國科學院計算技術研究所的「國家重點實驗室編譯組」研發團隊於 2020 年 1 月 15 日發表了一款名為「木蘭」的程式語言,不僅強調它是「中國研究人員自主設計、開發和實現的編程語言」,稱木蘭可使用於 AI 人工智慧與物聯網,並將其應用於中國的中小學校園,以木蘭為基礎延伸自主研發編程軟體、人工智慧教材和教學裝備。
開發團隊領導人劉雷在接受訪問時表示:「木蘭是我們真正掌握核心技術的編程語言」,並稱木蘭將會成為「智慧型物聯時代的 C 語言」。隨後團隊也公開了木蘭的開放原始碼軟體,提供一般大眾免費下載。然而,原本滿心期待的中國網友們很快地發現事情不太對勁。

連圖標都一樣 木蘭爆出只是換皮 Python

木蘭圖標與Python被Pyinstaller打包成exe檔的圖標一模一樣
▲ 左為木蘭 logo 圖標、右為使用 Pyinstaller 打包成 exe 檔的 Python 圖標(圖片取自網路)
木蘭開放下載之後,很快就有網友指出木蘭的抽象語法樹與現下最熱門的程式語言「Python」完全相同,不僅如此,誇張的是連顯示圖標也與 Python 的官方圖標一模一樣!
另一位網友在分享自己的體驗時也分享:木蘭運作時套用 Python 的執行環境,程式運作方式與 Python 完全相同,但也因此運作速度非常慢,而且沒有加密。「就像在頂層做了一個接口,而底層編譯、優化等其他工作仍然由Python 來做。」

面對大眾質疑 負責人坦言「部分基於 Python 的二次開發」

隨著質疑的聲浪甚囂塵上,領導人劉雷出面聲明「自己之前受訪時犯了兩項錯誤」,其一是木蘭原本規劃是用於中小學教育,卻將它擴大到智慧物聯領域;其二是木蘭的 8 位單片機上的編譯器的確是由該團隊開發,但 32 位單片機上的編譯器「是基於 Python 開源編輯器進行的二次開發」,與原先採訪中「完全自主開發」的聲稱有很大的差距。
中國科學院於 19 日發出聲明,表示劉雷存在欺瞞、虛假陳述和誇大宣傳的行為,將對他祭出停職檢查的處分,崗位等級也從工程師降為助理工程師。並責令實驗室深刻檢討。
劉雷身為這次項目的團隊領導人,其創辦的中科智芯科技有限公司是中國科學院計算技術研究所的孵化企業,源中科院計算所計算機體繫結構國家重點實驗室而成立。而原本在「中科智芯」官方網站的「木蘭」下載連結,現在也已經不見蹤影。

技術詐騙頻傳 急於求成的後遺症

木蘭事件爆發後,有不少網友都表達了他們的憤怒,甚至有網友質疑,這種如同集體詐騙的行為不需要判刑嗎?
然而難過的是,中國自主研發技術爆出抄襲風波已經不是新鮮事。
早在 2004 年,就有標榜「完全自主智慧財產權」的麒麟作業系統,被爆出與開放原始碼的作業系統 FreeBSD 5.3 在原始碼上有 60% 的相似度,在函式名上甚至有高達 99.45% 的相似度。
而 2018 年的紅芯瀏覽器則是打出「世界第五顆、也是唯一一顆屬於中國人自己的瀏覽器核心」的旗號,但是實際上是基於 Chromium 49 核心進行二次修改,也是換湯不換藥的「Chrome 套殼瀏覽器」。
有網友認為會有這種現象是因為「上有所好,下必趨之」,官方急於採摘中國自產技術的果實,才導致很多人選擇鋌而走險,靠抄襲與蒙騙來走捷徑,殊不知這對真正的自主創新是一種極大的傷害。
而除了科技產業,另外也有投資業內人士表示,木蘭事件引發業內高度關注,這源於投資人當前對程式語言教育、 AI 人工智慧教育的高度興趣。在過去一年時間裡,已有好幾間程式語言類教育公司獲得了高額融資。
由此次事件可知,比起靠抄襲走險路,還是好好腳踏實地學習程式語言有前途啊!

相關文章:
SEM 關鍵字廣告課程讓高三生提早就定位 開始接案賺錢!
44歲媽咪順利轉職網頁設計師, 家庭事業都得意
擺脫設備工程師血汗職涯, 零基礎的我成功轉職 Python 資料工程師
AI人工智慧追蹤蚊子快狠準 讓你不再被叮卻找不到蚊子
跟上趨勢學了Python你能做什麼?
Python處理excel超強大!讓你高效率完成工作
人工智慧世代來臨!首推Python (下)

2020年2月26日 星期三

Python教學19個語法入門

Python教學快速學會19個語法
Python教學快速學會19個語法
 大家聽聞Python程式簡單易懂,前景看好薪水高,於是想快速入門 Python 程式,有方法嗎?Python 教學有套路嗎?我覺得Python 教學19個語法是 Python 入門 第一首選 !
 Python的特點
解釋型語言,無需編譯即可運行
提供了交互式命令行
基於對象的程式思想
跨平台和良好的兼容性,在Windows、Mac、Linux上都可運行
簡單好用而且功能強大
01中文編碼
很多同學在打開數據時會遇上亂碼問題,其原因是字符集的編碼問題。 Linux和Mac默認的編碼集是UTF8,而Windows則是ASCII。如果數據編碼的字符集,和你使用Python進行處理時所用的字符集不同,則會出現亂碼問題。
另外,我個人的習慣是在Python代碼的頭部加入以下內容,其中第二行聲明了使用UTF8字符集。
#!/usr/bin/env python# coding:utf8
02變量
Python中的變量可以看作是一個個容器,裡面存放著我們需要使用到的值。
Python對變量名的要求和其他語言一樣:可以包括英文、數字以及下劃線,但不能以數字開頭,區分大小寫。當然我推薦,變量名用純英文就很好,並且取一些有意義的名稱,便於自己理解每個變量的作用。
Python是一門弱類型的語言,在使用變量時無需聲明其類型。 Python中的變量包括以下幾類:數值、字符串、列表、元組、字典。
03數值
數值包括整型和浮點型,分別對應整數和浮點數,後者精度更高。
#整型a = 1#浮點型b = 2.1print a, b
04字符串
字符串也就是我們經常接觸到的文本,可以往裡面放任意長度的內容,用單引號或雙引號括起來。應當注意,中文以及中文符號只能出現在字符串內,如果在下面第三行中使用了中文輸入法的逗號,Python將報錯。
c = Hello d =你好print c, d
使用+可以拼接兩個字符串。
print c + d
使用len()可以得到字符串的長度。
print len( Hello World )
使用切片可以訪問字符串中的某個字符或某個片段。
#位置下標從0開始c = Hello World #打印結果為H,下標為0表示第一個字符print c[0]
#打印結果為d,下標為負數表示從後往前數#所以- 1表示倒數第一個字符print c[-1]
#使用:返回一個片段,冒號前後分別為開始下標和結束下標#包括開始下標,但不包括結束下標
#因此c[1:5 ]表示,返回下標從1到4的片段,即第二個到第五個字符print c[1:5]
#冒號前後的下標同樣可以使用負數
#或者不提供,表示從最左端開始或一直到最右端print c[1:-1], c[:5], c[3:]
05列表
列表好比一條隊伍,裡面依次存放著多個變量。列表和字符串類似,但字符串中的每個元素都是字符,而列表中的每個元素可以是任意類型的變量。
#使用[]定義一個空列表,使用append()向列表尾部添加一個元素
#如果要添加到首部,就用prepend()好了a = []a.append(1)a.append(2.1)a .append( Hello )print a
使用len()可以獲得列表的長度。
print len(a)
列表元素的按下標訪問和賦值等操作,和字符串都是類似的。
print a[1], a[-1]a[1] = 100print a
使用del刪除列表中的某個元素。
del a[0]print a
06元組
元組和列表類似,唯一的不同是元組中的元素在初始化之後不能再更改,因此可以理解成一個只讀的變量。
#使用()定義一個元組a = (1, 2.1, Hello )#嘗試修改元組中的元素會報錯a[0] = 100
07字典
字典是一種極為重要的變量類型,使用一個key來訪問相應的value,即一種鍵值對的數據形式。
#使用{}定義一個字典a = {}#使用key來賦值valuea[ k1 ] = 1a[ k2 ] = 2.1a[ k3 ] = Hello
所以能夠總結出字典和列表的不同。列表中的元素是有序對等的,所以是用下標來賦值和訪問,而字典中的元素是無序的,所以是用key來操作相應value。
#也可以在定義字典和列表的同時進行賦值li = [1, 2.1, Hello ]di = { k1 : 1, k2 : 2.1, k3 : Hello }
使用has_key()判斷字典中是否有某個key。
print di.has_key( k4 )
如果訪問不存在的key,Python將會報錯。在賦值的時候,如果key已經存在,則會用新的value覆蓋已有的value。
08註釋
被註釋的代碼將不會運行,可以看作是寫給自己和其他程序猿閱讀的一些筆記和說明,提高代碼可讀性。
#這裡是單行註釋這裡是很多行註釋
在Sublime中,選中需要註釋的內容,按Ctrl+/即可完成註釋。
09保留字符
在Python中,有一些字符串具有某些特定功能,如import 、 class等。我們在選擇變量名時,應注意避開這些保留字符。
#以下變量賦值將報錯import = 1
10行和縮進
在Python中,代碼塊的邊界不是通過大括號等符號進行顯式劃分,而是通過行的縮進實現的。連續相同縮進水平的代碼處於同一個代碼塊,在使用for 、 while 、 if 、 try等語法時需要注意每行代碼的縮進。
11運算符
運算符的作用是根據已有的變量生成新的變量,主要有以下幾種:
算術運算符:+,-,*,/,%,即加、減、乘、除、取餘
比較運算符:==,!=,>,<,>=,<=,即等於、不等於、大於、小於、大於等於、小於等於
賦值運算符:=,+=,-=,*=,/ =,%=,即賦值、加賦值、減賦值、乘賦值、除賦值、取餘賦值
邏輯運算符:and,or,not,即與、或、非
a = 1b = 2print a + bprint a == b#等價於a = a + 3a += 3print ac = Trued = Falseprint c and d
12條件在寫代碼的時候,往往需要根據某些條件進行判斷,並根據判斷結果執行不同的分支代碼。
a = 1#單個條件if a == 1: print 11111#處理條件不成立的分支if 
a == 2: print 22222else: print 33333#多個條件,加多少個都可以if 
a == 1: print 11111elif a == 2: print 22222else: print 33333
需要注意的是,但凡出現了if和elif ,就需要加上相應的條件判斷,並且注意代碼的縮進。在Sublime中輸入if會出現相應的提示,可以方便地補全代碼,在換行時光標也會自動跳到合適的縮進處。
13循環
如果需要打印從1到100的100個數,肯定不會傻傻地寫100行print代碼,而是會用循環來處理類似的重複性工作。
14 while循環
while循環的思想是,只要某一條件成立,就不斷執行循環體裡的代碼,直到條件不再成立。
flag = 1while flag < 10: print flag    
#一定要記得在循環體裡修改條件變量    
#否則可能導致死循環flag += 1
15 for循環
for循環的循環次數一般是事先預知的,將一個標誌變量從某個起始值迭代到某個終止值後即結束。
# x從0開始,一直到9結束for x in xrange(0, 10): print x
可以用for循環方便地遍歷列表和字典。
li = [1, 2.1, Hello ]dict = { k1 : 1, k2 : 2.1, k3 : Hello }
#遍歷列表,這裡的item只是一個臨時變量,取別的名稱也行for item in li: print item
#遍歷字典的全部key,這裡的key也只是一個臨時變量,名稱不重要for key in dict.keys(): print key
#遍歷字典的全部value,這裡的value也只是一個臨時變量,名稱不重要for value in dict.values(): print value#同時遍歷key和valuefor key, value in dict.items(): print key, value
16循環控制
循環控制主要包括三種: pass 、 continue 、 break 。
pass表示什麼也不做,只是佔一行代碼的位置;continue表示立即退出本輪循環,繼續執行後續輪循環;break表示立即推出循環,後續循環也不再執行。
for x in xrange(0, 10): if x == 5: pass else: print xfor x in xrange(0, 10): if x == 5: continue print xfor x in xrange(0, 10): if x == 5: break print x
17時間
在處理數據時,很多地方都會涉及到時間,例如數據產生的時間。先介紹一下時間戳的概念,時間戳指的是從1970年1月1日0時0分0秒開始,到某一時刻所經歷的秒數,可以是整數或者小數,後者的精度更高。
為什麼需要時間戳這樣的一個概念?因為對於同一個時刻,不同人的描述可能不同,畢竟文本的形式千變萬化,而時間戳使得時間的表達得到了統一,每個時刻只能用唯一的整數或浮點數來表示,同時也便於計算時間差這樣的處理。
#來看一下當前時刻的時間戳吧import timet = time.time()print t, type(t)
關於時間戳,最常用的處理便是時間戳和時間文本之間的轉換,例如將2016年10月1日10時0分0秒轉為時間戳。
import time#時間文本轉時間戳,精確到秒a = 2016-10-01 10:00:00 a = int(time.mktime(time.strptime(a, %Y-%m-%d %H:% M:%S )))print a#時間戳轉時間文本b = int(time.time())b = time.strftime( %Y-%m-%d %H:%M:%S , time.localtime (b))print b
其中, %Y 、 %m等都是時間字段,前者表示四位的年份,後者表示兩位的月份。
文件
文件操作包括向文件中寫內容,以及從文件中讀內容,使用open()打開一個文件。
#寫文件#重新寫模式,打開文件時會將文件內容清空fw = open( data.txt , w )#追加寫模式,打開文件後保留原始內容,繼續寫入for x in xrange(0, 10) : #將整數轉成文本再寫入fw.write(str(x)) #也可以每次寫入之後換行,
為轉義字符,表示換行# fw.write(str(x) +  
 )fw.close ()#讀文件fr = open( data.txt , r )#一行一行地讀,line只是個臨時變量,取別的名稱也行for line in fr: print line #如果每行後面有換行,可以將換行符去掉,使內容更緊湊# strip()可以去掉字符串兩端的空白字符# print line.strip()fr.close()
18異常Python代碼中可能會出現一些可以預知的問題。
例如字典訪問的key不存在。如果不加處理,發生問題的時候Python便會報錯並退出,可能之前跑了很久又要重頭再來。因此,我們需要對可能出現的異常進行捕捉和處理。異常的結構由try 、 except 、 else 、 finally四部分組成。
try: #嘗試執行這些代碼print 1 / 0except Exception, e: #如果出現異常就進行處理# e為出現的異常類型print eelse: # try裡的代碼沒有出錯#可以執行後續工作了print沒有出錯finally: #無論是否出錯,都會執行的代碼print一定會執行
19函數
函數的作用是代碼模塊化,將可重用的代碼封裝成一個函數,這樣在需要使用的時候就只需調用寫好的函數即可,而不用重新寫一遍代碼。
函數的使用包括兩個部分,函數的定義和函數的調用。除此之外,函數可以有一個或多個參數,參數之間以逗號分開,為函數的功能提供更多的靈活性。
#定義函數def hello(name1, name2): print Hello + name1 + + name2#調用函數hello( Python ,  JavaScript )
感謝您的閱讀,以上就是為您分享的如何快入門Python程式的第一站——19個語法,你學會了嗎?更多Python相關的內容盡在達內Python培訓機構官網,敬請關注!
免責聲明:內容和圖片源自網絡,版權歸原作者所有,如有侵犯您的原創版權請告知,我們將盡快刪除相關內容。

相關文章:
SEM 關鍵字廣告課程讓高三生提早就定位 開始接案賺錢!
44歲媽咪順利轉職網頁設計師, 家庭事業都得意
擺脫設備工程師血汗職涯, 零基礎的我成功轉職 Python 資料工程師
AI人工智慧追蹤蚊子快狠準 讓你不再被叮卻找不到蚊子
跟上趨勢學了Python你能做什麼?
Python處理excel超強大!讓你高效率完成工作
人工智慧世代來臨!首推Python (下)

2020年2月25日 星期二

Python 超強管家6法寶(下)

Python 6法寶超實用

Python 6法寶超實用



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

4. 自動寄送 Email


現今電腦都能自動操作了,一定要介紹自動寄送 Email 的模組: Python 的「 Smtplib 」。它是 Python 內建 的 SMTP(簡單郵件傳輸協定,Simple Mail Transfer Protocol )模組,它能傳送純文字郵件、HTML 郵件以及帶附件的郵件。
 Python 的 Smtplib 傳送郵件十分簡單易學,只要掌握各郵件型別的構造方法,給正確設定的函數,是一種寄送 Email 的方便途徑。
對需要每天發送好幾百份相同、不同 mail 的工作,可藉助 Python 來自動發送 mail 絕對能讓你事半功倍。除了自動寄送,還有如定時寄送,正文添加圖片,附件添加圖片和編寫圖形化介面等等的功能都可以由 Smtplib 簡單達成。

5. 整理電腦檔案


平時放鬆滑手機時、你會不會感覺自己就像隻倉鼠,看到什麼新鮮有趣的圖片、音樂跟影片就下載,而且還放在不同資料夾,想著「之後再一次整理就好」,就越放越多、更不知道怎麼整理呢?
Python 的 OS 模組一定是你最好的整理幫手,OS 模組包含普遍的作業系統功能,在系統檔案和目錄操作中是很方便的模組,可以處理幾乎所有跟檔案、副檔名、資料夾的移動、刪除、複製、重新命名等等。例如哪一天想把手機裡散落在各資料夾的圖片檔都整理到電腦,就可以透過 OS 模組,省下一個一個資料夾翻找的時間囉!
OS 模組是 Python 標準庫中一個典型的跨平台模組,支援 Windows 和 Linux 等系統操作,無需修改任何程式碼,也不會產生錯誤。就算是無需太深入操作的初學者,也能透過常見函式來快速處理完,今後就把檔案大掃除交給 Python 吧。

6. Python 變身告白神器


Python 編程界中有個浪漫的故事:有個電腦專業的朋友,靠對 Python 的熟悉設計了一個小程式,將一串數學難題的運行過程與結果以愛心造型呈現出來,因此打動了一位數學系女孩的芳心,二人因此成為羨煞旁人的情侶,跌破親朋好友的眼鏡。
即使這個小故事的真實性難以查證,但也的確是很有趣的告白道具喔!
這個靠 Python 做出來的愛心圖形是由一系列的點 (X,Y) 構成的曲線,X,Y 又滿足一定的關系,這樣可以確定出一個表達式 Expression,然後就是兩個 for 循環(for y in range;for x in range)逐行逐列地開始列印,滿足條件 expression 的列印出字元,否則列印空格。
如果只需要最陽春的愛心圖形,只要一行代碼就可以輸出了,在這邊提供給大家:
print('\n'.join([''.join([('Love'[(x-y) % len('Love')]if ((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3 <= 0 else ' ')for x in range(-30, 30)])for y in range(30, -30, -1)]))
以上就是推薦給所有 Python 使用者的生活小應用,也十分推薦大家揮灑自己的創意,做出其他讓人會心一笑的小設計!

使用Python一行代碼就能畫出Love組成的心型代碼
▲ 使用 Python 一行代碼就能畫出Love組成的心型代碼(圖片取自網路)

相關文章:

SEM 關鍵字廣告課程讓高三生提早就定位 開始接案賺錢!

44歲媽咪順利轉職網頁設計師, 家庭事業都得意

擺脫設備工程師血汗職涯, 零基礎的我成功轉職 Python 資料工程師

AI人工智慧追蹤蚊子快狠準 讓你不再被叮卻找不到蚊子

跟上趨勢學了Python你能做什麼?

Python處理excel超強大!讓你高效率完成工作

人工智慧世代來臨!首推Python (下)

2020年2月24日 星期一

Python 超強管家6法寶(上)

Python 6法寶超實用

Python 化身超強管家


很多人都曉得 Python 是人工智慧必學的程式語言、是資料分析和機器學習第一首選語言的位置,你沒想過 Python 可以幫你告白、還能幫你整理電腦檔案、自動收發信件等,提升生活品質。
一般大眾覺得程式語言離自己遙遠又艱深,但隨著科技的進步,可以靠寫程式做到的事情越來越多了,除了那些最前線的高科技外,也有很多貼近生活、既有趣又實用的小程式可以嘗試喔!
不管你是未學過 Python、好奇 Python 除了 AI 還能做什麼;或是 Python 初學者,想找能學習、更能從中累積成就感的小專案練練手;或是學了 Python 一段時間,好奇還有什麼新花樣的朋友,以下都是適合推薦給你的 Python 應用:

1. Word Cloud 文字雲


文字雲,一般認為就是將出現頻率較高的「關鍵詞」突出表現,以關鍵詞當元素建構出如雲朵般的圖片,既能幫助讀者一眼就可以領略主旨、又能當成配圖繽紛文字資料。但它並不是僅要將「頻率高的字顯示得比較大」而已!文字雲其實是自然語言處理(NLP)會遇到的的項目之一,除了計算詞的頻率,組成的形狀、字該如何擺放的樣式都是學問。
而如此內藏學問的文字雲,用 Python 來做十分輕鬆簡便,最簡潔的文字雲只需要 10 行 Python 程式碼即可產生,而且展示效果也非常好。
如果是臉書、IG 或是任何社群小編,學會了這個簡單又實用的 Python 應用,以後就不用擔心配圖生不出來了啊!

2. OCR 光學文字識別


OCR 即是將圖片辨識成文字的技術,只要說起 OCR ,就不得不提目前公認最優秀、最精確的開源 OCR 系統──Tesseract。
Tesseract 是一個光學字元辨識引擎,支援多種作業系統。,自 2006 年起由 Google 贊助開發,除了極高的精確度,Tesseract 也具有很高的靈活性,只要通過訓練,就能識別出任何字型及 Unicode 字元。而其底下的 pytesseract 模組就如同 Tesseract 的 Python 包裝器。
Pytesseract 基本使用方法非常簡單,讓人可以輕易透過 Python 來實現 OCR。
這樣一來,舉凡老闆傳了一份文章的照片要你打成文字檔、或是自己想把書中文字電子化,都可以透過這個 Python 應用輕鬆解決。

3. 滑鼠鍵盤自動化


偶爾在辦公或日常操作電腦時,會遇到需要大量重複做一個動作──例如不斷按右鍵、一直按 Enter 或是重複的繁瑣操作,是不是很煩躁無聊呢?
這時候就要介紹 Python 一個強大的模組:PyAutoGUI。它能控制鍵盤和滑鼠的操作,做自動化操作,能應用在軟體測試、自動存圖,也可以用來寫遊戲的自動化程式……沒錯,就是自製遊戲外掛啦。
而在 Python 環境下 PyAutoGUI 的使用也十分直白易懂,透過定位滑鼠、鍵盤 (x, y) 座標的方式,搭配幾組常用函数,就能先悠閒地泡杯咖啡,讓電腦自動幫你完成了任務了。
本篇為上篇,下篇請點此連結

相關文章:

SEM 關鍵字廣告課程讓高三生提早就定位 開始接案賺錢!
44歲媽咪順利轉職網頁設計師, 家庭事業都得意
擺脫設備工程師血汗職涯, 零基礎的我成功轉職 Python 資料工程師
AI人工智慧追蹤蚊子快狠準 讓你不再被叮卻找不到蚊子
跟上趨勢學了Python你能做什麼?
Python處理excel超強大!讓你高效率完成工作
人工智慧世代來臨!首推Python (下)