一、程序执行

51 阅读16分钟

一、程序执行

前言:

你是否好奇,手机里的视频是如何播放的?微信消息是怎么发送给好友的?游戏中的人物为何能灵活移动?这一切的魔法,都源于编程——一种让计算机听懂我们指令的神奇语言!

本章节让你了解到计算机与人类处理信息方式有何不同?你会看到,无论是聊天记录、音乐旋律,还是五彩斑斓的图片,本质上都是由数字和符号组成的。本章节主要探索数据类型、运算符、变量程序执行过程

1. 基本数据类型

1.1. 概述

我们每天在手机、电脑等电子设备上所看到的图片、听到的声音、观看的视频,表面上丰富多彩,但在计算机的世界里,它们本质上都是由二进制专数据表示,并通过数字和字母等编码方式存储和传输!

微信、抖音这样的应用程序,都是通过编程来处理这些数字信息,让我们可以聊天、看视频、玩游戏。编程的本质,就是告诉计算机如何操作这些数据,让它按照我们的想法去工作!

1.2. 定义

在编程中,我们把单个的数据称为,而数据的类型,决定了这个值的含义注以及使用方式注。计算机只需几种基本数据类型,就能构造出所有复杂的数据结构(比如声音、图片等)。接下来介绍Python的基本数据类型

1.3. 基本数据类型
1.3.1. 整数(int)
  • 定义: 整数是任何没有小数点的数字,包括负数、正数和零。如:1、2024、0、-47 和 -100 都是整数。生活常见有年龄、班级人数等。
  • 与数学比较:

    ​编辑

1.3.2. 浮点数(float)
  • 定义: 浮点数是任何带有小数点的数字。“浮点数”名称的由来是因为小数点可以在数字之间“浮动”。如:1.5、3.59、-1.7、0.0 和 -1.0 都是浮点数,即使小数部分为零,计算机也识别为浮点数。生活常见有身高1.5米、冰淇淋价格3.5元。
  • 与数学比较:

浮点数比较繁琐,为了能快速理解,可以认为“浮点数近似表示实数”,关于实数会在初一上学期接触到,下面简单说明:

有理数: 有理数包含整数、分数以及循环小数。

无理数: 无理数是小数部分无限不循环的数 ,比如π ≈ 3.1415926535...(无限不循环) 。

实数: 指的有理数和无理数的统称(所有可以想象到的数)。其特点是:

浮点数 vs. 实数 :

    

比较项浮点数(编程)实数(数学)
概念计算机存储和运算格式数轴上的数,可无限精确
精度有限精度,可能丢失精度 在编程中,浮点数是 计算机对实数的一种近似表示,但不能完美表示所有实数(如 π)连续的 可以无限精确(如 π)
运算可能产生舍入误差严格数学运算,无误差

如果想更深入了解详见专业词汇浮点数

1.3.3. 布尔值(bool)
  • 定义: 布尔值是表示真( True)或假(False) 的数据类型, 通常用于逻辑判断和条件控制。在Python中,True 和 False 的首字母一定是大写。生活常见有“判断题的√和×”。
  • 编程与数学对比(可不讲)

    

方面数学中的布尔值编程中的布尔值
取值只有 0和 1True 和 False,有时也支持 1 和 0
应用逻辑推理、集合运算等条件判断、循环控制、位运算等
是否允许非布尔值只允许 0 和 1允许隐式转换,如 0、""、null 可能视为 false
在数学中,布尔值严格限定在 0 和 1,而在编程中,布尔值通常用于控制逻辑,还可能涉及类型转换
1.3.4. 字符串(str)
  • 定义: 字符串是一串由字符组成的序列,字符可以是字母、数字、符号或空格。 在编程中,通常用引号(单引号 ' 或双引号 " )括起来。 如:"z"、"python@ai.com"、":)"和"-12"、"98.5"、"True"都是字符串。 即使部分引号内容看起来像数字布尔值,但因引号的存在计算机仍然会把它当作字符串,而不是数值或逻辑值。生活常见有微信消息、游戏ID。

  •  特殊情况:

    • "" (空字符串):一个不包含任何字符的字符串。
    • " "包含空格的字符串):虽然只有一个空格字符,但仍然是一个非空字符串,与 "" 不同。
    • None:表示“没有值”

Python 官方建议优先使用双引号 " ,但实际使用时,按避免转义的规则选择即可。

    

情况推荐用法
一般字符串'hello' 或 "hello" 都可以
字符串里有双引号'"Python is fun!"' ✅ (避免转义 ")
字符串里有单引号"It's easy" ✅ (避免转义 ')
多行字符串使用三重引号'''多行文本''' 或 """多行文本"""
1.4. 复杂数据组合

复杂数据是由基本数据类型组合而成。 仅靠这些基本数据类型,如何构成微信、歌曲或照片这样的复杂内容呢?实际上,计算机通过数值编码的方式来表示和存储各种复杂数据。

  • 微信: 页面包含了浮点数、字符串、布尔值。

​编辑

计算机将所有音频和图像数据表示为巨大的整数序列。

详见“声音波形演示.mp4”

​编辑

1.5. 为什么要把这一切搞得这么复杂?

计算机只能理解0和1,也就是二进制。 这源于计算机的硬件工作原理,它基于电子开关​编辑

可想象为计算机是由很多开关组成),开关只有两种状态:开(1)和关(0)。 因此,所有数据在计算机中最终都会被转换为二进制形式,以便计算机的硬件能够进行处理和存储。

  • 计算机自动处理数据转换的好处:

    • 便利性: 计算机在后台自动完成数据到二进制的转换,程序员无需直接操作二进制。
    • 抽象性:程序员可以使用高级数据类型(如整数、字符串),无需关心底层的二进制表示。
    • 易用性:编程语言提供了丰富的操作符和函数,直接操作高级数据类型 ,从而简化编程。
    • 可移植性:虽然不同计算机硬件可能对二进制的处理方式有所不同,但使用高级数据类型可以屏蔽这些差异,使得程序能够在不同硬件平台上运行。

    ​编辑

  • 代码转换成二进制的过程

想象一下,你写了一封信, 而计算机只懂二进制(0和1)。 为了让计算机理解你的信,你需要把它翻译成这种“语言”。整个过程可以分为以下几个步骤:

    1. 编写代码(类似写信) 用人类能懂的语言写了一段代码,就像写一封信。
    2. 语法分析(分析句子) 编译器按照规则把分析每个句子。
    3. 语义分析(检查意思) 编译器还会检查这些句子的意思是否对,就像老师检查你的作文有没有写错或逻辑不通。
    4. 生成二进制数据(翻译成电脑的秘密语言) 然后,编译器把这些句子一步步翻译成电脑能懂的语言,也就是一串串0和1。
    5. 加载和运行(电脑执行) 最后,计算机将这段翻译好的二进制程序加载到内存中,并按照程序指令运行。

2. 表达式与计算机“说话”

2.1. 运算符
  • 定义: 用来对数据进行操作的符号。Python提供了多种运算符,包括算术运算符、比较运算符、逻辑运算符、赋值运算符等。因课程需要本节只介绍算术运算符“+”,其余的会在其他章节讲解。
2.2. 表达式
  • 定义: 是由数据和运算符组成而成。

可以将表达式看作是一个“短语”, 它虽然不是完整的句子,但它能够表达一定的含义。比如“苹果和香蕉” 只是两个词语的组合成了短语,如果要完整的描述可以说 “我买了苹果和香蕉”。

当计算机在程序中遇到一个表达式时,它会将该表达式计算为一个单一的值。 这和人类的思维方式类似:当你看到5+2时,就会在脑海中进行计算,并得出结果7。计算机也是如此。它将每个表达式简化为最简单的形式。

我们来看运算符 “+” 在不同数据类型相加时会发生什么?

2.3. 让计算机“说话”

在代码编辑器的第一行,我们写下一个表达式1 + 1。计算机看到后,会立刻计算它的结果为2。但运行程序后,屏幕上什么都没有,这是为什么呢?

这是因为计算机就像一个“听话但呆萌的机器人”,它只会执行你明确告诉它的指令。虽然它计算出了1 + 1 = 2,但你并没有告诉它要“说出来”,所以它只是默默地把结果放在心里,没有显示出来。

如果你想让计算机把结果告诉你,就需要使用print() 函数。print() 就是让计算机“开口说话”的方法,它会把括号内的内容打印到屏幕上。例如:

print(1 + 1)  # 屏幕输出:2

   

就像你在学校做数学题,如果老师问你“1 + 1 等于多少?”

你心里算出2但不说出来,老师就不会知道答案。这时,如果你大声说“2”,老师才知道你算对了!计算机也是一样的道理!

2.4. 编写代码的规则
  • 一行一个指令 每个指令需要单独写在一行,否则计算机会“晕头转向”。✅ 正确写法:

print(1 + 1)
print("你好")

   

错误写法:

print(1 + 1) print("你好")  # 计算机会报错!

   

  • 顺序执行 计算机会从上到下依次执行指令。例如:

print("第一句话")
print("第二句话")

   

输出结果:

第一句话
第二句话

3. 程序的执行过程

​编辑

    1. 第一行代码:

      1. 计算机首先将程序的第一行加载到内存
      2. 识别表达式,将其简化为单一的值,结果为2。
      3. 计算机会查看括号外的内容,括号外内容print指令,将结果3.5显示在控制台中。
      4. 打印完成后,计算机会优化自己“大脑”,它不再需要记住这条指令,也不需要这些信息,所以它只是清空“大脑记忆”(工作内存)并忘记,这为下一条指令腾出了空间。
    1. 第二行代码:

      1. 第二行加载到工作内存中
      2. 识别表达式,将其简化为单一的值,结果为5。
      3. 因该行只有表达式,上一步已完成了任务,计算机会优化自己“大脑”,清空工作内存,忘记5,继续下一行。
    1. 第三行代码:

      1. 第三行加载到工作内存中
      2. 识别表达式,表达式有两个运算符,则计算机分为两个步骤从左到右求值,并简化为单一的值,即"hello word"
      3. 计算机会查看括号外的内容,括号外内容print指令,将结果显示在控制台中。
      4. 打印完成后,计算机会优化自己“大脑”,它不再需要记住这条指令,也不需要这些信息,所以它清空工作内存并忘记,这为下一条指令腾出了空间。
    1. 第四行代码:

      1. 没有任何信息,计算机终止程序执行

4. 如何辨别错误

4.1. 定义:

错误是指程序没有按照预期运行。无论是新手还是经验丰富的程序员,编写程序时都会遇到错误。编程的本质就是一个不断尝试、修复、再尝试的过程。没有人能一次性写出完美无缺的代码,因此错误是编程中非常自然的一部分。

 在编程中,常见的错误类型有三种:语法错误、运行时错误和逻辑错误。

4.2. 三种错误类型
4.2.1. 语法错误:
  • 定义: 语法错误是指程序代码不符合Python语言的规则。

就像“饭吃了吗”不符合中文语法一样,如果代码的语法不正确,程序将无法运行。

    

错误方式错误示例错误原因
括号不匹配print("Hello, world!" 括号没有正确闭合,应该是print("Hello, world!")
字符串引号不匹配print("Hello, world!)字符串的引号没有正确闭合,应该是print("Hello, world!")
缩进错误 prin("Hello, world!") Python里没有prin() 这个函数,正确的写法是 print()
4.2.2. 运行时错误
  • 定义: 运行时错误是指程序在运行过程中出现的错误。这类错误的代码语法是正确的,但在执行某条指令时,计算机无法完成操作。

类似数学计算过程错误:10 ÷ 0 ,数学中任何数字都不能除以 0。同样这个在计算机中也会报错。

    

错误类型错误示例代码错误原因
类型错误(TypeError)print("age:"+25)数据类型不兼容,字符串与数字不能相加。正确:print("age:"+25)
名称错误(NameError)name="张三"print(nam)访问未定义的变量,通常是变量拼写错误或未声明变量。name="张三"print(name)
值错误(ValueError)python int("abc")int()函数无法识别字符串转换为整数python int("123")
4.2.3. 逻辑错误
  • 定义: 逻辑错误是指程序虽然能够正常运行,但结果与预期不符。这类错误是最难发现的,因为计算机不会报错,程序会正常执行完毕。

数学中的计算方法错误:例如小明有5颗糖,又得到了2颗,现在他有多少颗糖?

如果写成5-2=3就错了,应该是加法。

常见例子:

    

错误类型错误示例代码正确写法
计算错误苹果5个、橙子2个、梨6个,求总数量:print(5+2)计算过程中漏掉某个值,导致结果错误。应该是:print(5+2+6)
条件错误分数大于60打印通过,否则不通过。if score < 60:print("通过")else:print("不通过")条件判断逻辑写反,导致错误。应该是:if score > 60:print("通过")else:print("不通过")
循环错误循环输出1~5for i in range(1, 5): print(i)循环次数不正确,导致执行次数不符合预期。应该是:for i in range(1, 6): print(i)