python裏能不能用中文

現代計算機和編程的起源和推動力量主要源自美國,再加上26個字母很便於表示(算上大小寫,6位bit就夠了),因此英語一直是編程領域的不二之選。但這就給部分非英語國家的編程學習者帶來一些困擾。以至於有些人還沒開始學,就擔心自己的英語問題。這完全沒必要,因爲 編程初期所用到的單詞很有限 ,你就當做一個符號去記,也能很快熟悉。而且我們一直在講的 Python,也可以 “用中文”來編程

Python3 對於字符編碼這一塊做了很大改進。帶來的一個額外功能就是,你可以 使用中文作爲變量名 。比如:



>>> 名字 = '張三'
>>> 年齡 = 18
>>> print(名字, 年齡)
張三 18

注意,Python2 是不行的。另外如果在代碼裏寫中文,別忘了在開頭加上 #coding: gbk#coding: utf8 的聲明。關於版本 2 和 3 的差別之前的文章裏有多次說過,不太清楚的同學請在公衆號裏回覆關鍵字 2v3

上面這樣的寫法完全是符合語法的,但我個人沒有習慣這麼來命名。不過非要這麼來的,我們可以嘗試把教程裏的“猜數字”代碼改一下(原版代碼見 教程 22 課 ):



from random import randint
def 是否相等(參數1, 參數2):
   if 參數1 < 參數2:
       print('太小了')
       return False;
   if 參數1 > 參數2:
       print('太大了')
       return False;
   if 參數1 == 參數2:
       print('猜中了!')
       return True

答案 = randint(1, 100)
print('猜猜我想的是幾?')
是否猜中 = False
while 是否猜中 == False:
   猜測值 = int(input())
   是否猜中 = 是否相等(猜測值, 答案)

使用中文變量名,執行效果和原版完全一致(除非代碼的編碼出了問題)。更進一步,你還可以通過某些方式更改系統提供的函數名:



from random import randint as 隨機整數

輸入 = input輸出 = print
對 = True
錯 = False
整數 = int
def 是否相等(參數1, 參數2):
   if 參數1 < 參數2:
       輸出('太小了')
       return 錯;
   if 參數1 > 參數2:
       輸出('太大了')
       return 錯;
   if 參數1 == 參數2:
       輸出('猜中了!')
       return 對

答案 = 隨機整數(1, 100)
輸出('猜猜我想的是幾?')
是否猜中 = 錯
while 是否猜中 == 錯:
   猜測值 = 整數(輸入())
   是否猜中 = 是否相等(猜測值, 答案)

這裏牽涉到3個概念:

  1. from random import randint as 隨機整數 是引入模塊時指定 別名
  2. 對 = True,就是一個普通的 變量賦值
  3. 輸入 = input整數 = int,要理解這個用法,你需要有面向對象的認識:在 Python 中 函數也是一種對象 ,可以像普通值一樣賦值給變量。賦值之後,這個變量就相當於這個函數,可以通過括號語法來調用。

如果你還嫌不夠徹底,有人給了更兇殘的解決方案:一個叫做“ 周蟒 ”的項目,相當於把 Python 翻譯成了中文。(不過項目很久沒更新了,我在 py3 上安裝未成功)

在 py2 上通過 pip 即可安裝:



pip install zhpy

之後就能通過 zhpy 進入交互環境,或者直接 zhpy test.py 執行你的中文 py 代碼文件。

寫出來代碼是醬嬸兒的:



從 random 導入 randint 作爲 隨機整數

定義 是否相等(參數1, 參數2):
   如果 參數1 < 參數2:
       打印 '太小了'
       返回 假
   如果 參數1 > 參數2:
       打印 '太大了'
       返回 假
   如果 參數1 == 參數2:
       打印 '猜中了!'
       返回 真

答案 = 隨機整數(1, 100)

打印 '猜猜我想的是幾?'
是否猜中 = 假
當 是否猜中 == 假:
   猜測值 = 整數(輸入())
   是否猜中 = 是否相等(猜測值, 答案)

幾乎幫你把所有基礎語法都轉成了中文,甚至還可以用 emoji 表情……之前有同學對猜數字代碼的理解還有疑惑,尤其是 bingo 這個變量,那如果寫成這樣,是不是更容易理解一點呢?

除此之外,還有不少中文編程語言,其中最出名的莫過於“ 易語言 ”。雖然科班出身的程序員都不太看得上這種語言,但不得不承認,它在我國的草根黑客圈中有着廣泛的羣衆基礎。

另外,我還發現了一個有趣語言,叫 PerlYuYan 。看名字就知道是基於 Perl,但讓你想不到的是,它將 Perl 翻譯成了 文言文 ……比如官方示例裏的代碼:



用警兮用嚴。

印道
一至一
哉兮

印編曰雜申
      雜申矣
又纖曰龍鼠矣
  又曰
    一矣

亂曰
國無人莫我知兮    又何懷乎故都
既莫足與為美政兮  吾將從彭咸之所居

資曰
印重一至一兮
重起一至十合始印終



是不是感到不明覺厲!但實際上也就是字面上的翻譯。比如 用警兮用嚴。,其實就是use warnings; use strict;。那麼曰龍鼠矣,龍鼠又是什麼鬼?根據下圖自行體會吧(歡迎評論區搶答):

看了這些中文寫出的代碼,你現在有啥想法?覺得太酷炫了,還是視作異端?

最後還是說句,儘管可以用中文寫代碼,儘管有大量的中文資料、教程、文檔,就算你自己也接受使用中文來學習編程甚至寫代碼,我還是 強烈建議你儘量提升下英文 ,逼着自己去 看報錯、看原版文檔、看 StackOverflow 上的問答 ,哪怕一開始你用翻譯工具慢慢查。英語能力雖然對你編程起步的下限影響不大,但對你編程發展的上限至關重要。和學編程一樣,這是個長期的過程,堅持下去總會有提升的。

之前我們還做過一個整理編程英語高頻詞彙的小項目,有需要的可以拿去參考:《我們用程序整理出了一份Python英語高頻詞彙表,拿走不謝!》,希望對你有所幫助。

════

其他文章及回答:

如何自學Python | 新手引導 | 精選Python問答 | Python單詞表 | 人工智能 | 爬蟲 | 我用Python | requests | 計算機視覺 | 字符播放器 | 一圖學Python

歡迎搜索及關注公衆號: Crossin的編程教室

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章