中小学Python《一、程序执行》
一、程序执行
前言:
你是否好奇,手机里的视频是如何播放的?微信消息是怎么发送给好友的?游戏中的人物为何能灵活移动?这一切的魔法,都源于编程——一种让计算机听懂我们指令的神奇语言!
本章节让你了解到计算机与人类处理信息方式有何不同?你会看到,无论是聊天记录、音乐旋律,还是五彩斑斓的图片,本质上都是由数字和符号组成的。本章节主要探索数据类型、运算符、变量和程序执行过程!
1. 基本数据类型
1.1. 概述
我们每天在手机、电脑等电子设备上所看到的图片、听到的声音、观看的视频,表面上丰富多彩,但在计算机的世界里,它们本质上都是由二进制专数据表示,并通过数字和字母等编码方式存储和传输!
像微信、抖音这样的应用程序,都是通过编程来处理这些数字信息,让我们可以聊天、看视频、玩游戏。编程的本质,就是告诉计算机如何操作这些数据,让它按照我们的想法去工作!
1.2. 定义
在编程中,我们把单个的数据称为值,而数据的类型,决定了这个值的含义注以及使用方式注。计算机只需几种基本数据类型,就能构造出所有复杂的数据结构(比如声音、图片等)。接下来介绍Python的基本数据类型。
1.3. 基本数据类型
1.3.1. 整数(int)
1.3.2. 浮点数(float)
浮点数比较繁琐,为了能快速理解,可以认为“浮点数近似表示实数”,关于实数会在初一上学期接触到,下面简单说明:
有理数:有理数包含整数、分数以及循环小数。
无理数:无理数是小数部分无限不循环的数 ,比如π ≈ 3.1415926535…(无限不循环) 。
实数:指的有理数和无理数的统称(所有可以想象到的数)。其特点是:
浮点数 vs. 实数 :
比较项 |
浮点数(编程) |
实数(数学) |
概念 |
计算机存储和运算格式 |
数轴上的数,可无限精确 |
精度 |
有限精度,可能丢失精度,在编程中,浮点数是 计算机对实数的一种近似表示,但不能完美表示所有实数(如 π) |
连续的,可以无限精确(如 π) |
运算 |
可能产生舍入误差 |
严格数学运算,无误差 |
如果想更深入了解详见专业词汇浮点数
1.3.3. 布尔值(bool)
方面 |
数学中的布尔值 |
编程中的布尔值 |
取值 |
只有 0和 1 |
True 和 False,有时也支持 1 和 0 |
应用 |
逻辑推理、集合运算等 |
条件判断、循环控制、位运算等 |
是否允许非布尔值 |
只允许 0 和 1 |
允许隐式转换,如 0、""、null 可能视为 false |
在数学中,布尔值严格限定在 0 和 1,而在编程中,布尔值通常用于控制逻辑,还可能涉及类型转换 |
1.3.4. 字符串(str)
Python 官方建议优先使用双引号",但实际使用时,按避免转义的规则选择即可。
情况 |
推荐用法 |
一般字符串 |
'hello' 或 "hello" 都可以 |
字符串里有双引号 |
'"Python is fun!"' ✅ (避免转义 \") |
字符串里有单引号 |
"It's easy" ✅ (避免转义 \') |
多行字符串 |
使用三重引号'''多行文本''' 或 """多行文本""" |
1.4. 复杂数据组合
复杂数据是由基本数据类型组合而成。 仅靠这些基本数据类型,如何构成微信、歌曲或照片这样的复杂内容呢?实际上,计算机通过数值编码的方式来表示和存储各种复杂数据。
计算机将所有音频和图像数据表示为巨大的整数序列。
详见“声音波形演示.mp4”
1.5. 为什么要把这一切搞得这么复杂?
计算机只能理解0和1,也就是二进制。 这源于计算机的硬件工作原理,它基于电子开关(
可想象为计算机是由很多开关组成),开关只有两种状态:开(1)和关(0)。 因此,所有数据在计算机中最终都会被转换为二进制形式,以便计算机的硬件能够进行处理和存储。
想象一下,你写了一封信, 而计算机只懂二进制(0和1)。 为了让计算机理解你的信,你需要把它翻译成这种“语言”。整个过程可以分为以下几个步骤:
-
- 编写代码(类似写信)用人类能懂的语言写了一段代码,就像写一封信。
- 语法分析(分析句子)编译器按照规则把分析每个句子。
- 语义分析(检查意思)编译器还会检查这些句子的意思是否对,就像老师检查你的作文有没有写错或逻辑不通。
- 生成二进制数据(翻译成电脑的秘密语言)然后,编译器把这些句子一步步翻译成电脑能懂的语言,也就是一串串0和1。
- 加载和运行(电脑执行)最后,计算机将这段翻译好的二进制程序加载到内存中,并按照程序指令运行。
2. 表达式与计算机“说话”
2.1. 运算符
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. 程序的执行过程
-
- 第一行代码:
- 计算机首先将程序的第一行加载到内存
- 识别表达式,将其简化为单一的值,结果为2。
- 计算机会查看括号外的内容,括号外内容print指令,将结果3.5显示在控制台中。
- 打印完成后,计算机会优化自己“大脑”,它不再需要记住这条指令,也不需要这些信息,所以它只是清空“大脑记忆”(工作内存)并忘记,这为下一条指令腾出了空间。
- 第一行代码:
-
- 第二行代码:
- 第二行加载到工作内存中
- 识别表达式,将其简化为单一的值,结果为5。
- 因该行只有表达式,上一步已完成了任务,计算机会优化自己“大脑”,清空工作内存,忘记5,继续下一行。
- 第二行代码:
-
- 第三行代码:
- 第三行加载到工作内存中
- 识别表达式,表达式有两个运算符,则计算机分为两个步骤从左到右求值,并简化为单一的值,即"hello word"
- 计算机会查看括号外的内容,括号外内容print指令,将结果显示在控制台中。
- 打印完成后,计算机会优化自己“大脑”,它不再需要记住这条指令,也不需要这些信息,所以它清空工作内存并忘记,这为下一条指令腾出了空间。
- 第三行代码:
-
- 第四行代码:
- 没有任何信息,计算机终止程序执行
- 第四行代码:
4. 如何辨别错误
4.1. 定义:
错误是指程序没有按照预期运行。无论是新手还是经验丰富的程序员,编写程序时都会遇到错误。编程的本质就是一个不断尝试、修复、再尝试的过程。没有人能一次性写出完美无缺的代码,因此错误是编程中非常自然的一部分。
在编程中,常见的错误类型有三种:语法错误、运行时错误和逻辑错误。
4.2. 三种错误类型
4.2.1. 语法错误:
就像“饭吃了吗”不符合中文语法一样,如果代码的语法不正确,程序将无法运行。
错误方式 |
错误示例 |
错误原因 |
括号不匹配 |
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(植入数学与物理)