当前位置: 首页 > news >正文

谁说不能用中文写代码?

入门教程、案例源码、学习资料、读者群

请访问: 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个概念:

  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 翻译成了文言文……比如官方示例里的代码:

用警兮用嚴。印道
一至一
哉兮印編曰雜申雜申矣
又纖曰龍鼠矣又曰一矣亂曰
國無人莫我知兮    又何懷乎故都
既莫足與為美政兮  吾將從彭咸之所居資曰
印重一至一兮
重起一至十合始印終

8398a7dbf985a0eac66129a400b59854.jpeg

是不是感到不明觉厉!但实际上也就是字面上的翻译。比如 用警兮用嚴。,其实就是use warnings; use strict;。那么曰龍鼠矣,龙鼠又是什么鬼😂?根据下图自行体会吧(欢迎评论区抢答):

63a2623bb8c059628d80c911d04e7942.jpeg

看了这些中文写出的代码,你现在有啥想法?欢迎评论区发表看法。

最后还是说句,尽管可以用中文写代码,尽管有大量的中文资料、教程、文档,就算你自己也接受使用中文来学习编程甚至写代码,我还是强烈建议你尽量提升下英文,逼着自己去看报错、看原版文档、看 StackOverflow 上的问答,哪怕一开始你用翻译工具慢慢查。英语能力虽然对你编程起步的下限影响不大,但对你编程发展的上限至关重要。和学编程一样,这是个长期的过程,坚持下去总会有提升的。

感谢转发点赞的各位~


_往期文章推荐_

我也曾经因安装库而抓狂,直到我遇到了anaconda


如需了解付费精品课程教学答疑服务

请在Crossin的编程教室内回复: 666

45a2eb9ca7ae31c67f0bd4b1b47bfd54.jpeg

相关文章:

谁说不能用中文写代码?

入门教程、案例源码、学习资料、读者群 请访问&#xff1a; python666.cn 大家好&#xff0c;欢迎来到 Crossin的编程教室 &#xff01; 现代计算机和编程的起源和推动力量主要源自美国&#xff0c;再加上26个字母很便于表示&#xff08;算上大小写&#xff0c;6位bit就够了&am…...

Java阶段二Day07

Java阶段二Day07 文章目录 Java阶段二Day07V17UserControllerDispatcherServletControllerRequestMapping V18DispatcherServletHandleMapping V19BirdBootApplication 线程池线程的执行过程线程池API 数据库数据库的基本概念数据库管理系统中常见的概念 SQL分类DDL语言-数据定…...

React Native iOS打包详细步骤

一、在自己项目的iOS文件夹下新建一个文件夹取名bundle 二、将打包命令写到项目package.json文件里&#xff0c;终端执行 npm run bundle-ios 先添加如下&#xff08;注意&#xff1a;这里写的路径"./ios/bundle"就是上面bundle创建的文件夹&#xff09;&#xff1a…...

I/O复用函数,poll和epoll的用法与select、poll、epoll的区别

1.poll的接口介绍 poll系统调用和select类似&#xff0c;也是在指定时间内轮询一定数量的文件描述符&#xff0c;已测试其中是否有就绪者。poll的原型如下&#xff1a; # include <poll.h> int poll(struct pollfd*fds,nfds_t nfds,int timeout); poll系统调用成功返回就…...

大数据周会-本周学习内容总结011

开会时间&#xff1a;2023.04.23 15:00 线下会议 目录 01【spark】 02【es同步mysql】 03【下周任务】 01【spark】 尚硅谷大数据技术Spark教程-笔记01【Spark&#xff08;概述、快速上手、运行环境、运行架构&#xff09;】尚硅谷大数据技术Spark教程-笔记02【SparkCore&am…...

常见的NoSQL数据库介绍

目录 一、NoSQL概述 二、为什么用NoSQL 三、NoSQL特点 四、NoSQL的分类 五、NoSQL适用场景 六、NoSQL不适用场景 一、NoSQL概述 NoSQL(NoSQL Not Only SQL )&#xff0c;意即“不仅仅是SQL”&#xff0c;泛指非关系型的数据库。 NoSQL 不依赖业务逻辑方式存储&#xf…...

记录安装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可以在构建状态机时使用多线程&#xff0c;从而大大加快构建速度。 安装Pyahocorasick Pyahocorasick可以使用pip命令进行安…...

基于Java+SpringBoot+vue+element驾校管理系统设计和实现

基于JavaSpringBootvueelement驾校管理系统设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 …...

Unity中值类型和引用类型及使用时的注意事项

什么是值类型&#xff0c;什么是引用类型&#xff0c;Unity中值类型有哪些&#xff0c;引用类型有哪些&#xff0c;使用时需要注意些什么&#xff1f; 一、值类型和引用类型的概念 A. 值类型 值类型是指变量直接存储其值的数据类型&#xff0c;变量的值被保存在栈中&#xff0…...

PM510V16 3BSE008358R1嵌入式卡件用于励磁系统多用于工业发电

​ PM510V16 3BSE008358R1嵌入式卡件用于励磁系统多用于工业发电 物联网与工业自动化控制系统的联系 当今&#xff0c;物联网可谓是在各大媒体出镜率最高、而且与“智能”联系密切的名词之一。从“管理、控制、智能”的角度来看&#xff0c;其实物联网与工业自动化是一脉相承的…...

AI 这是要杀疯啦!

ChatGPT 是基于 GPT 系列大模型开发出来的一个对话场景的 Demo&#xff0c;它已经让我们见识到了大模型的威力。 但有些开发者的胃口不满足于此&#xff0c;已经开始尝试“突破” AI 的边界了&#xff0c;本文推荐 5 个人工智能的开源项目。其中前两个项目&#xff0c;让人细思…...

【精品示例】超实用Python爬虫入门实例——做一个优质舔狗

引言 最近发现了一个有意思的网站&#xff0c;里面充斥了大量的舔狗箴言。作为一个爬虫发烧友怎么能错过此等机会&#xff0c;咱们直接就是上才艺&#xff01; 类的编写 本次爬虫使用了多协程的方案进行&#xff0c;保证了爬虫的速度。在这里我们新建一个爬虫类&#xff0c;…...

TCP流量控制与拥塞控制

什么是流量控制 一条TCP连接的每一侧主机都为该连接设置了接收缓存。当该TCP连接接收到正确的、有序的报文段&#xff0c;就会将数据放入接收缓存。相关联的应用会从缓存中读取数据。 如果发送者发送数据过快、过多&#xff0c;而接收方的应用程序从缓冲区读取的速度较慢&…...

Java_异常

Java_异常 1.什么是异常 ​ 生活中的异常&#xff1a;感冒发烧、电脑蓝屏、手机死机等。 ​ 程序中的异常&#xff1a;磁盘空间不足、网络连接中断、被加载的资源不存在等。 ​ 程序异常解决办法&#xff1a;针对程序中非正常情况&#xff0c;Java语言引入了异常&#xff0…...

自动化工具 接口自动化测试引擎

一、前言&#xff1a; 1、解决痛点&#xff1a;接口自动化测试用例需要人去开发、去维护。 2、实现第一性原理&#xff1a;根据定义的测试策略自动生成接口测试用例。 二、引擎优势&#xff1a; 1、提升人效&#xff1a;降低传统方式中接口测试开发与维护的工作量。 2、覆盖更…...

十三、详解Kubernetes的存储管理器

Kubernetes是一个开源的容器编排系统,它可以自动化地管理容器的部署、扩展和运维。在Kubernetes中,存储管理器是一个重要的组件,它负责管理容器的存储资源,包括持久化存储和临时存储。 Kubernetes的存储管理器主要有以下几个功能: 提供持久化存储:Kubernetes的存储管理器…...

java版 工程管理系统源码之提高工程项目管理软件的效率

高效的工程项目管理软件不仅能够提高效率还应可以帮你节省成本提升利润 在工程行业中&#xff0c;管理不畅以及不良的项目执行&#xff0c;往往会导致项目延期、成本上升、回款拖后&#xff0c;最终导致项目整体盈利下降。企企管理云业财一体化的项目管理系统&#xff0c;确保…...

VMware 安装 MS-DOS7.10 并配置网络

VMware 安装 MS-DOS7.10 并设置软盘共享 1. 新建虚拟机2. 开机2.1. 这几个地方都可以开机2.2. 手速慢&#xff0c;进不了BIOS的朋友可以点这里 安装 MS-DOS7.101. 先选 1 安装 MS-DOS7.10 回车2. 欢迎页面&#xff0c;客气一下而已&#xff0c;继续 Next3. 继续王婆卖瓜4. 这步…...

嵌入式51单片机04-矩阵按键系列

文章目录 矩阵按键一、矩阵按键基础知识二、矩阵按键系列代码1. 矩阵按键操作&#xff08;显示数字&#xff09;&#xff08;1&#xff09;仿真电路图&#xff08;2&#xff09;源代码&#xff08;3&#xff09;实验结果 2. 矩阵按键操作&#xff08;控制数码管&#xff09;&am…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...