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

如何在 Python 3 中制作一个计算器程序

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

简介

Python 编程语言是处理数字和求解数学表达式的强大工具。这种特性可以用来制作有用的程序。

本教程介绍了如何在 Python 3 中制作一个命令行计算器程序的学习练习。这个计算器只能执行基本的算术运算,但本指南的最后一步可以作为改进代码以创建更强大计算器的起点。

我们将使用数学运算符、变量、条件语句、函数和处理用户输入来制作我们的计算器。

先决条件

在进行本教程之前,您应该在本地计算机上安装了 Python 3,并已在计算机上设置好编程环境。如果您需要安装 Python 或设置环境,可以按照适用于您操作系统的指南进行操作。

步骤 1 —— 提示用户输入

当人类提供方程式供计算机求解时,计算器的效果最佳。您将从用户输入数字的地方开始编写程序。

首先,您需要为程序创建一个文件。在本例中,我们将使用文本编辑器 nano 并将文件命名为 calculator.py

nano calculator.py

接下来,您将向该文件添加内容以运行程序。对于这个程序,您将要求用户输入两个数字,因此指示程序提示用户输入两个数字。您可以使用 Python 的内置 input() 函数从键盘接受用户生成的输入。在 input() 函数的括号内,您可以传递一个字符串以提示用户,然后将用户的输入赋给一个变量。请记住,在请求输入时,在您的字符串末尾包含一个空格可能会有所帮助,这样用户的输入和提示字符串之间就会有一个空格:

number_1 = input('输入第一个数字:')
number_2 = input('输入第二个数字:')

在写完两行后,您应该在运行程序之前保存程序。如果您使用的是 nano,您可以按 CTRL + X 然后按 YENTER 退出。

使用以下命令运行您的程序:

python calculator.py

这将开始您的程序的提示,您可以在终端窗口中进行响应:

输入第一个数字:5
输入第二个数字:7

如果您多次运行此程序并改变输入,您会注意到您可以在提示时输入任何内容,包括单词、符号、空格或回车键。这是因为 input() 将数据作为字符串接收,并不知道您要寻找数字。

您将希望在此程序中使用数字有两个原因:

  1. 使程序能够执行数学计算
  2. 验证用户的输入是否为数字字符串

根据计算器的需求,您可能希望将从 input() 函数得到的字符串转换为整数或浮点数。对于本教程,整数适合我们的目的,因此将 input() 函数包装在 int() 函数中以将输入转换为整数数据类型:

number_1 = int(input('输入第一个数字:'))
number_2 = int(input('输入第二个数字:'))

现在,如果您运行程序并输入两个整数,您将不会遇到错误:

输入第一个数字:23
输入第二个数字:674

但是,如果您输入字母、符号或任何其他非整数,您将遇到以下错误:

输入第一个数字:sammy
Traceback (most recent call last):File "testing.py", line 1, in <module>number_1 = int(input('输入第一个数字:'))
ValueError: invalid literal for int() with base 10: 'sammy'

到目前为止,您已经设置了两个变量以存储整数数据类型的用户输入。您还可以尝试将输入转换为浮点数。

步骤 2 —— 添加运算符

在程序完成之前,您将添加共计四个数学运算符:+ 用于加法、- 用于减法、* 用于乘法和 / 用于除法。

在构建程序时,您将希望确保每个部分都能正常运行,因此从设置加法开始。您将在一个打印函数中添加两个数字,以便使用计算器的人能够看到内容:

number_1 = int(input('输入第一个数字:'))
number_2 = int(input('输入第二个数字:'))print(number_1 + number_2)

运行程序并在提示时输入两个数字,以确保它按预期工作:

输入第一个数字:8
输入第二个数字:3
11

输出显示程序正在正确运行。现在,为用户提供更多上下文以便在程序运行时得到充分的信息。为此,使用字符串格式化来帮助正确格式化文本并提供反馈。您希望用户收到有关他们输入的数字和正在使用的运算符以及产生的结果的确认:

number_1 = int(input('输入第一个数字:'))
number_2 = int(input('输入第二个数字:'))print('{} + {} = '.format(number_1, number_2))
print(number_1 + number_2)

现在,当您运行程序时,将会有额外的输出,让用户确认程序正在执行的数学表达式:

输入第一个数字:90
输入第二个数字:717
90 + 717 = 
807

使用字符串格式化为用户提供了更多的反馈。

此时,您可以使用与加法相同的格式向程序添加其余的运算符:

# 加法
print('{} + {} = '.format(number_1, number_2))
print(number_1 + number_2)# 减法
print('{} - {} = '.format(number_1, number_2))
print(number_1 - number_2)# 乘法
print('{} * {} = '.format(number_1, number_2))
print(number_1 * number_2)# 除法
print('{} / {} = '.format(number_1, number_2))
print(number_1 / number_2)

在上面的程序中,你正在将剩余的运算符 -*/ 添加到程序中。如果此时运行程序,程序将执行上述所有操作。但是,你希望限制程序一次只执行一个操作。为此,你将使用条件语句。

步骤 3 —— 添加条件语句

calculator.py 程序的目标是让用户能够在不同的运算符中进行选择。首先在程序顶部添加一些信息以及一个选择,以便用户知道该怎么做。

通过使用三重引号在几行上写一个字符串:

'''
请输入您想要完成的数学运算:
+ 代表加法
- 代表减法
* 代表乘法
/ 代表除法
'''

该程序使用每个运算符符号供用户进行选择,因此如果用户想要执行除法,他们将输入 /。你可以选择任何你想要的符号,比如 1 代表加法b 代表减法

因为你要求用户输入,所以你需要使用 input() 函数。将字符串放入 input() 函数中,并将该输入的值传递给一个变量,你将其命名为 operation

operation = input('''
请输入您想要完成的数学运算:
+ 代表加法
- 代表减法
* 代表乘法
/ 代表除法
''')number_1 = int(input('输入第一个数字:'))
number_2 = int(input('输入第二个数字:'))print('{} + {} = '.format(number_1, number_2))
print(number_1 + number_2)print('{} - {} = '.format(number_1, number_2))
print(number_1 - number_2)print('{} * {} = '.format(number_1, number_2))
print(number_1 * number_2)print('{} / {} = '.format(number_1, number_2))
print(number_1 / number_2)

此时,如果运行程序,无论在第一个提示处输入什么,都不会发生任何事情。为了纠正这一点,将一些条件语句添加到程序中。由于你已经构建了程序的结构,if 语句将执行加法,将有 3 个 elif 语句用于其他每个运算符,else 语句将用于处理用户未输入运算符符号的错误:

operation = input('''
请输入您想要完成的数学运算:
+ 代表加法
- 代表减法
* 代表乘法
/ 代表除法
''')number_1 = int(input('输入第一个数字:'))
number_2 = int(input('输入第二个数字:'))if operation == '+':print('{} + {} = '.format(number_1, number_2))print(number_1 + number_2)elif operation == '-':print('{} - {} = '.format(number_1, number_2))print(number_1 - number_2)elif operation == '*':print('{} * {} = '.format(number_1, number_2))print(number_1 * number_2)elif operation == '/':print('{} / {} = '.format(number_1, number_2))print(number_1 / number_2)else:print('您未输入有效的运算符,请重新运行程序。')

通过这个程序,首先提示用户输入一个运算符。例如,假设用户输入 * 来进行乘法。接下来,程序要求输入两个数字,用户输入 5840。此时,程序显示执行的等式和乘积:

请输入您想要完成的数学运算:
+ 代表加法
- 代表减法
* 代表乘法
/ 代表除法
* 
请输入第一个数字:58
请输入第二个数字:40
58 * 40 = 
2320

由于你构建了程序的结构,如果用户在第一个提示处输入 %,他们直到输入数字后才会收到再次尝试的反馈。你可能需要考虑处理各种情况的其他可能选项。

此时,你已经有了一个完全功能的程序,但是无法执行第二或第三个操作,除非再次运行程序。下一步涉及定义一些函数,以将此功能添加到程序中。


## 第四步 —— 定义函数为了处理用户想要执行程序多次的能力,您需要定义一些函数。首先,将您现有的代码块放入一个函数中。将该函数命名为 `calculate()`,并在函数内部添加一个额外的缩进。为了确保程序运行,您还需要在文件底部调用该函数:```python
# 定义我们的函数
def calculate():operation = input('''
请输入您想要执行的数学运算:
+ 代表加法
- 代表减法
* 代表乘法
/ 代表除法
''')number_1 = int(input('请输入第一个数字:'))number_2 = int(input('请输入第二个数字:'))if operation == '+':print('{} + {} = '.format(number_1, number_2))print(number_1 + number_2)elif operation == '-':print('{} - {} = '.format(number_1, number_2))print(number_1 - number_2)elif operation == '*':print('{} * {} = '.format(number_1, number_2))print(number_1 * number_2)elif operation == '/':print('{} / {} = '.format(number_1, number_2))print(number_1 / number_2)else:print('您没有输入有效的运算符,请重新运行程序。')# 在函数外调用 calculate()
calculate()

接下来,创建第二个由更多条件语句组成的函数。在这段代码中,您希望让用户选择是否要再次计算。您可以基于计算器条件语句来实现这一点,但在这种情况下,您只需要一个 if、一个 elif 和一个 else 来处理错误。

将这个函数命名为 again(),并将其添加到 def calculate(): 代码块之后:

... 
# 定义 again() 函数来询问用户是否要再次使用计算器
def again():# 从用户处获取输入calc_again = input('''
您想要再次计算吗?
请输入 Y 表示是,N 表示否。
''')# 如果用户输入 Y,则运行 calculate() 函数if calc_again == 'Y':calculate()# 如果用户输入 N,则向用户道别并结束程序elif calc_again == 'N':print('再见。')# 如果用户输入其他键,则再次运行该函数else:again()# 在函数外调用 calculate()
calculate()

虽然上面的 else 语句中有一些错误处理,但您可能希望更清楚地接受小写的 yn,除了大写的 YN。为此,可以添加字符串函数 str.upper()

...
def again():calc_again = input('''
您想要再次计算吗?
请输入 Y 表示是,N 表示否。
''')# 通过添加 str.upper() 来接受 'y' 或 'Y'if calc_again.upper() == 'Y':calculate()# 通过添加 str.upper() 来接受 'n' 或 'N'elif calc_again.upper() == 'N':print('再见。')else:again()
...

此时,您应该将 again() 函数添加到 calculate() 函数的末尾,以触发询问用户是否继续的代码:

def calculate():operation = input('''
请输入您想要执行的数学运算:
+ 代表加法
- 代表减法
* 代表乘法
/ 代表除法
''')number_1 = int(input('请输入第一个数字:'))number_2 = int(input('请输入第二个数字:'))if operation == '+':print('{} + {} = '.format(number_1, number_2))print(number_1 + number_2)elif operation == '-':print('{} - {} = '.format(number_1, number_2))print(number_1 - number_2)elif operation == '*':print('{} * {} = '.format(number_1, number_2))print(number_1 * number_2)elif operation == '/':print('{} / {} = '.format(number_1, number_2))print(number_1 / number_2)else:print('您没有输入有效的运算符,请重新运行程序。')# 将 again() 函数添加到 calculate() 函数again()def again():calc_again = input('''
您想要再次计算吗?
请输入 Y 表示是,N 表示否。
''')if calc_again.upper() == 'Y':calculate()elif calc_again.upper() == 'N':print('再见。')else:again()calculate()

现在,您可以在终端窗口中使用 python calculator.py 运行您的程序,并且可以随意进行多次计算。

步骤 5 —— 改进代码

现在你有一个不错、完全功能的程序。然而,你可以做很多事情来改进这段代码。例如,你可以添加一个欢迎函数,在程序的顶部欢迎用户进入程序,就像这样:

def welcome():print('''
欢迎使用计算器
''')
...
# 别忘了调用这个函数
welcome()
calculate()

在整个程序中有很多机会引入更多的错误处理。首先,你可以确保即使用户在要求输入数字时输入 plankton,程序仍然可以继续运行。因为在当前程序中,如果 number_1number_2 不是整数,用户将会收到一个错误并且程序将停止运行。另外,当用户选择除法运算符(/)并且在第二个数字(number_2)中输入 0 时,用户将收到一个 ZeroDivisionError: division by zero 错误。对于这一点,你可能想要使用 try ... except 语句进行异常处理。

这个练习限制了你只能使用四个运算符,但你可以添加额外的运算符,比如:

...operation = input('''
请输入您想要完成的数学运算:
+ 代表加法
- 代表减法
* 代表乘法
/ 代表除法
** 代表乘方
% 代表取模
''')
...
# 别忘了添加更多的条件语句来解决乘方和取模

另外,你可能想要使用循环语句重写部分程序。

处理错误、修改和改进每一个编码项目的方法有很多种。重要的是要记住,解决问题的方法并不是唯一的。

结论

本教程介绍了在命令行上构建计算器的一种可能方法。完成本教程后,你将能够修改和改进代码,并且在其他需要在命令行上接收用户输入的项目上工作。

我们很感兴趣看到你对这个基本命令行计算器项目的解决方案!请随时在评论中发布你的计算器项目。

接下来,你可能想要创建一个基于文本的游戏,比如井字游戏或者石头剪刀布。

相关文章:

如何在 Python 3 中制作一个计算器程序

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 简介 Python 编程语言是处理数字和求解数学表达式的强大工具。这种特性可以用来制作有用的程序。 本教程介绍了如何在 Python 3 中制作…...

搭建shopify本地开发环境

虽然shopify提供了在线编辑器的功能&#xff0c;但是远不及本地编辑器方便高效&#xff0c;这篇文章主要介绍如何在本地搭建shopify开发环境&#xff1a; 1、安装nodejs 18.2 2、安装git 3、安装shopify cli ,使用指令: npm install -g shopify/clilatest 4、安装ruby 5、…...

【在Linux世界中追寻伟大的One Piece】进程信号

目录 1 -> 信号入门 1.1 -> 生活角度的信号 1.2 -> 技术应用角度的信号 1.3 -> 注意 2 -> 信号的概念 2.1 -> 用kill -l命令可以查看系统定义的信号列表 2.2 -> 信号处理常见方式 3 -> 产生信号 3.1 -> Core Dump 3.2 -> 调用系统函数…...

MySQL中NULL值是否会影响索引的使用

MySQL中NULL值是否会影响索引的使用 为何写这一篇文章 &#x1f42d;&#x1f42d;在面试的时候被问到NULL值是否会走索引的时候&#xff0c;感到有点不理解&#xff0c;于是事后就有了这篇文章 问题&#xff1a; 为name建立索引&#xff0c;name可以为空select * from user …...

Chrome 浏览器:现代网络浏览的先锋

Chrome 浏览器&#xff1a;现代网络浏览的先锋 Chrome 浏览器&#xff0c;由谷歌公司开发的一款快速、简单且安全的网络浏览器&#xff0c;自2008年发布以来&#xff0c;已经成为全球最受欢迎的浏览器之一。本文将深入探讨 Chrome 浏览器的特点、功能、发展历程以及其对现代网…...

蓝牙定位的MATLAB仿真程序(基于信号强度,平面内的定位,四个蓝牙基站)

这段代码通过RSSI信号强度实现了蓝牙定位,展示了如何使用锚点位置和测量的信号强度来估计未知点的位置。它涵盖了信号衰减模型、距离计算和最小二乘法估计等基本概念。通过图形化输出,用户可以直观地看到真实位置与估计位置的关系。 文章目录 蓝牙定位原理蓝牙定位的原理优缺…...

解决docker一直出现“=> ERROR [internal] load metadata for docker.io/library/xxx“的问题

docker拉取镜像时报错&#xff0c;除标题外&#xff0c;还报如下信息 此时想到是不是拉取超时呢&#xff0c;然后配置了一下docker拉取镜像源 vm /etc/docker/daemon.json { "registry-mirrors": ["https://jq794zz5.mirror.aliyuncs.com"] } # 重新加载配…...

Django学习笔记五:templates使用详解

Django的模板系统是一个强大的工具&#xff0c;用于将动态数据渲染到HTML页面中。以下是Django模板系统的详细用法&#xff1a; 模板的基本概念 Django模板使用一个特殊的语法来插入变量、标签和过滤器。 创建模板 创建模板目录&#xff1a;在你的Django应用中创建一个名为…...

PriorityQueue分析

概述 PriorityQueue&#xff0c;优先级队列&#xff0c;一种特殊的队列&#xff0c;作用是能保证每次取出的元素都是队列中权值最小的&#xff08;Java的优先队列每次取最小元素&#xff0c;C的优先队列每次取最大元素&#xff09;。元素大小的评判可以通过元素本身的自然顺序…...

Hive数仓操作(六)

一、 Hive 分区表 Hive 的分区表通过在 HDFS 中以不同的目录存储不同的分区数据&#xff0c;来提高查询性能并减少数据扫描量。分区表可以根据特定的列&#xff08;如 性别 列的男/女&#xff09;将数据划分为多个部分&#xff0c;使得查询时只需要扫描相关的分区&#xff0c;…...

centos7安装配置python3环境

1、wget https://www.python.org/ftp/python/3.11.2/Python-3.11.2.tgz 2、安装python依赖环境 切换到root用户&#xff0c;然后执行下面命令&#xff1a; 3、安装gcc&#xff0c;用于后续安装Python时编译源码&#xff1a; yum install gcc -y 4、安装Python3相关依赖&#…...

用 LoRA 微调 Stable Diffusion:拆开炼丹炉,动手实现你的第一次 AI 绘画

总得拆开炼丹炉看看是什么样的。这篇文章将带你从代码层面一步步实现 AI 文本生成图像&#xff08;Text-to-Image&#xff09;中的 LoRA 微调过程&#xff0c;你将&#xff1a; 了解 Trigger Words&#xff08;触发词&#xff09;到底是什么&#xff0c;以及它们如何影响生成结…...

手机实时提取SIM卡打电话的信令声音-(题外、插播一条广告)

手机实时提取SIM卡打电话的信令声音-(题外、插播一条广告) 前言 在去年的差不多这个时候&#xff0c;我们做了一遍外置配件的选型&#xff0c;筛选过滤了一批USB蓝牙配件和type-c转usb的模块。详情可参考《外置配件的电商价格和下载链接的选型.docx》一文&#xff1a;蓝牙电话…...

Linux基于CentOS学习【进程状态】【进程优先级】【调度与切换】【进程挂起】【进程饥饿】

目录 进程状态 状态决定了什么 进程等待方式——队列 进程状态的表现 挂起状态 基于阻塞的挂起——阻塞挂起 swap分区 进程状态表示 Z僵尸状态 进程的优先级 什么是进程的优先级 为什么会有进程的优先级 进程饥饿 Linux的调度与切换 切换 调度 queue [ 140 ]&am…...

Golang | Leetcode Golang题解之第456题132模式

题目&#xff1a; 题解&#xff1a; func find132pattern(nums []int) bool {candidateI, candidateJ : []int{-nums[0]}, []int{-nums[0]}for _, v : range nums[1:] {idxI : sort.SearchInts(candidateI, 1-v)idxJ : sort.SearchInts(candidateJ, -v)if idxI < idxJ {ret…...

回归预测|基于哈里斯鹰优化最小二乘支持向量机的数据回归预测Matlab程序HHO-LSSVM 多特征输入单输出含基础程序

回归预测|基于哈里斯鹰优化最小二乘支持向量机的数据回归预测Matlab程序HHO-LSSVM 多特征输入单输出含基础程序 文章目录 一、基本原理一、基本原理二、HHO-LSSVM的流程三、优缺点四、应用场景 二、实验结果三、核心代码四、代码获取五、总结 一、基本原理 HHO-LSSVM回归预测结…...

【Android 源码分析】Activity生命周期之onStop-1

忽然有一天&#xff0c;我想要做一件事&#xff1a;去代码中去验证那些曾经被“灌输”的理论。                                                                                  – 服装…...

【Unity】本地化实现

个人向笔记。 1 前言 记录一下自己的本地化实现思路&#xff0c;暂时只讲本文的本地化实现。 2 文本本地化方案-个人 本地化实现是基于Luban的。自己使用Luban实现了一个“配置表模块”&#xff0c;又实现了一个“全局配置模块”&#xff0c;之后再基于这两个模块实现了“文本…...

Django一分钟:在Django中怎么存储树形结构的数据,DRF校验递归嵌套模型的替代方案

引言 在开发过程中我们可能需要这样的树形结构: [{"data": {"name": "牛奶"},"children": [{"data": {"name": "蒙牛"}, },{"data": {"name": "伊利"}, }]},{"da…...

【Docker从入门到进阶】06.常见问题与解决方案 07.总结与资源

6. 常见问题与解决方案 在使用Docker进行开发和部署过程中&#xff0c;可能会遇到各种问题。以下是一些常见问题及其解决方案&#xff1a; 容器启动失败和调试 在使用 Docker 时&#xff0c;容器启动失败或立即退出可能会导致一定的困扰&#xff0c;以下是进一步深入解决该问…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

Ubuntu Cursor升级成v1.0

0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开&#xff0c;快捷键也不好用&#xff0c;当看到 Cursor 升级后&#xff0c;还是蛮高兴的 1. 下载 Cursor 下载地址&#xff1a;https://www.cursor.com/cn/downloads 点击下载 Linux (x64) &#xff0c;…...

通过MicroSip配置自己的freeswitch服务器进行调试记录

之前用docker安装的freeswitch的&#xff0c;启动是正常的&#xff0c; 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...

从物理机到云原生:全面解析计算虚拟化技术的演进与应用

前言&#xff1a;我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM&#xff08;Java Virtual Machine&#xff09;让"一次编写&#xff0c;到处运行"成为可能。这个软件层面的虚拟化让我着迷&#xff0c;但直到后来接触VMware和Doc…...

CppCon 2015 学习:Time Programming Fundamentals

Civil Time 公历时间 特点&#xff1a; 共 6 个字段&#xff1a; Year&#xff08;年&#xff09;Month&#xff08;月&#xff09;Day&#xff08;日&#xff09;Hour&#xff08;小时&#xff09;Minute&#xff08;分钟&#xff09;Second&#xff08;秒&#xff09; 表示…...

【题解-洛谷】P10480 可达性统计

题目&#xff1a;P10480 可达性统计 题目描述 给定一张 N N N 个点 M M M 条边的有向无环图&#xff0c;分别统计从每个点出发能够到达的点的数量。 输入格式 第一行两个整数 N , M N,M N,M&#xff0c;接下来 M M M 行每行两个整数 x , y x,y x,y&#xff0c;表示从 …...

python可视化:俄乌战争时间线关键节点与深层原因

俄乌战争时间线可视化分析&#xff1a;关键节点与深层原因 俄乌战争是21世纪欧洲最具影响力的地缘政治冲突之一&#xff0c;自2022年2月爆发以来已持续超过3年。 本文将通过Python可视化工具&#xff0c;系统分析这场战争的时间线、关键节点及其背后的深层原因&#xff0c;全面…...

【工具教程】多个条形码识别用条码内容对图片重命名,批量PDF条形码识别后用条码内容批量改名,使用教程及注意事项

一、条形码识别改名使用教程 打开软件并选择处理模式&#xff1a;打开软件后&#xff0c;根据要处理的文件类型&#xff0c;选择 “图片识别模式” 或 “PDF 识别模式”。如果是处理包含条形码的 PDF 文件&#xff0c;就选择 “PDF 识别模式”&#xff1b;若是处理图片文件&…...

第14节 Node.js 全局对象

JavaScript 中有一个特殊的对象&#xff0c;称为全局对象&#xff08;Global Object&#xff09;&#xff0c;它及其所有属性都可以在程序的任何地方访问&#xff0c;即全局变量。 在浏览器 JavaScript 中&#xff0c;通常 window 是全局对象&#xff0c; 而 Node.js 中的全局…...