I Love Python. I Learn Python. I Teach Python. I Am a Python.

2014/07/29

Coding in Chinese with Python 3

Have you ever tried to write a program in non-English which is your own native language, like Chinese?

In addition to 30 keywords or so, Python-3 allows you to use non-English characters as identifiers. That means you can write a program almost in your own native language, which is usually the one you feel the most fluent to speak and to THINK.

It is an interesting option for me, I enjoy it, and love it. I suggest you to give it a try.

There are several discussion about this idea as follows:


A bunch of examples are here.




有沒有試過用 中文 寫程式?

Python-3 除了 約 30個 關鍵字(keywords) (列在文後當參考)不可用中文之外,
其他部分允許程式員使用中文。
(其實任何使用 Unicode 編碼的語言皆可,
我偶爾也會用一下希臘字母,或日文假名。)

中文 是我最流利(fluent)的語言,
也是我的華人朋友們(包含大朋友、小朋友以及老朋友)最易懂的語言,
用中文來與這些朋友們溝通(包括我自己的自言自語),
是最有效率、最不易誤解的語言。

誠意推薦你也來試試看。
會有意想不到的收穫喔!


例子如下:







# myNumber.py, 我的數字遊戲.py,
# by Chris Roffey, 翻譯:呂仁園。
# 本遊戲使用自製的函數

import random

# 想一個數字
電腦數字= random.randint(1, 100)

# 創造一個函數,相同嗎()
def 相同嗎(目標, 數字):
    if 目標 == 數字:
        結果= "贏"
    elif 目標 > 數字:
        結果= "低"
    else:
        結果= "高"
    return 結果

# 開始遊戲
print("你好。\n我已經想好一個數字,介於1和100之間。")

# 取得使用者的猜測,並轉成整數。
猜測= int(input("你能猜到它嗎?"))

# 運用我們的函數
高或低= 相同嗎(電腦數字, 猜測)

# 跑遊戲,直到使用者猜對。
while 高或低 != "贏":
    if 高或低 == "低":
        猜測= int(input("抱歉,你猜得太低了,再一次吧!"))
    else:
        猜測= int(input("抱歉,你猜得太高了,再一次吧! "))
    高或低 = 相同嗎(電腦數字, 猜測)

# 結束遊戲
print("正確!\n很棒!\n\n\n按 Enter 來離開。")
input()

# myNumber.py, 
# by Chris Roffey
# This game uses a home made function

import random

# Think of a number
computer_number = random.randint(1, 100)

# Create the function is_same()
def is_same(target, number):
    if target == number:
        result="Win"
    elif target > number:
        result="Low"
    else:
        result="High"
    return result

# Start the game
print("Hello.\nI have thought of a number between 1 and 100.")

# Collect the user’s guess as an integer
guess = int(input("Can you guess it? "))

# Use our function
higher_or_lower = is_same(computer_number, guess)

# Run the game until the user is correct
while higher_or_lower != "Win":
    if higher_or_lower == "Low":
        guess = int(input("Sorry, you are too low. Try again. "))
    else:
        guess = int(input("Sorry, you are too high. Try again. "))
    higher_or_lower = is_same(computer_number, guess)

# End the game
print("Correct!\nWell Done\n\n\nPress Enter to exit.")
input()

#
# myEtchASketch.py, 我的蝕刻繪圖板.py 
# a application from Coding Club: Python Basics
# by Chris Roffey, 翻譯:呂仁園。
#

from tkinter import *

##### 設定變數:

布高= 400
布寬= 600
布色= "black"
點x= 布寬/2
點y= 布高
點色= "green"
點寬= 5
點長= 5

##### 函數:
#
# 玩家控制
#
def 點移上(self):
    global 點y
    布.create_line(點x, 點y, 點x, (點y-點長), 
        width= 點寬, 
        fill= 點色)
    點y= 點y - 點長

def 點移下(self):
    global 點y
    布.create_line(點x, 點y, 點x, 點y+點長, 
        width= 點寬, 
        fill= 點色)
    點y= 點y + 點長
    
def 點移右(self):
    global 點x
    布.create_line(點x, 點y, 點x + 點長, 點y, 
        width= 點寬, 
        fill= 點色)
    點x= 點x + 點長
    
def 點移左(self):
    global 點x
    布.create_line(點x, 點y, 點x - 點長, 點y, 
        width= 點寬, 
        fill= 點色)
    點x= 點x - 點長

def 清除全部(self):
    布.delete(ALL)
    
##### 主程式:

窗= Tk()
窗.title("我的蝕刻繪圖板")
布= Canvas(
            bg= 布色, 
            height= 布高, 
            width= 布寬, 
            highlightthickness= 0)
布.pack()

#
# 綁定(連結) 按鍵 與 玩家控制函數
#
窗.bind("<Up>",    點移上)
窗.bind("<Down>",  點移下)
窗.bind("<Left>",  點移左)
窗.bind("<Right>", 點移右)
窗.bind("u",       清除全部)

#
# 進入視窗應用程式的主迴圈
#
窗.mainloop()


#
# myEtchASketch.py 
# a application from Coding Club: Python Basics
# by Chris Roffey
#

from tkinter import *

##### Set variables:

canvas_height = 400
canvas_width = 600
canvas_colour = "black"
p1_x = canvas_width/2
p1_y = canvas_height
p1_colour = "green"
line_width = 5
line_length = 5

##### Functions:
#
# player controls
#
def p1_move_N(self):
    global p1_y
    canvas.create_line(p1_x, p1_y, p1_x, (p1_y-line_length), 
        width=line_width, 
        fill=p1_colour)
    p1_y = p1_y - line_length

def p1_move_S(self):
    global p1_y
    canvas.create_line(p1_x, p1_y, p1_x, p1_y+line_length, 
        width=line_width, 
        fill=p1_colour)
    p1_y = p1_y + line_length
    
def p1_move_E(self):
    global p1_x
    canvas.create_line(p1_x, p1_y, p1_x + line_length, p1_y, 
        width=line_width, 
        fill=p1_colour)
    p1_x = p1_x + line_length
    
def p1_move_W(self):
    global p1_x
    canvas.create_line(p1_x, p1_y, p1_x - line_length, p1_y, 
        width=line_width, 
        fill=p1_colour)
    p1_x = p1_x - line_length

def erase_all(self):
    canvas.delete(ALL)
    
##### main:

window = Tk()
window.title("MyEtchASketch")
canvas = Canvas(
            bg=canvas_colour, 
            height=canvas_height, 
            width=canvas_width, 
            highlightthickness=0)
canvas.pack()

#
# bind movement to key presses
#
window.bind("<Up>", p1_move_N)
window.bind("<Down>", p1_move_S)
window.bind("<Left>", p1_move_W)
window.bind("<Right>", p1_move_E)
window.bind("u", erase_all)

#
# entering mainloop of the window application
#
window.mainloop()





#
# rySketch.py, 繪圖板.py
# 呂仁園。
#

import tkinter

def 在滑鼠座標處畫圓(e):
    x, y= e.x, e.y
    布.create_oval( x-5, y-5, x+5, y+5, fill= 'red')

def 清除畫布(e):
    布.delete('all')

布= tkinter.Canvas()
布.pack()

布.bind('<1>',           在滑鼠座標處畫圓)
布.bind('<3>',           清除畫布)
布.bind('<B1-Motion>',   在滑鼠座標處畫圓)

布.mainloop()

沒有留言:

張貼留言