现代计算机和编程的起源和推动力量主要源自美国,再加上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个概念:

from random import randint as 随机整数 是引入模块时指定 别名

对 = True,就是一个普通的 变量赋值

输入 = 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英语高频词汇表,拿走不谢!》,希望对你有所帮助。

════

其他文章及回答:

欢迎搜索及关注公众号: Crossin的编程教室

python中可以用中文作为变量-python里能不能用中文相关推荐

  1. python变量必须以字母和下划线_【转载】关于python中带下划线的变量和函数的意义...

    Python 的代码风格由 PEP 8 描述.这个文档描述了 Python 编程风格的方方面面.在遵守这个文档的条件下,不同程序员编写的 Python 代码可以保持最大程度的相似风格.这样就易于阅读, ...

  2. linux系统python截图不显示中文_Linux运维知识之解决linux系统下python中的matplotlib模块内的pyplot输出图片不能显示中文的问题...

    本文主要向大家介绍了Linux运维知识之解决linux系统下python中的matplotlib模块内的pyplot输出图片不能显示中文的问题,通过具体的内容向大家展现,希望对大家学习Linux运维知 ...

  3. (1)今有2018年1月1日—15日的猪肉价格和牛肉价格的数据,它们存在于一个Excel表格中,如下表所示。将其读入Python中并用一个数据框变量df保存......

    目录 (1)今有2018年1月1日-15日的猪肉价格和牛肉价格的数据,它们存在于一个Excel表格中,如下表所示.将其读入Python中并用一个数据框变量df保存. (2)分别绘制1月1日-10日的猪 ...

  4. python中的命名空间_深入理解Python中的命名空间和范围

    Python中的命名空间和范围 在Python中,每个包.模块.类.函数和方法函数都拥有一个"名称空间",其中解析了变量名称.下面本篇文章就来带大家认识一下Python中的命名空间 ...

  5. python中的递归思想_〖Python〗-- 递归、面向对象初识及编程思想

    [递归.面向对象初识及编程思想] 一.递归 1.定义: 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. (1)递归就是在过程或函数里调用自身: (2)在使用递归策 ...

  6. python统计元音字母个数_计算Python中的元音(Counting vowels in python)

    计算Python中的元音(Counting vowels in python) def main(): print(count) def countVowels(string): vowel=(&qu ...

  7. python中输入字符串_简单讲解Python中的字符串与字符串的输入输出

    简单讲解Python中的字符串与字符串的输入输出 发布于 2016-03-26 14:35:42 | 110 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一种面向 ...

  8. python的继承用法_【后端开发】python中继承有什么用法?python继承的用法详解

    本篇文章给大家带来的内容是关于python中继承有什么用法?python继承的用法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 面向对象三大特征 1.封装:根据职责将属性和方法 ...

  9. python中获取文件大小_如何在Python中获取文件大小

    python中获取文件大小 We can get file size in Python using the os module. 我们可以使用os模块在Python中获取文件大小. Python中的 ...

最新文章

  1. zabbix4.0构建实录
  2. DWR小结DWRUtil篇
  3. oracle 数据精度转换,oracle数据值型数据改精度测试
  4. 交叉线和直连线的线序,做法和使用场合
  5. 【CyberSecurityLearning 附】DNS复习演示所有实验
  6. 文档扫描OCR识别-1(python)
  7. 中国首富或将易主,5500个富豪即将诞生!
  8. C#对window 硬件类操作,ManagementObjectSearcher
  9. C++容器遍历时删除元素
  10. JavaScript 计时器
  11. 机器学习必备的数学基础有哪些?
  12. mongodb ssl java_MongoDB自签名SSL连接:SSL对等证书验证失败
  13. UE4之A点绕B点旋转
  14. nodejs redis 发布订阅_Redis 发布订阅,小功能大用处,真没那么废材
  15. 面试阿里,你必须知道的背景知识——双非上岸阿里巴巴系列
  16. 快速学习法:一年搞定MIT计算机课程
  17. 如何评价一个开源项目(一)--活跃度
  18. 斯坦福图机器学习CS224W笔记自用:How Expressive are Graph Neural Networks?
  19. java重复代码重构_重构重复代码
  20. 用python画价格—需求曲线图

热门文章

  1. 一些开源搜索引擎实现——倒排使用原始文件,列存储Hbase,KV store如levelDB、mongoDB、redis,以及SQL的,如sqlite或者xxSQL...
  2. ES批量索引写入时的ID自动生成算法
  3. 【Android测试】【第十四节】Appium——简述
  4. typeof做类型判断时容易犯下的错
  5. Netlog 的数据库及 LAMP 架构
  6. Linux防火墙iptables学习
  7. 修改Mysql的root密码方法归纳
  8. 深入了解Brackets编辑器 [好东西啊]
  9. npm获取配置,设置代理
  10. in_array 判断问题的疑惑解决。