谁说不能用中文写代码?
入门教程、案例源码、学习资料、读者群
请访问: python666.cn
大家好,欢迎来到 Crossin的编程教室 !
现代计算机和编程的起源和推动力量主要源自美国,再加上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 Falseif 参数1 > 参数2:print('太大了')return Falseif 参数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 上的问答,哪怕一开始你用翻译工具慢慢查。英语能力虽然对你编程起步的下限影响不大,但对你编程发展的上限至关重要。和学编程一样,这是个长期的过程,坚持下去总会有提升的。
感谢转发和点赞的各位~
_往期文章推荐_
我也曾经因安装库而抓狂,直到我遇到了anaconda
如需了解付费精品课程及教学答疑服务
请在Crossin的编程教室内回复: 666

相关文章:
谁说不能用中文写代码?
入门教程、案例源码、学习资料、读者群 请访问: python666.cn 大家好,欢迎来到 Crossin的编程教室 ! 现代计算机和编程的起源和推动力量主要源自美国,再加上26个字母很便于表示(算上大小写,6位bit就够了&am…...
Java阶段二Day07
Java阶段二Day07 文章目录 Java阶段二Day07V17UserControllerDispatcherServletControllerRequestMapping V18DispatcherServletHandleMapping V19BirdBootApplication 线程池线程的执行过程线程池API 数据库数据库的基本概念数据库管理系统中常见的概念 SQL分类DDL语言-数据定…...
React Native iOS打包详细步骤
一、在自己项目的iOS文件夹下新建一个文件夹取名bundle 二、将打包命令写到项目package.json文件里,终端执行 npm run bundle-ios 先添加如下(注意:这里写的路径"./ios/bundle"就是上面bundle创建的文件夹):…...
I/O复用函数,poll和epoll的用法与select、poll、epoll的区别
1.poll的接口介绍 poll系统调用和select类似,也是在指定时间内轮询一定数量的文件描述符,已测试其中是否有就绪者。poll的原型如下: # include <poll.h> int poll(struct pollfd*fds,nfds_t nfds,int timeout); poll系统调用成功返回就…...
大数据周会-本周学习内容总结011
开会时间:2023.04.23 15:00 线下会议 目录 01【spark】 02【es同步mysql】 03【下周任务】 01【spark】 尚硅谷大数据技术Spark教程-笔记01【Spark(概述、快速上手、运行环境、运行架构)】尚硅谷大数据技术Spark教程-笔记02【SparkCore&am…...
常见的NoSQL数据库介绍
目录 一、NoSQL概述 二、为什么用NoSQL 三、NoSQL特点 四、NoSQL的分类 五、NoSQL适用场景 六、NoSQL不适用场景 一、NoSQL概述 NoSQL(NoSQL Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库。 NoSQL 不依赖业务逻辑方式存储…...
记录安装Nodejs和HBuilderX搭建、部署微信小程序开发环境(一)
文章目录 1 前言2 注册小程序账号3 安装微信开发者工具4 安装Nodejs和HBuilderX4.1 windows用户安装Nodejs4.2 macos/linux用户安装Nodejs4.3 安装HBuilder X 5 创建项目5.1 新建一个项目5.2 进行基本配置 6 HBuilderX同步微信开发者工具6.1 打开服务端口6.2 调用微信开发者工具…...
(一)pyahocorasick和marisa_trie,字符串快速查找的python包,自然语言处理,命名实体识别可用的高效包...
Pyahocorasick Pyahocorasick是一个基于AC自动机算法的字符串匹配工具。它可以用于快速查找多个短字符串在一个长字符串中的所有出现位置。Pyahocorasick可以在构建状态机时使用多线程,从而大大加快构建速度。 安装Pyahocorasick Pyahocorasick可以使用pip命令进行安…...
基于Java+SpringBoot+vue+element驾校管理系统设计和实现
基于JavaSpringBootvueelement驾校管理系统设计和实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 …...
Unity中值类型和引用类型及使用时的注意事项
什么是值类型,什么是引用类型,Unity中值类型有哪些,引用类型有哪些,使用时需要注意些什么? 一、值类型和引用类型的概念 A. 值类型 值类型是指变量直接存储其值的数据类型,变量的值被保存在栈中࿰…...
PM510V16 3BSE008358R1嵌入式卡件用于励磁系统多用于工业发电
PM510V16 3BSE008358R1嵌入式卡件用于励磁系统多用于工业发电 物联网与工业自动化控制系统的联系 当今,物联网可谓是在各大媒体出镜率最高、而且与“智能”联系密切的名词之一。从“管理、控制、智能”的角度来看,其实物联网与工业自动化是一脉相承的…...
AI 这是要杀疯啦!
ChatGPT 是基于 GPT 系列大模型开发出来的一个对话场景的 Demo,它已经让我们见识到了大模型的威力。 但有些开发者的胃口不满足于此,已经开始尝试“突破” AI 的边界了,本文推荐 5 个人工智能的开源项目。其中前两个项目,让人细思…...
【精品示例】超实用Python爬虫入门实例——做一个优质舔狗
引言 最近发现了一个有意思的网站,里面充斥了大量的舔狗箴言。作为一个爬虫发烧友怎么能错过此等机会,咱们直接就是上才艺! 类的编写 本次爬虫使用了多协程的方案进行,保证了爬虫的速度。在这里我们新建一个爬虫类,…...
TCP流量控制与拥塞控制
什么是流量控制 一条TCP连接的每一侧主机都为该连接设置了接收缓存。当该TCP连接接收到正确的、有序的报文段,就会将数据放入接收缓存。相关联的应用会从缓存中读取数据。 如果发送者发送数据过快、过多,而接收方的应用程序从缓冲区读取的速度较慢&…...
Java_异常
Java_异常 1.什么是异常 生活中的异常:感冒发烧、电脑蓝屏、手机死机等。 程序中的异常:磁盘空间不足、网络连接中断、被加载的资源不存在等。 程序异常解决办法:针对程序中非正常情况,Java语言引入了异常࿰…...
自动化工具 接口自动化测试引擎
一、前言: 1、解决痛点:接口自动化测试用例需要人去开发、去维护。 2、实现第一性原理:根据定义的测试策略自动生成接口测试用例。 二、引擎优势: 1、提升人效:降低传统方式中接口测试开发与维护的工作量。 2、覆盖更…...
十三、详解Kubernetes的存储管理器
Kubernetes是一个开源的容器编排系统,它可以自动化地管理容器的部署、扩展和运维。在Kubernetes中,存储管理器是一个重要的组件,它负责管理容器的存储资源,包括持久化存储和临时存储。 Kubernetes的存储管理器主要有以下几个功能: 提供持久化存储:Kubernetes的存储管理器…...
java版 工程管理系统源码之提高工程项目管理软件的效率
高效的工程项目管理软件不仅能够提高效率还应可以帮你节省成本提升利润 在工程行业中,管理不畅以及不良的项目执行,往往会导致项目延期、成本上升、回款拖后,最终导致项目整体盈利下降。企企管理云业财一体化的项目管理系统,确保…...
VMware 安装 MS-DOS7.10 并配置网络
VMware 安装 MS-DOS7.10 并设置软盘共享 1. 新建虚拟机2. 开机2.1. 这几个地方都可以开机2.2. 手速慢,进不了BIOS的朋友可以点这里 安装 MS-DOS7.101. 先选 1 安装 MS-DOS7.10 回车2. 欢迎页面,客气一下而已,继续 Next3. 继续王婆卖瓜4. 这步…...
嵌入式51单片机04-矩阵按键系列
文章目录 矩阵按键一、矩阵按键基础知识二、矩阵按键系列代码1. 矩阵按键操作(显示数字)(1)仿真电路图(2)源代码(3)实验结果 2. 矩阵按键操作(控制数码管)&am…...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...
CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!
本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...
