考核 纠错反思

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

经过较长时间的学习,有了长进,但是在考核中还是遇到了不少问题


一、考核内容

python,正则表达式,csv文件与matplotlib

二、题目

1.解答题

1、简述你所理解的机器学习,并说明目前学过的知识与机器学习的关系。(10 points)
答案:
参考回答方向:数据处理及其在机器学习中的地位。数据处理是机器学习的前期重要步骤,机器学习就是从数据中学到“知识”。数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。
2、关于正则表达式,回答以下问题:(5 × 4 = 20 points)

正则表达式的概念及知识点

正则表达式是由一些具有特殊含义的字符组成的字符串,多用于查找、替换符合规则的字符串。在表单验证、Url映射等处都会经常用到。

1.元字符

代码作用
.匹配除换行符以外的任意字符
\w匹配字母或数字或下划线或汉字
\s匹配任意的空白符
\d匹配数字
\b匹配单词的开始或结束
^匹配字符串的开始(在集合字符里[^a]表示非(不匹配)的意思
$匹配字符串的结束
[1-2]匹配1~2的整数

2.反义字符

反义字符:多用于查找除某个字符以外其他任意字符均可以的情况

\W 匹配除字母、数字、下划线、汉字以为的字符形如 +,-,*

\S 匹配除空格以外的任意字符形如:1,* ,)

[^abcde]匹配除abcde以为的其他字符 如 e,f,g,h

限定字符多用于重复匹配次数
*重复零次或更多次
+重复一次或更多次
重复零次或一次
{n} 重复n次

{n,}重复n次或更多次
{n,m} 重复n到m次

正则表达式的题目

1)什么是正则表达式,它有什么作用;

答案:
正则表达式是一个特殊的字符序列,能方便的检查一个字符串是否与某种模式匹配。正则表达式一定是对字符串进行操作,方便于有效数据信息的提取。

2). * + ? 分别是什么含义,如果将他们进行组合呢?

答案
.任意字符 *重复零次或更多次
+重复一次或更多次
? 重复零次或一次(非贪婪匹配)
*? 重复任意次,但尽可能少重复
+? 重复 1 次或更多次,但尽可能少重复
?? 重复 0 次或 1 次,但尽可能少重复

3)python re 模块中,findall、searchmatch 有什么区别;
答案
findall:返回所有满足匹配条件的结果, 放在列表里
search:会在字符串内查找模式匹配, 只到找到第一个匹配然后返回一个包含匹配信息的对象, 该对象可以通过调用 group() 方法得到匹配的字符串, 如果字符串没有匹配,则返回 None
match:同 search, 不过尽在字符串开始处进行匹配

4)写出匹配手机号的正则表达式(手机号共 11 位,且以 13、14、15、18 开头)
答案:∧(13|14|15|18)[0-9]{9}$

3、python 和 C 语言的区别和优缺点,它们分别适用于什么场合。(10 points)

答案
参考回答方向:
翻译方式来看,python 是解释型语言,不需要预先编译,边解释边执行;C 是编译型语言,需要通过预先编译变成机器语言,再执行,所以 C 执行语言效率比 python高;
C 语言是面向过程的,python 可以面向对象;
C 语言更适合底层开发,直接与操作系统打交道;python 更适合于脚本编写、数据科学、机器学习等方向的应用(库函数的强大功能)。

面向对象

4、关于面向对象,回答以下问题:(5 + 5 + 4 = 14 points)
(1)什么是面向对象(面向对象的特性),它与面向过程有什么区别;
答案
参考回答方向:

  1. 一切事物皆对象,通过面向对象的方式,将现实世界的事物抽象成对象,现实世界中的关系抽象成类、继承,帮助人们实现对现实世界的抽象与数字建模;
  2. 主要思想是把构成问题的各个事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述一个事物在整个解决问题的步骤中的行为;
  3. 三大特性:
    封装(封装是将过程和数据包围起来, 数据只能通过定义的接口访问)
    继承(建立一个新的派生类,从一个或多个先前定义的类中继承数据和函数,可以重新定义或加进新数据和函数,从而建立了类的层次或等级)
    多态(同一操作作用与不同类的实例,将产生不同的执行结果,即不同类的对象收到相同的消息时,将得到不同的结果)

(2)类、对象、实例、实例化之间的关系;

答案

  1. 一切皆为对象,类是一种类型,一种更高层次的抽象
  2. 实例是根据类创建出来的一个一个对象
  3. 用类创建对象的过程就是实例化

(3)说明”__init__” 函数的作用,一定要有这个函数吗?
答案
该函数为构造函数,类实例化时会自动调用,一般用于参数的初始化;可以没有这个函数(如果不需要参数初始化的话)。

5、关于 csv 操作,回答以下问题:(4 × 2 = 8 points)
(1)csv 文件一定是逗号分隔的吗?pandas 如何读取 csv 文件,读入后是什么格式?
答案:

  1. csv:逗号分隔值(Comma-Separated Values)有时也称为字符分隔值,因为分隔字符也可以不是逗号。其文件以纯文本形式存储表格数据(数字和文本)
  2. pandas 通过 read_csv() 函数读入 csv 文件,读入后是 DataFrame 格式。

(2)写出关键语句:将以逗号 ( , ) 分隔的文件 test.csv 读入,并将分隔符改为横线 (-),覆盖原文件。
答案

import pandas as pd
data = pd.read_csv('test.csv', sep=',', header=None)
data.to_csv('test.csv', sep='-', index=False , header=False)

6、python 中,如何对字典、列表、字符串之间进行两两转换?(10 points)
[’a’, ’b’, ’c’] ⇐⇒ ’abc’
k = [’a’, ’b’, ’c’], v = [1, 2, 3] ⇐⇒ {’a’: 1, ’b’: 2, ’c’: 3}
{’a’: 1, ’b’: 2, ’c’: 3} ⇐⇒ ’{”a”:1, ”b”:2, ”c”:3}’

# 列 表 转 字 符 串
''.join(['a', 'b', 'c']) # 'abc'
#字 符 串 转 列 表
list('abc') # ['a', 'b', 'c']
# 两 个 列 表 转 成 字 典
k = ['a', 'b', 'c']
v = [1, 2, 3]
dict(zip(k, v)) # {'a': 1, 'b': 2, 'c': 3}
#字 典 转 列 表
d = {'a': 1, 'b': 2, 'c': 3}
list(d.keys()) # ['a', 'b', 'c']
list(d.values()) # [1, 2, 3]
# 字 符 串 转 字 典
import json
s = '{"a":1, "b":2, "c":3}'
json.loads(s) #{'a': 1, 'b': 2, 'c': 3}
# 字 典 转 字 符 串
import json
d = {'a': 1, 'b': 2, 'c': 3}
json.dumps(d) # '{"a": 1, "b": 2, "c": 3}'
# str(d) 也 能 实 现

2.代码题

在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-100,100)
y1=x**2+18
plt.subplot(1,1,1)
plt.plot(x, y1,'b-',label='f(x)')
plt.xlabel('x')
plt.ylabel('y')
plt.title('picture')
plt.legend()
plt.show()


在这里插入图片描述

在这里插入图片描述

def f(x):
    a=1
    for i in range(2,int(x**0.5)+1):
        if x%i==0:
            a=0
    return a
c=1
b=int(input())
if f(b)==0:
    print('0')
else:
    for i in range(2,b):
        if f(i)==1:
            c+=1
    print(c)

在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(1,4)
y1,y2,y3,y4= np.sin(x),np.cos(x),np.tan(x),np.cos(x)*np.cos(x)
plt.subplot(2,2,1)
plt.plot(x, y1,'b-', label='sinx')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.subplot(2,2,2)

plt.plot(x, y2, 'y-',label='cosx')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.subplot(2,2,3)

plt.plot(x, y3, 'g-',label='tanx')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.subplot(2,2,4)

plt.plot(x, y4, 'r-',label='cosx^2')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.show()

在这里插入图片描述

在这里插入图片描述

c=[]
d=[]
a=list(input().split())
b=list(input().split())
for i in b:
    d.append(i.lower())
for i in a:
    c.append(i.lower())
for i in range(0,len(c)):
    if c[i] not in d:
        print(a[i],end=' ')

附加题

1、说明 #include<filename.h> 和 #include”filename.h” 的区别。
答案:

  1. 对于 #include<filename.h>, 编译器先从标准库路径开始搜索 filename.h,使得系统文件调用比较快;
  2. 对于 #include”filename.h”,编译器先从用户的工作路径开始搜索 filename.h,后去寻找系统路径,使得自定义文件较快。

2、说明 with 语句的原理,以及 with 和文件操作结合的好处。
答案:
上下文管理器(Context Manager):支持上下文管理协议的对象,这种对象实现了__enter__()__exit__() 方法。上下文管理器定义执行 with 语句时要建立的运行时上下文,负责执行 with 语句块上下文中的进入与退出操作。通常使用 with 语句调用上下文管理器,也可以通过直接调用其方法来使用。对于语句:with EXPR as VAR: BLOCK

  1. 执行 EXPR,生成上下文管理器 context_manager;
  2. 获取上下文管理器的 __exit__() 方法,并保存起来用于之后的调用;
  3. 调用上下文管理器的 __enter__() 方法;如果使用了 as 子句,则将 __enter__() 方法
    的返回值赋值给 as 子句中的 VAR;
  4. 执行 BLOCK 中的表达式;
  5. 不管是否执行过程中是否发生了异常,执行上下文管理器的 __exit__() 方法,__exit__() 方法负责执行“清理”工作。
    对于 with 与文件操作的结合,可以自动执行 __exit__() 方法关闭文件,防止编程人员忘
    记关闭。若文件打开后未使用 close() 进行关闭,则被打开的文件会一直被占用,其它进
    程无法对该文件进行读写,直到该程序运行结束。

3、分别简述你所了解的机器学习算法
在这里插入图片描述

总结

感觉平时对一些基础的概念性的东西了解还不是特别深,就是自己感觉自己懂了,但是实战的时候又发现有很多不会的,以后要重视这方面的学习,还有再每次实战后总结经验,继续努力

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值