- 8.9 Python程序语言相关题
8.01 程序设计语言与语言处理程序基础前言
考察:编译原理相关知识点,红框重点掌握
8.02 编译过程
高级语言的处理有两种:
编译型,解释型
两者区别:
解释型:写一行代码,回车之后,后台就把相关操作做了,得出结果(有问题也直接知道了)【php】
编译型:整段程序写好了之后,按下编译按钮之后,才做成相应可执行程序,才可以执行【java】
编译型的基本流程
- 词法分析:非法字符、单词拼写错误等
- 语法分析:标点符号错误、表达式中缺少操作数、括号不匹配等有关语言结构上的错误
- 语义分析【静态语义分析阶段】:运算符与运算对象类型不合法等错误
- 目标代码生成【动态语义执行阶段】:包括了陷入死循环、变量取零时做除数、引用数组元素下标越界等错误
- 总结随笔:
例题分析【2017下】
编译过程中进行的语法分析主要是分析(48)C。
A.源程序中的标识符是否合法 B.程序语句的含义是否合法
C.程序语句的结构是否合法 D.表达式的类型是否合法
例题讲解【2021上】
8.03 文法的定义以及语法推导树
掌握:了解文法,掌握语法推导树
文法的定义
- 正则闭包和闭包不要求掌握
文法的分类
- 了解3型
语法推导树【考点】
定义:可以推导这种语法的情况怎么样
- 可以推导出别的字符为非终结符
- 不能推导出别的字符为终结符
8.04 有限自动机和正规式【考点】
有限自动机【考点】
特点:有限自动机可以表达状态间的转化
- 单圈是初态,双圈或加粗为终态
- 一般就考察该有限自动机能识别的串是哪一种
例题讲解【2021】
例题讲解【2021下】
例题讲解2017上【更多例题在8.05】
正规式【考点】
概念:只是有限自动机的另一种表达形式
实例分析
第一问
第一问的A选项:
第一问的B选项:
- 同理C正确,D错误
- 选D
第二问
正规式分析:
|
表示的是或关系*
表示的是循环多次,0—无穷大
解题:
- 解题用代入法
- 将第一空a,b,c都带入进去,都能表示了为正确答案
- D选项:先若干个ab串,后若干个ba串,第一问a,b都能表示,c表示不了,为错
- 正确选C
8.05 有限自动机的例题
例题讲解1
- 选C,自己推导即可
例题讲解2【2017下】
8.06 程序语言基础——表达式的语法树
考察:利用树的遍历来求前缀和后缀表示式
解题步骤:
- 先根据表达式构造树
- 注意括号(起到先后顺序,但是不构造到树里),有括号的放一起,先做括号里的再算外面的加减乘除
- 有无括号构造的树都不一样
- 再根据树的遍历结果来写相应表达式
- 结果为D
个人理解
例题讲解2017上
例题讲解【2021上】
例题讲解【2021下】
8.07 函数调用(传值与传址)【重点掌握】
- 区分实参和形参
左:传值,右:传址
*
形参有这个符号表示指针类型变量
传值原理
- 对应不同的存储空间,是将值复制给了x,y
传址原理
- x,y指向了a,b的存储空间,对应相同的存储空间
例题讲解2017上
例题讲解【2021年上】
8.08 各种程序语言的特点
掌握:画圈的基本的特点
- Lisp语言:是一种通用高级计算机程序语言,长期以来垄断人工智能领域的应用。且是第一个声明式系内函数式程序设计语言
例题讲解【2023模考一】
8.9 Python程序语言相关题
8.91 Python中异常处理相关题
- 在Java中使用try-catch来捕获异常,而在Python中类似,使用try-except来捕获发生的异常事件
- python 中的异常处理相比java来说,要简单一些,python 中使用四个关键字来处理异常
- try:捕获异常,类似于java 中的 try
- except:处理异常,类似于iava 中的 catch
- finally: 不管是否捕获到异常都会被执行,类似于java 中的 finally
- raise:抛出异常,类似于iava 中的 throw
8.92 Python中list(),range(起始值,结束值,步长)——相关题
8.93 Python中输出结果相关题
8.94 Python程序语言的特点
- 语法简单
- Python 是开源的
- Python 是免费的
- Python 是高级语言
- Python 是解释型语言(动态编程),能跨平台,不是编译型语言
- Python 是面向对象的编程语言
- Python 功能强大 (模块众多)
- Python 可扩展性强
例题讲解【2021年下】
8.95 Python三种数据结构:列表,元组,字典
列表(List)和元组(tuple)相同点:
- 都是序列
- 都可以存储任何数据类型
- 可以通过索引访问
列表(List):
- 使用方括号:
[]
- 元素能修改,可变的
- 有序的序列结构,其中元素可以重复
- 创建:只要把逗号分隔的不同的数据项使用方括号括起来即可。
list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5 ]
list3 = ["a", "b", "c", "d"]
元组(tuple):
- 使用小括号:
()
- 元素不能修改
- 元组无法复制
- 创建:只需要在括号中添加元素,并使用逗号隔开即可。
tup1 = ('physics', 'chemistry', 1997, 2000)
tup2 = (1, 2, 3, 4, 5 )
tup3 = "a", "b", "c", "d"
字典(Dictionary):字典是另一种可变容器模型,且可存储任意类型对象。
- 使用花括号:
{}
- 元素能修改
- 创建:字典的每个键值 key:value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中
- 键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。
- 值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
一个简单的字典实例:
tinydict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
也可如此创建字典:
tinydict1 = { 'abc': 456 }
tinydict2 = { 'abc': 123, 98.6: 37 }
例题讲解【2021年下】
8.96 Python语言的模块
TensorFLow、Keras和Pytorch
是目前深度学习的主要框架,也是入门深度学习必须掌握的三大框架。Matplotlib
是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。