ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2022-09-06 08:30:42  阅读:238  来源: 互联网

标签:03 打印 Python 控制流 整数 字符串 py 我们 程序化


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,打印,Python,控制流,整数,字符串,py,我们,程序化
来源: https://www.cnblogs.com/amboke/p/16660373.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有