中小学Python《一、程序执行》

一、程序执行

前言:

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

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

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和 1

    True 和 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”

  • 图像
  •  计算机将图像分解成无数个像素(类似马赛克的方块)
  • 黑白图像:每个像素用 0-255 之间的整数表示亮度,0 代表黑色,255 代表白色
  • 彩色图像:每个像素由三个整数(RGB 值)表示,其中:
  • 红色(R):0-255 之间的整数
  • 绿色(G):0-255 之间的整数
  • 蓝色(B):0-255 之间的整数
  • 1.5. 为什么要把这一切搞得这么复杂?

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

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

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

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

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

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

    2.1. 运算符
  • 定义:用来对数据进行操作的符号。Python提供了多种运算符,包括算术运算符、比较运算符、逻辑运算符、赋值运算符等。因课程需要本节只介绍算术运算符“+”,其余的会在其他章节讲解。
  • 2.2. 表达式
  • 定义:是由数据和运算符组成而成。
  • 可以将表达式看作是一个“短语”, 它虽然不是完整的句子,但它能够表达一定的含义。比如“苹果和香蕉” 只是两个词语的组合成了短语,如果要完整的描述可以说 “我买了苹果和香蕉”。

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

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

  • 正常情况
  • 整数 + 整数
  • 结果:整数
  • 示例:1 + 1 = 2
  • 解释:整数加法的结果仍然是整数,这是我们日常计算的常识。
  • 浮点数 + 浮点数
  • 结果:浮点数
  • 示例:1.2 + 3.4 = 4.6
  • 解释:两个小数相加,仍然会是一个小数。
  • 整数 + 浮点数
  • 结果:浮点数
  • 示例:1 + 2.5 = 3.5
  • 解释:整数与小数相加,结果仍然是小数,因为小数部分需要被保留。
  • 字符串 + 字符串(字符串连接)
  • 结果:一个新的字符串
  • 示例:"Hello" + "World" "HelloWorld"
  • 解释:在 Python 里,字符串相加并不会像数字那样做数学运算,而是把两个字符串直接拼接在一起。这种操作被称为字符串连接(concatenation)。
  • 特殊情况
  • 整数 + 字符串
  • 结果:错误(TypeError)
  • 示例:5 + "hello"(错误)
  • 解释:计算机无法理解该如何把一个数字和一个文字拼在一起,所以会报错。同样数学中也无法计算“5+hello”等于什么。
  • 布尔值 + 数字
  • 结果:整数
  • 示例:True + 1 = ?,False + 1 = ?
  • 解释:实际的程序中很少这样做,这里不讲解。但希望你能自己试试,然后补充答案,并给出解释。
  • 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~5

    for i in range(1, 5):

     print(i)

    循环次数不正确,导致执行次数不符合预期。应该是:

    for i in range(1, 6):

     print(i)

  • 错误发现方法:
  • 程序员需要仔细检查代码逻辑,或者通过添加注释和测试来验证程序的正确性。
  • 作者:破解中小学~软硬件Ai(植入数学与物理)

    物联沃分享整理
    物联沃-IOTWORD物联网 » 中小学Python《一、程序执行》

    发表回复