1. 文件操作
请通过键盘依次输入每位同学的学号、姓名、性别、身高、体重,并保存在c:\student.txt文件中,每位同学一行。程序运行过程如下:
学号: 100
姓名: zhangsan
性别: 男
身高: 175
体重: 72
学号: 200
姓名: lisi
性别: 女
身高: 168
体重: 55
保存之后的文件内容如下:
100 zhangsan 男 175 72
200 lisi 女 168 55
请通过键盘输入学号,在刚才保存的c:\student.txt文件中,查询相应的学生,输出ta的身高。运行过程如下:
学号: 100
175

def select():with open('info.txt','r') as f:no=input('查询的学号')content=f.readlines()for each in content:temp=each.split()if no==temp[0]:print(temp[3])break
def add():with open('info.txt','a') as f:myinput=[]info=['学号','姓名','性别','身高','体重']for i in range(5):myinput.append(input('%s'%info[i]))for each in myinput:f.write(each+' ')f.write('\n')

2. 请把第1题修改成使用sqlite3数据库。具体来说就是这样: 首先在sqlite3数据库中创建学生信息表,包括学号、姓名、性别、身高、体重五个字段。
然后运行你的程序,过程与上次一样,只是保存的时候通过insert语句保存到刚刚创建的数据库中。
查询过程也类似,通过执行select语句实现查找功能

import sqlite3def create():conn=sqlite3.connect('test.db')cu=conn.cursor()cu.execute('create table stuinfo if not exit(no varchar(10) primary key,name varchar(20),sex varchar(20),height varchar(20),weight varchar(20))')cu.close()conn.commit()conn.close()
def add():conn=sqlite3.connect('test.db')cu=conn.cursor()myinput=[]info=['学号','姓名','性别','身高','体重']for i in range(5):myinput.append(input('%s'%info[i]))cu.execute('insert into stuinfo values(?,?,?,?,?)',(myinput[0],myinput[1],myinput[2],myinput[3],myinput[4]))cu.close()conn.commit()conn.close()
def select(no):conn=sqlite3.connect('test.db')cu=conn.cursor()a=cu.execute('select height from stuinfo where id=?',(no,))vlaue=a.fetchall()print(vlaue[0][0])cu.close()
conn.close()

3. 请编写myqq即时聊天脚本。具体来说,就是两个同学一组,各自在自己的电脑上面运行python脚本,实现类似于qq的聊天功能。
提示1:使用udp协议
提示2:两个同学的程序是不一样的,一个是udp的server端,一个是udp的client端

客户端:

import socketclient=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
while True:msg=input('输入要发送的内容:')server_address=('127.0.0.1',9999)client.sendto(msg.encode(),server_address)receive_data,sender_address=client.recvfrom(1024)print('接收到了%s传来的数据:%s'%(sender_address,receive_data.decode()))

服务器端:

import sockets=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
address=('127.0.0.1',9999)
s.bind(address)
while True:data,addr=s.recvfrom(1024)print('收到的%s的数据:%s'%(addr,data.decode()))msg=input('输入发送的信息')s.sendto(msg.encode(),address)

4. 使用tcp协议编写满足如下要求的服务器端和客户端代码,客户端向服务器端发送以下两种格式的请求数据:
格式一:
GET filename
例如
GET 1.txt
服务器收到这种格式的请求之后,读取c:\homepages\目录下面指定filename文件(例如c:\homepage\1.txt)的内容,并按照如下约定返回响应数据:
如果文件存在,则返回两行内容:
200
c:\homepage\1.txt文件的内容
如果文件不存在,则返回下面两行内容:
404
file not found
格式二:
POST filename xxxxxx
服务器端收到这种请求之后,在c:\homepages\目录下面以指定filename创建文件,并写入xxxxxx的内容,如果文件存在,则追加写入。返回给客户端的数据如 下:
200
写入长度

客户端:

import sockets=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(('127.0.0.1',54321))
while True:temps1=input('发送内容')if temps1=='end':breaks.send(temps1.encode())data=s.recv(1024).decode()print(data)
s.send(b'exit')
s.close()

服务器端:

import socket
import threading
import timedef tcplink(sock,addr):while True:data=sock.recv(1024)time.sleep(1)if not data or data.decode()=='exit':breakelif data.decode()[0:4]=='GET ':templ1=[]templ1=data.decode().split()try:f=open(templ1[1],'r')sock.send(b'200\n'+templ1[1].encode()+f.read().encode())f.close()except OSError:sock.send(b'404\nfile not found')elif data.decode()[0:5]=='POST ':templ1=[]templ1=data.decode().split()f=open(templ1[1],'a')temp1=f.write(templ1[2])f.close()temps1=str(temp1)sock.send(b'200\n'+temps1.encode())else:sock.send('请输入正确格式请求'.encode())sock.close()s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(('',54321))
s.listen(5)
while True:sock,addr=s.accept()t=threading.Thread(target=tcplink,args=(sock,addr))t.start()

5. 使用python编程实现上述过程(访问https://www.51job.com/,在搜索框输入关键字:python java,用右边的加号选择北京、上海、广州、深圳四个城市),不需要使用socket编程来做,使用书上提到的request库或者其它库都可以。

6. 网页返回的内容是html格式的,下面是经过简化之后的部分页面内容:

北京-朝阳区
1.5-2万/月
10-16
深圳-龙华新区
1.5-2.5万/月
10-16
北京-海淀区
0.8-1.5万/月
10-16
广州
1.5-2万/月
10-16
可以尝试用字符串比对的方式取出里面的数据部分,结果如下:
北京-朝阳区
1.5-2万/月
10-16
深圳-龙华新区
1.5-2.5万/月
10-16
北京-海淀区
0.8-1.5万/月
10-16
广州
1.5-2万/月
10-16

7. 了解正则表达式,使用正则表达式解决6的问题。

8. 21.修改18的代码,分别获取关键字是python、java,右边选择北京、上海、广州、深圳四个城市时前10页的招聘数据,用正则表达式解析获取的数据,按照以下格式分别把数据存储在文件和数据库中

关键字 工作地点 薪资min 薪资max
java 上海 1.5 1.6
java 深圳 1.5 3
java 上海 0.8 1
python 北京 1.5 2.5
python 广州 1.5 2.2
提示:网页上的数据有两处需要处理:
一是工作地点,原始内容可能是上海-浦东新区,只保留前面的城市名上海
二是薪资,原始内容是1.2-1.8万/月或10-20万/年,把单位换算成一致的,并且把最小值和最大值分开存放

import urllib.request
import re
import sqlite3def get_content(page, key):url = 'https://search.51job.com/list/010000%252C020000%252C030200%252C040000,000000,0000,00,9,99,' + key + ',2,' + str(page) + '.html'a = urllib.request.urlopen(url)html = a.read().decode('gbk')lst = re.findall(r'<span class="t3">(北京|上海|广州|深圳).*?</span>\s+<span class="t4">(\d+\.?\d?)-(\d+\.?\d?)(万|千)/(年|月)</span>', html)return lstconn = sqlite3.connect('51.db')
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS jobs(key text, addr text, min float, max float)''')
c.execute('''delete from jobs''')
conn.commit()with open('51.txt', 'w') as f:f.write('%s\t%s\t%s\t%s\n' % ('key','addr','min','max'))for key in ('python', 'java'):for each in range(1, 11):for items in get_content(each, key):min = float(items[1])max = float(items[2])if items[3] == "千":min /= 10max /= 10if items[4] == "年":min /= 12max /= 12f.write('%s\t%s\t%s\t%s\n' % (key, items[0], round(min, 2), round(max, 2)))c.execute("INSERT INTO jobs VALUES (?,?,?,?)", (key, items[0], round(min, 2), round(max, 2)))
conn.commit()
conn.close()if __name__ == '__main__':lst = get_content(1, 'python')
print(lst)

9. 分析爬取下来的51job上的信息,给出java 最小工资=10000,应该去哪个城市,利用贝叶斯分类

方法一:pandas:

import pandas as pd
df = pd.read_csv('51.txt', sep='\t')

# 计算类别的先验概率

pc = df['addr'].value_counts() / df['addr'].size

# 计算每个特征属性条件概率

pa = pd.crosstab(df['addr'], df['key'], margins=True).apply(lambda x:x/x[-1], axis=1)

# 通过样本计算出均值和方差,也就是得到正态分布的密度函数。有了密度函数,就可以把值代入,算出某一点的密度函数的值

import numpy as np
df2 = df.groupby('addr').agg([np.mean, np.var])
df2['x'] = 1from math import pi, exp, sqrt
def f(x, mean, var):return exp(-(x-mean)**2/(2*var))/sqrt(2*pi*var)df2['p_x_min']=df2[['min','x']].apply(lambda x: f(x['x'], x['min']['mean'], x['min']['var']), axis=1)
df2['p_x_max']=df2[['max','x']].apply(lambda x: f(x['x'], x['max']['mean'], x['max']['var']), axis=1)(df2['p_x_min']*pc*pa['java']).argmax()方法二:
from numpy import genfromtxt
x = genfromtxt('51.txt', delimiter='\t', skip_header=True, usecols=(2,3))
x.shape
y = genfromtxt('51.txt', delimiter='\t', skip_header=True, usecols=(1), dtype=str)
y.shape
import numpy as np
np.unique(y)
from sklearn.naive_bayes import GaussianNB
clf = GaussianNB()
#拟合数据
clf.fit(x, y)
print(clf.predict([[0.8, 1.2]]))
print(clf.predict_proba([[0.8, 1.2]]))
print(clf.predict_log_proba([[0.8, 1.2]]))

10.线性回归解决给出身高生成体重问题:y=ax+b
用到的代码和数据hwSimulate.py是用于生成模拟数据的,大家运行一下会生成一个hw.txt
linear_regression.py包括自己实现的代码和用sklearn实现的
大家看着再学习一下

hwSimulate.py:

import random
with open('hw.txt', 'w') as f:f.write('height\tweight\n')for i in range(100):height = random.randint(1600, 1900) / 10weight = (height - 100) * 0.9 + random.randint(-50, 50) / 10f.write('%.1f\t%.1f\n' % (height, weight))linear_regression.py:
__author__ = 'DivinerShi'
import numpy as np
import matplotlib.pyplot as pltdef compute_error(b,m,data):totalError = 0#Two ways to implement this#first way# for i in range(0,len(data)):#     x = data[i,0]#     y = data[i,1]#     totalError += (y-(m*x+b))**2# print('(%f*%f+%f)=%f,y=%f,loss=%f,totalError=%f' % (m,x,b,(m*x+b),y,(y-(m*x+b))**2,totalError))#second wayx = data[:,0]y = data[:,1]totalError = (y-m*x-b)**2totalError = np.sum(totalError,axis=0)return totalError/float(len(data))def optimizer(data,starting_b,starting_m,learning_rate,num_iter):b = starting_bm = starting_m#gradient descentfor i in range(num_iter):#update b and m with the new more accurate b and m by performing# thie gradient stepb,m =compute_gradient(b,m,data,learning_rate)if i%100==0:print('iter {0}:error={1}'.format(i,compute_error(b,m,data)))return [b,m]def compute_gradient(b_current,m_current,data ,learning_rate):b_gradient = 0m_gradient = 0N = float(len(data))#Two ways to implement this#first way# for i in range(0,len(data)):#     x = data[i,0]#     y = data[i,1]#     #computing partial derivations of our error function#     #b_gradient = -(2/N)*sum((y-(m*x+b))^2)#     #m_gradient = -(2/N)*sum(x*(y-(m*x+b))^2)#     b_gradient += -(2/N)*(y-((m_current*x)+b_current))#     m_gradient += -(2/N) * x * (y-((m_current*x)+b_current))#     # print('m_current=%f,b_current=%f,N=%f,x=%f,y=%f,y-((m_current*x)+b_current)=%f, b_gradient=%f, m_gradient=%f' % (m_current, b_current, N, x, y, y-((m_current*x)+b_current), b_gradient, m_gradient))#Vectorization implementationx = data[:,0]y = data[:,1]b_gradient = -(2/N)*(y-m_current*x-b_current)b_gradient = np.sum(b_gradient,axis=0)m_gradient = -(2/N)*x*(y-m_current*x-b_current)m_gradient = np.sum(m_gradient,axis=0)#update our b and m values using out partial derivationsnew_b = b_current - (learning_rate * b_gradient)new_m = m_current - (learning_rate * m_gradient)return [new_b,new_m]def Linear_regression():# get train data# data =np.loadtxt('data.csv',delimiter=',')data =np.loadtxt('hw.txt',delimiter='\t',skiprows=True)#define hyperparamters#learning_rate is used for update gradient#defint the number that will iteration# define  y =mx+blearning_rate = 0.000001initial_b =0.0initial_m = 0.0num_iter = 10000#train model#print b m errorprint('initial variables:\n initial_b = {0}\n intial_m = {1}\n error of begin = {2} \n'\.format(initial_b,initial_m,compute_error(initial_b,initial_m,data)))#optimizing b and m[b ,m] = optimizer(data,initial_b,initial_m,learning_rate,num_iter)#print final b m errorprint('final formula parmaters:\n b = {1}\n m={2}\n error of end = {3} \n'.format(num_iter,b,m,compute_error(b,m,data)))#plotttingx = data[:,0]y = data[:,1]y_predict = m*x+bplt.scatter(x, y, color = 'blue')plt.plot(x,y_predict,'k-', color = 'red', linewidth = 4)# plt.show()from sklearn import linear_modelregr = linear_model.LinearRegression()regr.fit(x.reshape(-1,1), y)print(regr.coef_, regr.intercept_)plt.scatter(x, y, color = 'blue')plt.plot(x, regr.predict(x.reshape(-1,1)), color = 'orange', linewidth = 4)plt.show()def lr_by_sklearn():from sklearn import linear_modeldata =np.loadtxt('hw.txt',delimiter='\t',skiprows=True)x = data[:,0]y = data[:,1]regr = linear_model.LinearRegression()regr.fit(x.reshape(-1,1), y)print(regr.coef_, regr.intercept_)# import pandas as pd# data = pd.read_csv('hw.txt', sep='\t')# regr.fit(data['height'].values.reshape(-1,1), data['weight'])# plt.scatter(data['height'], data['weight'], color = 'blue')# plt.plot(data['height'], regr.predict(data['height'].values.reshape(-1,1)), color = 'orange', linewidth = 4)# plt.show()plt.scatter(x, y, color = 'blue')plt.plot(x, regr.predict(x.reshape(-1,1)), color = 'orange', linewidth = 4)plt.show()if __name__ =='__main__':Linear_regression()# lr_by_sklearn()

PS:
https://pythonprogramming.net/introduction-deep-learning-python-tensorflow-keras/
神经网络的例子

python基础代码汇总相关推荐

  1. python基础知识资料-Python基础知识汇总

    原标题:Python基础知识汇总 1.Anaconda的安装 百度Anaconda的官网,下载左边的Python3.X版本 然后是设置路径,最后给出Jupyter notebook.具体参考: 猴子: ...

  2. python基础代码大全博客园,python基础代码大全解释

    python必背入门代码是什么? python必背代码是:defnot_empty(s):returnsandlen(s.strip())>0#returnsands.strip()#如果直接单 ...

  3. Python基础知识汇总和应用示例

    Python基础知识汇总和应用示例 文章内容 链接 python库下载网站 python库下载网站 python读取csv文件 python读取csv文件 Python3基础知识:三元表达式.元祖.s ...

  4. python基础代码大全-python零基础入门命令方式汇总大全,快速恶补你的Python基础...

    原标题:python零基础入门命令方式汇总大全,快速恶补你的Python基础 无意中浏览到这篇来自大牛的分享,总结的很全面,我重新排版下放在这里,希望能帮助到大家.在此十分感谢原作者! 在开始之前还是 ...

  5. python基础代码大全-Python基础汇总

    测试代码 编写函数和类时,还可以编写测试函数,通过测试可以确定代码面对各种输入都能正常工作.在程序中添加新代码时,也可以对其进行测试,确定他们不会破坏程序的既有程序.要经常测试模块. 通过python ...

  6. Python零基础入门,纯干货!【Python基础知识点汇总整理】

    目录 第一章 认识Python.Python常用集成开发环境PyCharm 一.认识 Python 01. Python 的起源 1.2 Python 的设计目标 1.3 Python 的设计哲学 0 ...

  7. python基础代码事例-推公式到写代码-python基础

    推公式到写代码-python基础 希望你能像看小说看杂文一样的心情看完这一系列,因为学习不总是枯燥的,希望像聊天一样娓娓道来. 专辑系列的阅读对象是那些懂些高等数学和线性代数,但没有经过编码训练的人. ...

  8. python基础代码的含义_Python基础学习篇

    原标题:Python基础学习篇 1.编码 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是unicode 字符串. 当然你也可以为源码文件指定不同的编码:# -*- codi ...

  9. python基础代码大全-Python字典及基本操作(超级详细)

    字典也是 Python 提供的一种常用的数据结构,它用于存放具有映射关系的数据. 比如有份成绩表数据,语文:79,数学:80,英语:92,这组数据看上去像两个列表,但这两个列表的元素之间有一定的关联关 ...

最新文章

  1. pandas.DataFrame.groupby
  2. SpringBoot笔记:SpringBoot2.3集成Kafka组件配置
  3. SAP Spartacus cxFocus单元测试Expected null to equal -1的错误分析
  4. ros构建机器人运动学模型_ROS入门学习之八机器人综合应用
  5. 【转】常用的正则表达式
  6. java 排序经典算法,经典排序算法(java版)
  7. 基于DEAP库的python进化算法-5.遗传算法求解TSP问题的改进
  8. 如何实现微信扫码登录--OAuth2
  9. ps学习——基本工具
  10. [租房]刚步入社会的小萌新,休想坑小妹妹,安排!
  11. GPS定位准不准 决定定位精度的诸多因素
  12. 互联网汽车信息娱乐系统基础框架
  13. java根据HashMap中的值将其元素排序
  14. 软件工程到底是学啥的?就业前景咋样?
  15. 计算机没去考 禁考一年,自考报名不去考会禁考吗 弃考有什么影响
  16. [转载] 信息系统项目管理师视频教程——25 战略管理
  17. Ubuntu系统的基础操作和使用
  18. 【树莓派】树莓派调光
  19. PicGO搭配vika,好用的图床
  20. 跟我一起云计算(5)——Shards

热门文章

  1. 计算机选购配置项目活动,BIM电脑配置专辑之如何选择一台项目专业级别笔记本电脑...
  2. 【系统分析师】企业信息化战略与实施
  3. 公司企业常见部门名称英文
  4. 干货!8套H5 App完整源码!果断收藏!
  5. 什么是JDBC,JDBC如何使用?
  6. 小程序开发遇见的常见问题
  7. Pytorch基础——torch.randperm
  8. java封装怎么写_java中封装怎么写
  9. 系统性能监控工具ssar实例精选 | 龙蜥SIG
  10. CentOS7的Tiger VNC设置