网络开发论文

实验一、python下载安装并配置环境变量
一、实验内容:
官网下载python可执行文件,安装到电脑上,按照教程一步一步完成安装,配置pip环境变量,并设置默认下载镜像,最后测试
二、实验时间:2021.3.22
三、完成的主要工作
下载安装好pythonIDLE,测试其是否能完成python语言的编译,配置pip环境变量,打开电脑终端(cmd),输入pip,查看是否能使用配置的镜像下载python模块。
四、实验(上机)工作成果
1 安装好python,测试自带的IDLE编译器

图1 python自带的IDLE

2 配置pip环境变量,并配置默认下载镜像

图2 环境变量

图3 pip默认镜像配置

图4 测试
五、调试过程和解决问题办法:
(1)官网下载安装包可能会有点慢,这是因为要访问外网,如果想要下载快一点,可以换到其他国内的网站,可能会有恶意软件。
(2)配置pip环境时,可能会因为路径不对而导致配置失败,这时候就要返回环境变量页面检查路径了。
(3)如果不使用默认的下载镜像,pip会默认使用国外的镜像,就会出现下载模块失败的情况,所以需要配置默认的下载镜像,可到网上搜索,比如清华、淘宝等国内镜像。
五、结论与体会:
记得刚开始学python是大二上学期,到现在有一年了,说说当初自学安装python跟配置各种环境的体会,新手刚开始接触这个语言的时候,必须要跟着网上的各种教程一步步来完成,但是总结出来一句话,一定要耐心,没有耐心的话真的不适合编程,因为这过程中会碰到很多的困难,比如为什么安装软件失败,为什么配置环境不成功等等问题,刚开始会让你想放弃,所以一定要耐心去找是哪步出错了,然后去重新来一遍,这样就会越来越顺利,现在安装各种软件环境都比较顺利。

实验二、基础、 变量类型、 操作符、 分支和循环
一、实验内容:
在安装好的python环境上练习Python的基础、 变量类型、 操作符、 分支和循环,并将写到的代码运行出结果,学习每个Python
语法的使用方法,将有错误的代码进行调试,再次运行至成功。

二、实验时间:2021.3.25
三、完成的主要工作
按照PDF资料,进行编写代码,将代码在Python环境上面运行调试。学习Python的基础语法,从print函数、BIF内建函数,到字符串、注释的使用技巧,变量类型,下一步到条件分支,这里面包括if else、switch等,变量类型包括整型、浮点、e记法、布尔类型。接着到操作符、循环。
四、实验(上机)工作成果
4.1 猜数字

图1 猜数字

4.2 变量类型

图2 变量类型
4.3 if else条件语句

图3 if else

五、调试过程和解决问题办法:、
做字符串语法时,需要注意的是,字母可以使大小写,但是大小写是不同的,新手可能会认为大小写是一样的意思,不会影响到程序的运行,事实上是完全不同的意思,所以要养成习惯,注意比较每个语言的不同,这样就可以快速区分语言不同而程序运行的结果分别是怎么样的效果,这样对于编程学习有很大的帮助。

  1. 字符串可以用单引号或者是双引号
  2. 原始字符串:在字符串前面加上r,就不用加转义字符了
  3. 长字符串,多行,用三引号字符串
    还有就是在使用条件分支的时,比如if等,在Python里面的缩进时很重要的,用到这类的语法时,注意要缩进,否则报错。
    六、结论与体会:
    刚开始学Python,掌握它的基础语法,养成一种良好的编程习惯,对于后面的深入学习头很大的关联,所以在学习基础的时候,出错了就去反复的修改程序,多敲代码,这样时间久了就自然能减少出错的频率了。其实每种语言的基础语法都有很大的相似之处,在学习的过程中要学会去对比,这样在学习一门语言同时,还能复习另外的语言,久而久之,编程能力就得到了很大程度上的提升。
    实验三、元组和序列
    一、 实验内容:
    认识元组和序列,并了解他们在存储数据时候有什么差别,各自有什么优点缺点,如何通过代码,实现元组跟序列的储存。
    二、实验时间:2021.30
    三、完成的主要工作
    认识元组的基本属性,元组是由括号和逗号定义的,如果我们要修改元组,只能通过给其重新复赋值;列表、元组放在一起来学习是有道理的,我们发现他们有很多共同点:
  4. 都可以通过索引得到密一个元素
  5. 默认索引值总是从0开始的,python还支持负索引
  6. 有很多个共同的操作符,包括重复操作符、拼接操作符、成员关系操作符
  7. 可以通过切片来得到一个范围内的元素的集合
    测试序列的几个常用语法:
    list(iterable)把一个可迭代的对象转换为列表
    tuple([iterable])把一个可迭代的对象转换为元祖
    str(obj)把obj对象转换为字符串
    len(sub)返回sub的长度
    max()返回徐哦列或者参数集中的最大值
    min()返回最小值
    sum(iterable[,start=0])返回序列和可选参数的总和
    四、实验(上机)工作成果
    序列元组操作

五、调试过程和解决问题办法:
序列跟元组的操作相对简单,我们在编写程序验证元组跟序列的属性时,需要注意他们的格式,使用python自带的编辑器编写代码时,需要注意先声明变量,再使用,否则报错。
六、结论与体会:
在学习python的元组、序列等语法知识点时,要注意边学边动手,这部分的知识点虽然简单,但是也是容易混淆的,所以要多动手去敲代码,去体会他们各自的不同。
通过这部分的实验,我们可以对比出元组、序列的区别,首先,列表可以修改而元组不可以修改,例如王列表中通用append()添加元素,由于元组是不可修改的,所以不存在添加元素的问题,相反,他们之间也有很多相同点,比如元组和列表都是容器,包含了一些序列的对象,二者都是可以包含任意类型的元素甚至包含序列。

实验四、python实现爬楼梯算法
一、 实验内容:
问题描述:加入你正在爬楼梯。需要N步你才能到达楼顶。酶促你可以爬1或者2个台阶,你有多少种不同的方法爬到楼顶? N为正整数。
示例1:
输入:2
输出2:
解释:有两种办法可以爬到楼顶 1. 1阶+1阶 2. 2阶
示例2:
输入: 3
输出: 3
解释;有三种办法可以爬到楼顶 1. 1+1+1 2. 1+2 3. 2+1
二、实验时间:2021.4.5
三、完成的主要工作
通过题目给出的信息,求出一共有多少种办法来爬到楼顶,爬到楼顶。在不考虑时间跟空间复杂度的情况下,完成这个算法,以及在考虑时间跟空间复杂度之后,有多少种算法来实现这个算法题。
四、实验(上机)工作成果
不考虑时间跟空间复杂度的情况下:
这里使用阶乘思想:

使用动态规划来实现:思路:动态规划利用滚动数组的思想,压缩了DP空间

五、调试过程和解决问题办法:
解决该问题,首先我们从最简单的算法去考虑这个问题,这种算法题来源于生活中,不要把它复杂化,当我们找到一个最容易的方法去实现这个算法时,后续在代码优化方面就可以很快的解决这个算法来。这道题的思路是,在不重复之前的方法的前提下,一共有多少种方法去爬到楼顶,首先编写一个函数,返回爬完楼梯的方式数量,步骤的顺序很重要,使用嵌套+生成器函数实现尾递归优化。过程中,编写代码的时候,可能会出现方法重复或者直接死循环,这时候就要重新去思考是不是编写的方法不对,或者思路不对。
五、结论与体会:
通过这个问题的的思考以及程序的实现,体会到编程跟现实生活是密不可分的,生活中只要有数学的地方就肯定会涉及到编程,我们要学会通过不同的方向去思考同一个问题,在专业术语中叫做发散思维,通过搜集资料,从各个方面去考虑这个问题的解决思路,最终整合所有的方法,再选取最优的方法去解决问题。

实验五、单词规律
一、 实验内容:
问题描述:
给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。

这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。

示例1:
输入: pattern = “abba”, str = “dog cat cat dog”
输出: true
示例 2:
输入:pattern = “abba”, str = “dog cat cat fish”
输出: false
示例 3:
输入: pattern = “aaaa”, str = “dog cat cat dog”
输出: false
示例 4:
输入: pattern = “abba”, str = “dog dog dog dog”
输出: false
说明:
你可以假设 pattern 只包含小写字母, str 包含了由单个空格分隔的小写字母。
二、实验时间:2021.4.29
三、完成的主要工作
在本题中,我们需要判断字符与字符串之间是否恰好一一对应。即任意一个字符都对应着唯一的字符串,任意一个字符串也只被唯一的一个字符对应。在集合论中,这种关系被称为「双射」。想要解决本题,分析这道题str首先需要使用split拆分为列表,然后计算len(str)是否与len(pattern)相等,若不相等返回False。然后我们需要使用到hash表的匹配来交错赋值,最终计算答案是否匹配。
四、实验(上机)工作成果
代码编写及运行结果:

图1 代码结果
五、调试过程和解决问题办法:
编写程序过程中,方法有很多种,首先得明确一下题目要我们做什么,很明显,题目已经说得额很清楚了,就是用代码来实现一组有规律单词的模式是否符合模型abba,编程过程中要先把整体思路先理清楚,最后整合一下列出来的方法,其次就是,在第三个if条件判断语句中,word2ch跟ch2word的位置不能随意变换,一个位置变的话,对应的其他单词位置也要跟着变换,否则这个程序就实现不了根据一定规律去匹配到单词了,这就达不到题目的要求了。所以在最开始的分析的时候就要先理清楚每个地方要实现什么判断。
六、结论与体会:

其实这道题,我们还可以利用哈希表记录每一个字符对应的字符串,以及每一个字符串对应的字符。然后我们枚举每一对字符与字符串的配对过程,不断更新哈希表,如果发生了冲突,则说明给定的输入不满足双射关系。
在实际代码中,我们枚举 \textit{pattern}pattern 中的每一个字符,利用双指针来均摊线性地找到该字符在 \textit{str}str 中对应的字符串。每次确定一个字符与字符串的组合,我们就检查是否出现冲突,最后我们再检查两字符串是否比较完毕即可。