03 程序化编程:变量和控制流介绍

2022/9/7 1:41:35

本文主要是介绍03 程序化编程:变量和控制流介绍,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

03 程序化编程:变量和控制流介绍

变量和控制流介绍

让我们看看下面的程序:

{01_variables1.py}

如果你去 03_procedural_programming 目录和类型 蟒蛇01_variables1.py, 您将在屏幕上看到 5. 让我们像解释器那样逐行进行,并尝试了解这里发生的情况。

实际上,虽然第一行看起来很短,但在幕后发生了很多事情。让我们先尝试描述简化版本。 2 是常量整数,所以我们将 2 分配给 多变的 第一的 . 我们也可以说第一个“持有” 价值 2.

我将使用以下简化模型: 中央处理器 或处理器是负责计算的计算单元。在当前执行的行上还有一些“指针”,这个指针是 一般来说 上升(在上面的程序中从 1 到 4)。有2种 记忆 .

一般来说,每个对象(在 Python 中,一切都作为对象实现)创建于 堆, 但 ** 指针 ** 这个对象可以同时保存在 和上 .

现在,忽略, 部分 .第一的 是全局变量。这意味着,它可以在源文件中的每个位置访问(为了 改变 但是,您将需要一些额外的命令)。所以,翻译见 运行 2,这是 整数 (常量和整数)值,它创建 int 目的 并保存 指针 给它 多变的第一的 .

那么,Python 中的变量是什么?这只是 参考 到定义的对象 或者 .的类型 第一的 变量仅在运行时并且仅在初始化之后才知道。这被称为 ** 动态的** 类型。

所以, 第一的 是 ( 全球的 ) 指向对象 2 并具有 ( 动态的 ) 类型 整数 .

笔记: 除了全局变量之外,我们还没有看到其他类型,但是这个概念非常简单明了,不那么简单的是动态类型。例如,在 C 中,所有类型都是静态的。我稍后会回到这个区别。

变量名称中允许使用的内容有一些限制。首先,变量名只能包含字母数字字符和下划线(Az、0–9 和 _)。变量名区分大小写(age、Age 和 AGE 是三个不同的变量)。变量名必须以字母或下划线字符开头。变量名不能以数字开头。最好使用描述性名称,例如第一个参数、第二个参数、结果,而不是短名称,例如 a、b、c。

在第二行中,我们定义变量/引用 整数 3 对象。

在第三行,我们执行 第一+第二 首先,我们得到新对象(它持有 整数 5) 关于 并将其引用分配给 结果 多变的 .

比我们打印 结果 屏幕上的变量。

所以,我们得到了预期的 5 (5=2+3) .

让我们看一下同一程序的轻微变体:

{02_variables2.py}

在这里,您可以看到前 3 行与前面的程序相同,但我们提供的不是仅在屏幕上打印 5 行,而是提供了更多信息,实际上,它是 2+3 .但是为什么,我们用 6 行来打印这样的微不足道的东西呢?是什么 结束='' 每一个 打印 命令?

“的结果”第一的 有不同的类型。 “的结果” 就是所谓的 Python 字符串首先是int。打印 命令知道如何打印两者 整数细绳, 所以在这里,我只是把每行中我有的句子或 整数或字符串。 默认, 打印 命令还打印“新行”,指定 结束='' 是说使用空白而不是“新行”。

笔记 : 你们中的许多人都在筛选我,称打印“命令”是错误的,这是一个功能。但是我们还没有学习函数。所以,我不想用这个词。

所以,第 4 行打印到屏幕“结果”,第 5 行添加“2”,第 6 行添加“+”,第 7 行添加“3”,第 8 行添加“is”,第 9 行添加“5”,我们有结果 “2 + 3 的结果是 5”。

像这样简单的事情看起来太费劲了。我们期待着,我们可以用一行来表达上面写的句子。让我们尝试这样的事情:

{03_variables3.py}

如果我们运行它,我们将收到以下消息:

_回溯(最近一次通话最后):  
 文件“/opt/project/IntroCS/03_procedural_programming/03_variables3.py”,第 4 行,在<module>  
 print(""+first+" + "+second+" 的结果是"+result)  
 TypeError:只能将str(不是“int”)连接到str_

显然,我们没有得到我们想要的信息。我们正在寻找的是未捕获的错误/消息的示例。我们稍后会了解这一点。因为,了解 Python 就足够了

_只能将 str(不是“int”)连接到 str_

那是 “你好,”+“世界!” (这是字符串到字符串的连接)没问题, 2+3 可以(这是两个整数的和),但是“+2”的结果 Python 不知道怎么处理。

笔记: 我们使用相同的符号 + 都表示 整数 + 整数 (总和)和 _字符串+字符串_ __ (级联)。 + 的语义不同,取决于类型。

我们可以使用简单的技巧来解决这个问题。看

{04_variables4.py}

字符串() 是内置的“命令”,几乎可以将任何类型转换为 细绳 .所以,在第 4 行,我们只有 细绳 s,这是允许的。

但是,这种风格的窃取有问题。让我们仔细看看。

当我们有第一个连接时

 ""+str(first) 的结果

创建了新的中间对象,然后将这个新创建的对象与 str(秒) ,创建第二个中间对象,然后将其与 str(结果) 第三次。每个 + 标志我们正在创建中间对象。

我们能以某种方式一次性创建字符串吗?我们可以!在 Python 中有一个东西叫做 f-字符串 或者 格式化字符串 .代码如下所示:

{05_variables5.py}

在这里,我们有一个长字符串(+ 只是字符串中的一个符号,如 T),我们可以在 {} 中指定 变量 ,每个值都可以替换为。例如,首先我们将看到 2。这已完成,无需创建许多中间对象。完成所有替换后(在运行时),结果很普通 细绳 .搜索“f-String”以获取更多详细信息。

现在,让我们编写一些非常简单的测试程序。这个程序会问,2+3是多少,它会得到用户的输入,如果用户是对的,它会打印“你是对的!”,如果用户错了,它会打印“对不起,你错了。”

笔记: 为简单起见,我忽略了异常。

{06_variables6.py}

前 3 行如上。

在第 4 行,我使用 f-String 来创建短语 “2+3是多少?” 这是写作的首选方式。如果稍后,我们将更改 first 或 second 的值,我们可以保持第 4 行不变。 输入() 内置的“命令”在屏幕上键入此短语,然后等待输入。无论您输入什么(按回车键后),都将被放入可变答案中。你应该只放 整数 重视他们(见上面的注释)。在第 5 行,我使用了内置的“命令” 整数(一些值) 将类型更改为 整数 . 结果 整数 类型。如果我们想与之比较,我们应该比较 整数 -s。否则,用户的答案将始终与计算的不同。

笔记 :如您所见,虽然您不必编写类型(但您可以,如果您愿意的话)),而您有 动态的 打字,你仍然应该关心对象的正确类型。

第 6-9 行是所谓的 分枝 操作员。首先它 评估 if 后面的值,结果是否等于 answer ( == 被使用,因为 = 用于分配,例如 第一个=2 ,只是不要混淆)。为了 整数 对象它通过检查实际值来做到这一点。

如果在第 4 行,您输入 5,而不是在第 6 行,您将检查是否 5==5,这显然是正确的,对于任何其他值,您将得到 — 错误。

笔记: 在 **** Python 布尔值只有 2 个值—— 真的 错误的 .

取决于 if 语句是否获取值 _真的_ 或者 _错误的_ __ 只会执行一份早午餐。如果 _真的_ 第一个早午餐,打印“你是对的!”,如果 _错误的_ - 第二个早午餐,打印“对不起,你错了”。

执行完近一个分支后,从第 10 行继续执行——if 之后的第一条语句 分枝 操作员。

在引擎盖下

您可以看到,这些早午餐中的语句是用 4 个空格编写的(它可以是制表符)。这就是所谓的 缩进 ,它是 Python 的方式来表示上面的“早午餐”。如果其中一个 brunches 有超过 1 个语句,则必须用 4 个空格标识,否则程序可能会崩溃。见一般如果 分枝 操作员在下面稍作说明。

笔记: 对于不耐烦的读者,我不得不说,在 Python 中,if 语句没有定义新的范围。当我将讨论定义函数时,我将讨论范围。

总而言之,有以下形式的if 分枝 操作员:

 如果条件:  
 声明1  
 陈述2  
 别的:  
 声明3  
 声明4  
 声明5
  1. 条件正在评估。
  2. 如果为真,则语句 1 和 声明2 被执行。
  3. 如果是假的, 声明3声明4 被执行。
  4. 在这两种情况下 声明5 被执行。

笔记: 在机器层面有一种叫做“条件跳转”的东西。如果条件为真,则程序执行的指针“跳转”到程序的一部分,否则跳转到另一部分。当每个分支结束时,“跳转”运算符到 if 块之后的第一个运算符。

if 有很多变化 分枝 操作员。它们中的每一个都可以在这个基础的帮助下表达 分枝 操作员。

笔记 Python 有一个叫做 noop 的特殊命令——没有操作符,这个命令什么都不做。有时,你会需要它。

这只是对变量和分支的介绍。所以,下一章我们会讲到 Python的原始类型 .

这个故事是我新的一部分 .

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/18428/21090608



这篇关于03 程序化编程:变量和控制流介绍的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程