实操题

1.Redis数据库操作

阅读下列说明及运行结果, 打开“考生文件夹\10002”文件夹中的素材,阅读代码,在空(1)至(10)处填写正确代码,操作完成后保存素材。

该题是关于Python操作Redis数据库的题目,包含pyredis.py文件,题目主要考察通过Python连接Redis数据库,并进行数据相关操作。

首先需要在命令行开启redis的服务,打开cmd,输入命令redis-server,敲回车。然后再运行补全后的pyredis.py文件。

【运行结果】

问题

打开“考生文件夹\10002”文件夹中的“pyredis.py”文件,根据注释提示,在空(1)至(10)处补全代码,完成后保存该文件。

【注意】除删除(1)至(10)填入正确的内容外,不能修改或删除素材中其它任何内容。

1.正确答案:ConnectionPool
2.正确答案:Redis
3.正确答案:password
4.正确答案:get
5.正确答案:%
6.正确答案:self.register
7.正确答案:self.r
8.正确答案:!=
9.正确答案:==
10.正确答案:self.regis_login()

pyredis.py

import redis
​
​
class RegisterLogin:def __init__(self):# 创建连接池对象,连接数据库1pool = redis.ConnectionPool(host='127.0.0.1', port=6379, db=1, decode_responses=True)# 创建连接对象self.r = redis.Redis(connection_pool=pool)
​def register(self, user_name, password):"""注册逻辑"""self.r.set(user_name, password)print("注册成功")
​def regis_login(self):# 从键盘输入要做的操作,1表示注册,2表示登录op = input("请输入你要做的操作(1表示注册,2表示登录):")if op == '1':# 输入用户名user = input("请输入用户名:")# 根据输入的用户名进行查询check_user = self.r.get(user)# 如果查到有内容,则表明别人已经注册if check_user:print("用户%s已存在" % user)else:# 输入密码passwd = input("请输入密码:")# 将用户名和密码进行注册self.register(user, passwd)elif op == '2':# 输入用户名u = input("请输入用户名:")# 输入密码p = input("请输入密码:")# 根据用户名查询密码select_p = self.r.get(u)# 如果查到的结果为None,表明用户名不存在if select_p is None:print("用户名不存在")# 如果查到的密码不等于输入的密码,说明当前输入的密码错误elif select_p != p:print("密码错误")# 如果查到的密码等于输入的密码,则登录成功elif select_p == p:print("登录成功")else:print("操作不正确")
​def run(self):self.regis_login()
​
​
if __name__ == "__main__":rl = RegisterLogin()rl.run()

2.selenium链家爬虫

阅读下列说明及运行结果, 打开“考生文件夹\10004”文件夹中的素材,阅读代码,在空(1)至(10)处填写正确代码,操作完成后保存素材。

该题是关于selenium的题目,包含lianjia.py文件,题目主要考察通过selenium抓取链家二手房的数据并存入CSV文件等操作。

【运行结果】

代码补全后,运行lianjia.py文件,结果如下图所示。

生成的CSV文件如下图所示。

问题

打开“考生文件夹\10004”文件夹中的“lianjia.py”文件,根据注释提示,在空(1)至(10)处补全代码,完成后保存该文件。

【注意】除删除(1)至(10)填入正确的内容外,不能修改或删除素材中其它任何内容。

1.正确答案:webdriver.Chrome()
2.正确答案:get
3.正确答案:'w'
4.正确答案:writeheader()
5.正确答案:switch_to
6.正确答案:execute_script
7.正确答案:split('|')
8.正确答案:append
9.正确答案:writerows
10.正确答案:click()

lianjia.py

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.common.by import By
import csv
​
​
class LianJiaSpider:def __init__(self):self.url = "https://cd.lianjia.com/"# 创建浏览器对象self.browser = webdriver.chrome()# 这里要设置窗口最大化,不然待会点不到下一页这个按钮self.browser.maximize_window()# 发送请求self.browser.get(self.url)# 以写模式打开文件,得到文件对象self.f = open('lianjia.csv', 'w', encoding='utf-8', newline='')# 得到字典写入的writerself.writer = csv.DictWriter(self.f, ["name", 'area', 'layout', 'square', 'direction', 'deco', 'floor', 'year', 'structure', 'total_price', 'per_price'])# 写入表头self.writer.writeheader()
​def __del__(self):self.browser.close()
​def get_html(self):self.browser.find_element_by_link_text('二手房').click()# 切换窗口self.browser.switch_to.window(self.browser.window_handles[1])
​def parse_one_page(self):# 等待下一页那个元素刷新出来WebDriverWait(self.browser, 10).until(expected_conditions.presence_of_element_located((By.XPATH, '//div[@class="page-box house-lst-page-box"]/a[last()]')))# 这里将页面拉到底部,否则点不到下一页这个按钮self.browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')# 拿到所有房屋的li节点li_list = self.browser.find_elements_by_xpath('//ul[@class="sellListContent"]/li')print(li_list)data = []for li in li_list:try:item = {}# 名字item['name'] = li.find_element_by_xpath('.//div[@class="positionInfo"]/a[1]').text# 商圈item['area'] = li.find_element_by_xpath('.//div[@class="positionInfo"]/a[2]').text# 房屋信息house_info = li.find_element_by_xpath('.//div[@class="houseInfo"]').text# 处理房屋信息house_info_list = house_info.split('|')# 户型item['layout'] = house_info_list[0].strip()# 面积item['square'] = house_info_list[1].strip()# 朝向item['direction'] = house_info_list[2].strip()# 装修item['deco'] = house_info_list[3].strip()# 楼层item['floor'] = house_info_list[4].strip()# 年代item['year'] = house_info_list[5].strip()# 结构item['structure'] = house_info_list[6].strip()# 总价total_price = li.find_element_by_xpath('.//div[@class="totalPrice totalPrice2"]').textitem['total_price'] = total_price.replace('\n', '').strip()print(total_price)# 均价item['per_price'] = li.find_element_by_xpath('.//div[@class="unitPrice"]/span').text.strip()print(item)data.append(item)except Exception:continue# 将数据存入CSV文件self.writer.writerows(data)
​def get_all_page(self):self.get_html()while True:# 解析一页数据self.parse_one_page()# 如果找不到下一页,就退出if self.browser.page_source.find("下一页") == -1:return# 找到下一页这个按钮next_btn = self.browser.find_element_by_xpath('//div[@class="page-box house-lst-page-box"]/a[last()]')# 点击该按钮next_btn.click()
​def run(self):self.get_all_page()
​
​
if __name__ == "__main__":spider = LianJiaSpider()spider.run()

3.个人存款计算器

阅读下列说明及运行结果, 打开“考生文件夹\10001”文件夹中的素材,阅读代码,在空(1)至(10)处填写正确代码,操作完成后保存素材。

该题是关于Python基础语法的题目,包含deposit_calc.py文件,题目主要考察时间模块、运算符、if语句、类型转换等操作。

【运行结果】

问题

打开“考生文件夹\10001”文件夹中的“deposit_calc.py”文件,根据注释提示,在空(1)至(10)处补全代码,完成后保存该文件。

【注意】除删除(1)至(10)填入正确的内容外,不能修改或删除素材中其它任何内容。

1.正确答案:center
2.正确答案:%%
3.正确答案:split
4.正确答案:mktime
5.正确答案:not
6.正确答案:int
7.正确答案:+=
8.正确答案:*
9.正确答案:dates
10.正确答案:format

deposit_calc.py

​
# 导入时间模块
import time
​
# 初始化年利率值为0.05
rate = 0.05
# 居中输出软件标题
print("个人存款计算器".center(15))
print("-" * 20)
# 居左输出储蓄方式
print("储蓄方式:活期".ljust(20))
# 输出起存日期
print("起存日期:" + time.strftime('%Y-%m-%d'))
# 输出年利率
print("利率为:%.2f%%" % (rate * 100))
# 输入预计取款日期
days = input("取款日期(格式为2020-8-12):")
​
# 遇错处理程序,判断输入日期是否符合日期格式
try:# 判断预计取款日期格式是否符合要求time.strptime(days, "%Y-%m-%d")# 通过'-'分割取款日期s_day = days.split('-')# 构造9个元素的时间元组m_time = (int(s_day[0]), int(s_day[1]), int(s_day[2]), 0, 0, 0, 0, 0, 0)# 将时间元组转换成秒数u_time = time.mktime(m_time)# 计算预计取款日期到当前日期的天数差remain = int((u_time - time.time()) / 3600 / 24)# 取款日期大于1天,进行信息提示if remain > 1:# 输入存款金额,单位为元money = input("存入金额(元):")# 如果输入的存款金额如果不是数值型字符串if not money.isdigit():# 提示“输入非数字字符,将退出系统!”print('输入非数字字符,将退出系统!')else:# 将输入的存款金额转为整型money = int(money)# 初始化本金与利息和为存入金额sum = money# 如果存款时间少于365天if remain < 365:# 计算利息leave = remain * money * rate / 365# 计算本金与利息和sum += leave# 存款时间大于等于365天else:# 计算年数和剩余的天数year, dates = divmod(remain, 365)# 计算整年的利息和收益for i in range(year):# 计算利息leave = sum * rate# 计算本金与利息和sum += leave# 计算小于1年的收益else:# 计算利息leave = dates * sum * rate / 365# 计算收益sum += leave# 输出修饰符print("-" * 20)print("所得利息:", format(sum - money, '.2f'))print("本息合计:", format(sum, '.2f'))else:print("取款日期不能早于现在的时间,将退出系统!")
# 输入日期格式不符合要求,输出提示信息
except:print("日期设置超出允许范围,将退出系统!")
​

4.Scrapy爬取股票信息

阅读下列说明及运行结果, 打开“考生文件夹\10007”文件夹中的素材,阅读代码,在空(1)至(10)处填写正确代码,操作完成后保存素材。

该题是关于Scrapy爬虫框架的题目,包含项目文件夹stockstar,题目主要考察Scrapy框架相关操作。

【运行结果】

代码编辑完成后,直接运行run.py文件,便可启动爬虫抓取数据。

问题

打开“考生文件夹\10007\stockstar\stockstar\spider”文件夹中的stock.py文件,根据注释提示,在空(1)至(10)处补全代码,完成后保存该文件。

【注意】除删除(1)至(10)填入正确的内容外,不能修改或删除素材中其它任何内容。

1.正确答案:scrapy.Spider
2.正确答案:name
3.正确答案:start_urls
4.正确答案:css
5.正确答案:StockstarItem()
6.正确答案:load_item()
7.正确答案:yield
8.正确答案:page
9.正确答案:response
10.正确答案:Request

stock.py

# -*- coding: utf-8 -*-
import scrapy
from stockstar.items import StockstarItem, StockstarItemLoader
​
​
class StockSpider(scrapy.Spider):# 爬虫名name = 'stock'allowed_domains = ['quote.stockstar.com']# 初始urlstart_urls = ['http://quote.stockstar.com/stock/ranklist_a_3_1_1.html']
​def parse(self, response):# 从当前请求url中获取页码page = int(response.url.split("_")[-1].split(".")[0])# 通过css选择器获取该页股票的tr节点列表item_nodes = response.css('#datalist tr')# 遍历每一个tr节点for item_node in item_nodes:# 根据item文件所定义的字段内容,进行字段内容的抓取item_loader = StockstarItemLoader(item=StockstarItem(), selector=item_node)item_loader.add_css("code", "td:nth-child(1) a::text")item_loader.add_css("abbr", "td:nth-child(2) a::text")item_loader.add_css("Circulation_market_value", "td:nth-child(3)::text")item_loader.add_css("Total_market_value", "td:nth-child(4)::text")item_loader.add_css("Circulating_share_capital", "td:nth-child(5)::text")item_loader.add_css("Total_share_capital", "td:nth-child(6)::text")
​# 将提取的数据load出来,使并赋值给变量stock_itemstock_item = item_loader.load_item()# 数据交给管道yield stock_itemif item_nodes:# 获取下一页的页码next_page = page + 1# 拼接下一页的urlnext_url = response.url.replace("{0}.html".format(page), "{0}.html".format(next_page))# 将拼接的url交给调度器yield scrapy.Request(url=next_url, callback=self.parse)

5.护肤品首页

阅读下列说明及运行结果, 打开“考生文件夹\100011”文件夹中的素材,阅读代码,在空(1)至(10)处填写正确代码,操作完成后保存素材。

该题是关于Django框架的题目,包含Skin文件夹和skin.sql文件,题目主要考察Django框架视图、模板、模型等相关操作。注意,在操作前需要进行数据库还原,首先创建一个名为skin的数据库,然后使用Navicate可视化工具右键--->运行SQL文件,选中skin.sql文件进行数据库还原操作。

【运行结果】

补全代码后,进入到项目文件夹(与manage.py同级),在cmd命令行输入python manage.py runserver,然后在浏览器输入http://127.0.0.1:8000/index,可见到以下页面。

问题

打开“考生文件夹\100011\Skin\app1”文件夹中的“views.py”文件和“考生文件夹\100011\Skin\templates”文件夹中的index.html文件,根据注释提示,在空(1)至(10)处补全代码,完成后保存该文件。

【注意】除删除(1)至(10)填入正确的内容外,不能修改或删除素材中其它任何内容。

1.正确答案:all()
2.正确答案:shop_cates
3.正确答案:shopkind_set
4.正确答案:order_by
5.正确答案:request
6.正确答案:data_dic
7.正确答案:foo.0
8.正确答案:name
9.正确答案:new_shop.name
10.正确答案:new_shop.desc

views.py

​
from django.shortcuts import render
from django.http import HttpResponse, JsonResponse
from app1.models import *
​
​
def create_data(request):"""数据插入逻辑"""cates = ['护肤','彩妆','香氛','男士专区','热门搜索']kinds_all = [['洁面', '爽肤水', '精华', '乳液'], ['BB霜', '卸妆', '粉底液'], ['女士香水', '男士香水', '中性香水'],['爽肤水','洁面','面霜','精华'],['洗面奶','去黑头','隔离','面膜']]# 插入大类和小类for i, cate in enumerate(cates):shop_cate = ShopCate()shop_cate.name = cateshop_cate.desc = cateshop_cate.save()# 拿到一个大类对应的所有小类kinds = kinds_all[i]# 将大类对应的小类插入数据库for kind in kinds:shop_kind = ShopKind()shop_kind.name = kindshop_kind.desc = kindshop_kind.kind_cate = shop_cateshop_kind.save()# 插入商品详情表shop_details = [('fresh skin 薏仁水', '化妆水/爽肤水单品', 'pic1.jpg'), ('蜂蜜原液天然滋养','美白护肤套装','pic2.jpg'),('纯情诱惑一抹惊艳','告别暗淡唇','pic3.jpg')]d_kind = ShopKind.objects.get(id=1)for shop_detail in shop_details:sd = ShopDetail()sd.name = shop_detail[0]sd.desc = shop_detail[1]sd.img = shop_detail[2]sd.detail_kind = d_kindsd.save()# 试装表try_decos = [('试装1', 'try1.jpg','try4.jpg'), ('试装2', 'try2.jpg','try5.jpg'),('试装3', 'try3.jpg','try6.jpg')]for try_deco in try_decos:td = TryDeco()td.name = try_deco[0]td.img1 = try_deco[1]td.img2 = try_deco[2]td.save()# 评测表evas = [('YOUKA','cp1.jpg','th1.png'),('SELF','cp2.jpg','th2.png'),('ONLY','cp3.jpg','th3.png'),
('PCLADY','cp4.jpg','th4.png'),('ileehoo','cp5.jpg','th5.png'),('SIBU','cp6.jpg','th6.png'),('妆品网','cp7.jpg','th7.png'),('AILI','cp8.jpg','th8.png')]for eva in evas:ev = Evalution()ev.name = eva[0]ev.img1 = eva[1]ev.img2 = eva[2]ev.save()return HttpResponse('插入数据成功')
​
​
def index(request):# 要为模板传递数据,数据通过Model从数据库查询# 查询出ShopCate类中的所有商品shop_cates = ShopCate.objects.all()# 左边的商品,取0-3的切片left_datas = shop_cates[:3]# 右边的商品,取3-末尾的切片right_datas = shop_cates[3:]left = []for left_data in left_datas:# 由该大类查询出它对应的全部的小类left_kinds = left_data.shopkind_set.all()# [['大类1', ['小类1-1', '小类1-2']], [], []]left.append([left_data, left_kinds])right = []for right_data in right_datas:# 由该大类查询出它对应的全部的小类right_kinds = right_data.shopkind_set.all()# [['大类1', ['小类1-1', '小类1-2']], [], []]right.append([right_data, right_kinds])# 从ShopDetail类中,查询最新单品(先查询出所有商品,再按日期降序排序)new_shops = ShopDetail.objects.all().order_by('-launch_date')[:3]# 查询试装表所有的数据try_decos = TryDeco.objects.all()# 查询评测表所有的数据evas = Evalution.objects.all()# 构造所有数据的字典data_dic = {"left": left, 'right': right, 'new_shops': new_shops, 'try_decos': try_decos, 'evas': evas}# 将数据返给index.htmlreturn render(request, 'index.html', data_dic)
​
​
def register_check(request):"""注册校验"""username = request.POST.get('username')password = request.POST.get('password')email = request.POST.get('email')tel = request.POST.get('tel')print(username)print(password)print(email)print(tel)res = User.objects.filter(name=username)if res:msg = '用户%s已存在,无法注册' % usernameelse:User.objects.create(name=username, password=password, email=email, tel=tel)msg = '注册成功,用户名是:%s,邮箱是:%s,电话是:%s' % (username, email, tel)return JsonResponse({'res': msg})

index.html

<!doctype html>
<html>
{% load static %}
<head>
<meta charset="utf-8">
<title>电商网页制作</title>
<link rel="stylesheet"  href="{% static 'css/index.css' %}">
<script src="/static/js/jquery-1.12.4.min.js"></script>
</head>
<body>
<!-- videobox bigan -->
<div class="videobox"><header><div class="con"><section class="left"></section><section class="right"><a href="#">登录</a><a href="#">注册</a></section></div></header><nav><ul><li class="left"><a class="one" href="#"><img src="/static/images/sanxian.png" alt=""><span>选项</span><img src="/static/images/sanjiao.png" alt=""></a><aside><span></span>{# 左边的数据 #}<ol class="zuo">{% for foo in left %}<!--    大类名字--><li class="con">{{ foo.0.name }}</li>{% for l_k in foo.1 %}<!--    小类名字--><li>>{{ l_k.name }}</li>{% endfor %}{% endfor %}</ol>{# 右边的数据 #}<ol class="you">{% for foo in right %}<!--    大类名字--><li class="con">{{ foo.0.name }}</li>{% for l_k in foo.1 %}<li>>{{ l_k.name }}</li>{% endfor %}{% endfor %}</ol><img src="/static/images/tu1.jpg" alt=""></aside></li><li class="center"><form><input type="text" value="请输入商品名称、品牌或编号"></form></li><li class="right"><a href="#"></a><a href="#"></a><a href="#">												

Python实操模拟题相关推荐

  1. CISP-PTE认证实操模拟题分享

    CSIP-PTE安全认证实操题有五道web题,一道综合题,这篇文章只分享5道web题,此靶场为模拟靶场. SQL注入 通过页面提示,我们要利用sql注入读取/tmp/360/key文件,读取的话就要用 ...

  2. 【Python 实操】labelImg标注的xml格式转换为yolo的txt文件

    [Python 实操]labelImg标注的xml格式转换为yolo的txt文件 背景 YOLO家族开枝散叶(尤其是YOLOv5)的广泛应用就涉及到图像的标注与文件格式转换,常用的标注工具有 Labe ...

  3. PSM倾向得分匹配法【python实操篇】

    前言 大家好,我是顾先生,PSM倾向性得分匹配法的Python代码实操终于来啦! ​ 对于PSM原理不太熟悉的同学可以看看前一篇文章:PSM倾向得分匹配法[上篇:理论篇] 目前网上PSM实操的相关文章 ...

  4. 4.python蓝桥杯模拟题 一个包含有2019个结点的有向图,最多包含多少条边?(不允许有重边)

    4.python蓝桥杯模拟题 一个包含有2019个结点的有向图,最多包含多少条边?(不允许有重边) 1.用n表示图中顶点的数目,e表示边或者弧的数目,则对于无向图来说,e的取值范围为0-(1/2)n( ...

  5. 小马同学 学习python实操的第一天

    学习python实操的第一天 第一个实操案例 任务1:向文件输出"一段属于你自己的话" ##方法一 fp= open('d:/test.txt','w') ##open('文件存储 ...

  6. Python—实操小实验之人机PK游戏(终极版本—应用类与对象的知识点应用)

    Python-实操小实验之人机PK游戏(终极版本-应用类与对象的知识点应用) 人机PK游戏所需要的基础元素如下: ①要有玩家.敌人.生命值.攻击力,还要有计分: ②要可以互相进行攻击,攻击之后生命值要 ...

  7. python实操题_Python100道练习题,光看不练假把式,Python实操资源

    Python数学计算,编程练习题实例一 Python数轴.长整型,编程练习题实例二 Python完全平方数,编程练习题实例三 Python日期计算,编程练习题实例四 Python整数顺序排列,编程练习 ...

  8. python实操训练300题_如何练习python?有这五个游戏,实操经验就已经够了

    原标题:如何练习python?有这五个游戏,实操经验就已经够了 现在学习python的人越来越多了,但仅仅只是学习理论怎么够呢,如何练习python?已经是python初学者比较要学会的技巧了! 其实 ...

  9. 1+X Web前端等级考证 | 2020 12月Web前端开发中级实操 (模拟试题第一套) 附答案

    由于经常分享失败,我上传github上了,先放上链接:https://github.com/Lydever/web-1-x.git 请礼貌,不要耍流氓哈哈,创作不易,下载的同时,请start一下,谢谢 ...

最新文章

  1. 申请MVP成功,发贴祝贺!
  2. html禁止手机页面放大缩小
  3. OpenCASCADE:读取和写入 STEP
  4. SpringSecurity加密认证
  5. UI5 xml view里control id的生成逻辑
  6. nodemailer 附件_如何使用Nodemailer发送带有附件的电子邮件。 Node.js
  7. 关于纯HTML格式写入word
  8. Oracle GoldenGate 详解
  9. Springboot 多模块项目创建与配置
  10. Android Studio安装、配置教程全 - 安卓开发环境的配置手册
  11. JS getElementsByClassName
  12. 清除浮动的七种方式方法(实例代码讲解)
  13. redis数据库的简单使用
  14. uchome数据字典
  15. 蔡维德:Libra如果脱钩美元 美国第二天就让它下市
  16. 路由器ipv4和ipv6转发原理
  17. Ubuntu中挂载使用nas服务器
  18. PB调用C#动态库轻松实现微信、支付宝支付
  19. 生物信息_odds_ratios、Likelihood_Ratios、发病率、frequency
  20. php执行who命令,Linux_在Linux系统中使用who和whoami命令获取用户信息,who用法:who [选项]... [ 文件 | - phpStudy...

热门文章

  1. python设置文件只读与取消文件只读
  2. VMWARE 占用硬盘空间只增大不减少的清理办法
  3. 前端css小米导航栏设置及盒子定位居中问题
  4. 把这7张思维导图读懂,工作稳当,薪水上涨,前途无量!
  5. 2022年——一个老老老程序员的杭州折腾之旅
  6. 清华人工智能研究院孙茂松:大数据与富知识双轮驱动成NLP未来发展关键
  7. 了解少儿编程和机器人编程的区别
  8. html隐藏元素hidden,CSS中隐藏元素的几种方法
  9. python 类的使用(5)之类装饰器(类的装饰器和类作为装饰器)
  10. python成语填空_Python每日一练(4)-成语填填乐