2020-\10月\Province_Python\试题F:成绩统计

试题 F: 成绩统计
时间限制: 1.0s 内存限制: 512.0MB
本题总分:15 分

【问题描述】
小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。
如果得分至少是 60 分,则称为及格。如果得分至少为 85 分,则称为优秀。
请计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整数。

【输入格式】
输入的第一行包含一个整数 n,表示考试人数。
接下来 n 行,每行包含一个 0 至 100 的整数,表示一个学生的得分。

【输出格式】
输出两行,每行一个百分数,分别表示及格率和优秀率。
百分号前的部分四舍五入保留整数。

【样例输入】
7
80
92
56
74
88
100
0

【样例输出】
71%
43%


这题的重点就是四舍五入,方法是把需要四舍五入的小数+0.5,然后强制转换为int即可
#include <iostream>
#include <vector>
#include <fstream>
metersphere响应体是{ "code": 0, "msg": "Success", "data": { "last_name": "会员小程序 pp 环境", "first_name": "会员小程序 pp 环境", "personId": "1167671", "mobile": "19370839037", "email": "updateMemberIn2fo@qq.com", "cardNumber": "2099132198103", "address": [ { "address_type": 2, "is_prefered": false, "address_id": "1044936", "country_code": "CN", "country_code_geo_id": "CHN", "province": "上海", "province_geo_id": "CN-SHANGHAI", "city": "上海", "city_geo_id": "CN-SHANG-SHANGHAI", "district": "浦东新区", "district_geo_id": "CN-200135-PUDONGXINQ", "address_line": "decathlon", "mobile": "17829372814", "name": "www", "province_code": "Shanghai", "postal_code": "200135" }, { "address_type": 2, "is_prefered": false, "address_id": "1044939", "country_code": "CN", "country_code_geo_id": "CHN", "province": "安徽", "province_geo_id": "CN-ANHUI", "city": "安庆", "city_geo_id": "CN-ANHUI-ANQING", "district": "大观区", "district_geo_id": "CN-246002-DAGUANQU", "address_line": "123", "mobile": "19370839037", "name": "Decathlon_QA", "province_code": "Anhui", "postal_code": "246002" }, { "address_type": 2, "is_prefered": false, "address_id": "1044962", "country_code": "CN", "country_code_geo_id": "CHN", "province": "广东", "province_geo_id": "CN-GUANGDONG", "city": "广州", "city_geo_id": "CN-GUANG-GUANGZHOU", "district": "海珠区", "district_geo_id": "CN-510220-HAIZHUQU", "address_line": "新港中路397号", "mobile": "13456562323", "name": "张吴", "province_code": "Guangdong", "postal_code": "510220" }, { "address_type": 2, "is_prefered": false, "address_id": "1044970", "country_code": "CN", "country_code_geo_id": "CHN", "province": "上海", "province_geo_id": "CN-SHANGHAI", "city": "上海", "city_geo_id": "CN-SHANG-SHANGHAI", "district": "浦东新区", "district_geo_id": "CN-200135-PUDONGXINQ", "address_line": "decathlon", "mobile": "17829784372", "name": "&*¥、。", "province_code": "Shanghai", "postal_code": "200135" }, { "address_type": 2, "is_prefered": false, "address_id": "1044991", "country_code": "CN", "country_code_geo_id": "CHN", "province": "上海", "province_geo_id": "CN-SHANGHAI", "city": "上海", "city_geo_id": "CN-SHANG-SHANGHAI", "district": "浦东新区", "district_geo_id": "CN-200135-PUDONGXINQ", "address_line": "decathlon", "mobile": "18888888888", "name": "hillary", "province_code": "Shanghai", "postal_code": "200135" }, { "address_type": 2, "is_prefered": false, "address_id": "1044897", "country_code": "CN", "country_code_geo_id": "CHN", "province": "上海", "province_geo_id": "CN-SHANGHAI", "city": "上海", "city_geo_id": "CN-SHANG-SHANGHAI", "district": "浦东新区", "district_geo_id": "CN-200135-PUDONGXINQ", "address_line": "decathlon", "mobile": "17829372814", "name": "名字", "province_code": "Shanghai", "postal_code": "200135" }, { "address_type": 2, "is_prefered": false, "address_id": "1045008", "country_code": "CN", "country_code_geo_id": "CHN", "province": "上海", "province_geo_id": "CN-SHANGHAI", "city": "上海", "city_geo_id": "CN-SHANG-SHANGHAI", "district": "浦东新区", "district_geo_id": "CN-200135-PUDONGXINQ", "address_line": "decathlon", "mobile": "18888888888", "name": "hillary", "province_code": "Shanghai", "postal_code": "200135" }, { "address_type": 2, "is_prefered": false, "address_id": "1045009", "country_code": "CN", "country_code_geo_id": "CHN", "province": "上海", "province_geo_id": "CN-SHANGHAI", "city": "上海", "city_geo_id": "CN-SHANG-SHANGHAI", "district": "浦东新区", "district_geo_id": "CN-200135-PUDONGXINQ", "address_line": "decathlon", "mobile": "18888888888", "name": "hillary", "province_code": "Shanghai", "postal_code": "200135" }, { "address_type": 2, "is_prefered": false, "address_id": "1045010", "country_code": "CN", "country_code_geo_id": "CHN", "province": "上海", "province_geo_id": "CN-SHANGHAI", "city": "上海", "city_geo_id": "CN-SHANG-SHANGHAI", "district": "浦东新区", "district_geo_id": "CN-200135-PUDONGXINQ", "address_line": "decathlon", "mobile": "18888888888", "name": "hillary", "province_code": "Shanghai", "postal_code": "200135" }, { "address_type": 2, "is_prefered": false, "address_id": "1045011", "country_code": "CN", "country_code_geo_id": "CHN", "province": "上海", "province_geo_id": "CN-SHANGHAI", "city": "上海", "city_geo_id": "CN-SHANG-SHANGHAI", "district": "浦东新区", "district_geo_id": "CN-200135-PUDONGXINQ", "address_line": "decathlon", "mobile": "18888888888", "name": "hillary", "province_code": "Shanghai", "postal_code": "200135" }, { "address_type": 2, "is_prefered": false, "address_id": "1045012", "country_code": "CN", "country_code_geo_id": "CHN", "province": "上海", "province_geo_id": "CN-SHANGHAI", "city": "上海", "city_geo_id": "CN-SHANG-SHANGHAI", "district": "浦东新区", "district_geo_id": "CN-200135-PUDONGXINQ", "address_line": "decathlon", "mobile": "18888888888", "name": "hillary", "province_code": "Shanghai", "postal_code": "200135" }, { "address_type": 2, "is_prefered": false, "address_id": "1045013", "country_code": "CN", "country_code_geo_id": "CHN", "province": "上海", "province_geo_id": "CN-SHANGHAI", "city": "上海", "city_geo_id": "CN-SHANG-SHANGHAI", "district": "浦东新区", "district_geo_id": "CN-200135-PUDONGXINQ", "address_line": "decathlon", "mobile": "18888888888", "name": "hillary", "province_code": "Shanghai", "postal_code": "200135" }, { "address_type": 2, "is_prefered": false, "address_id": "1045014", "country_code": "CN", "country_code_geo_id": "CHN", "province": "上海", "province_geo_id": "CN-SHANGHAI", "city": "上海", "city_geo_id": "CN-SHANG-SHANGHAI", "district": "浦东新区", "district_geo_id": "CN-200135-PUDONGXINQ", "address_line": "decathlon", "mobile": "18888888888", "name": "hillary", "province_code": "Shanghai", "postal_code": "200135" }, { "address_type": 2, "is_prefered": true, "address_id": "1044027", "country_code": "CN", "country_code_geo_id": "CHN", "province": "上海", "province_geo_id": "CN-SHANGHAI", "city": "上海", "city_geo_id": "CN-SHANG-SHANGHAI", "district": "浦东新区", "district_geo_id": "CN-200135-PUDONGXINQ", "address_line": "兰嵩路555号", "mobile": "19370839037", "name": "decathlon_qa", "title": "公司", "province_code": "Shanghai", "postal_code": "200135" }, { "address_type": 1, "address_id": "1044026", "country_code": "CN", "country_code_geo_id": "CHN", "province": "上海", "province_geo_id": "CN-SHANGHAI", "city": "上海", "city_geo_id": "CN-SHANG-SHANGHAI", "district": "浦东新区", "district_geo_id": "CN-200135-PUDONGXINQ", "address_line": "兰嵩路555号", "mobile": "19370839037", "name": "decathlon_qa", "title": "公司", "province_code": "Shanghai", "postal_code": "200135" } ], "creation_source": "membership_cn", "creation_date": "2025-03-24T17:05:16.000+0800" } }怎么在增加删除接口后删除mobile是18888888888的新增地址
最新发布
07-04
<think>我们正在MeterSphere中实现一个删除指定手机号地址的接口操作。根据用户需求,我们需要通过调用删除接口来移除mobile字段为18888888888的地址记录。以下是完整的步骤:###步骤1:获取目标地址的address_id在删除之前,我们需要先获取该手机号对应的address_id(假设删除接口需要address_id作为参数)。我们可以通过以下方式获取: -**前置操作**:在删除请求之前添加一个查询请求,获取该手机号对应的地址记录,并从中提取address_id。####查询请求示例:```httpGET /addresses?mobile=18888888888```####在MeterSphere中配置后置提取(使用正则表达式):-**后置操作类型**:正则提取-**变量名称**:address_id- **表达式**:`"mobile":"18888888888".*?"address_id":"([^"]+)"`- **匹配数字**:1(取第一个匹配项)- **模板**:$1$>注意:如果响应是JSON数组,且可能有多个记录,这里我们取第一个。如果确保唯一,则没问题;否则需要根据业务调整。 ###步骤2:配置删除请求使用上一步提取的`address_id`变量构造删除请求。####删除请求示例:```httpDELETE/addresses/${address_id} ```###步骤3:在MeterSphere中实现整个流程1.**创建场景**:在MeterSphere中创建一个测试场景。2.**添加第一个请求(查询请求)**:-方法:GET-URL:`/addresses?mobile=18888888888`-后置操作:添加正则提取,提取`address_id`(如上配置)。 3. **添加第二个请求(删除请求)**:-方法:DELETE-URL:`/addresses/${address_id}`(使用上一步提取的变量)-可以添加后置断言来验证删除是否成功。 ###完整场景示例:```yaml-请求1:查询地址方法:GETURL:/addresses?mobile=18888888888后置操作:-类型:正则提取变量名:address_id表达式:"mobile":"18888888888".*?"address_id":"([^"]+)"匹配数字:1模板: $1$-请求2:删除地址方法:DELETEURL: /addresses/${address_id}```###注意事项:1.**确保查询请求返回了数据**:如果查询请求没有返回数据,则后续删除请求可能会失败。可以在查询请求后添加断言,确保返回了数据。 2. **处理多个地址的情况**:如果同一个手机号有多个地址,上述正则表达式只会提取第一个。如果需要删除所有,则应该:-使用JSONPath提取所有匹配的address_id(返回数组)-然后使用循环控制器(MeterSphere中的循环控制器或使用BeanShell脚本)逐个删除。####提取多个address_id(如果存在多个): -**后置操作类型**:JSONPath提取-**变量名称**:address_ids-**表达式**:`$..[?(@.mobile=='18888888888')].address_id`- **匹配数字**:-1(表示提取所有) 然后,在删除请求前添加一个**循环控制器**,循环变量`address_ids`,在循环内使用`${__V(address_ids_${__counter(,)})}`来获取每个address_id(注意:在JMeter中这样使用,MeterSphere中可能有自己的循环变量方式,具体可参考MeterSphere的循环控制器文档)。 ###删除接口的验证:在删除请求后,可以添加一个验证请求(再次查询该手机号的地址),并断言返回的地址列表不包含已删除的address_id,或者返回空。###引用说明: -在删除操作中,我们使用了DELETE方法,这与Elasticsearch的删除文档操作类似(通过指定文档ID)[^1]。 -在逻辑删除的情况下,可能不是真正的物理删除,而是更新一个删除标志位(如`delete_flag=1`)[^3]。如果接口是逻辑删除,则删除请求可能实际上是POST或PUT请求,请求体中包含更新删除标志位的字段。###总结:在MeterSphere中实现删除指定手机号地址的操作,核心步骤是:1.通过查询接口获取address_id(使用正则或JSONPath提取)。2.使用提取的address_id作为参数调用删除接口。根据接口是物理删除还是逻辑删除,删除请求的构造方式可能不同。如果是逻辑删除,则可能是PUT/POST请求,并在请求体中传递标记字段。 §§相关问题§§1.如何验证地址已被成功删除?2.如果删除接口需要认证,如何在MeterSphere中配置?3.如何批量删除同一个手机号的多个地址?</think>### 在 MeterSphere 中实现删除指定手机号地址的完整方案 #### 整体流程 ```mermaid graph TD A[获取目标地址ID] --> B[执行删除操作] B --> C[验证删除结果] ``` #### 步骤 1:获取目标地址的 address_id(关键前置操作) 使用正则表达式提取 mobile=18888888888 对应的 address_id: ```yaml # 查询接口的后置操作配置 正则提取: 变量名称: target_address_id 表达式: "mobile":"18888888888".*?"address_id":"([^"]+)" 匹配数字: 1 # 取第一个匹配项 模板: $1$ ``` > **技术要点**:使用非贪婪匹配 `.*?` 确保精准定位目标记录[^1] #### 步骤 2:配置删除接口 ```http DELETE /api/addresses/${target_address_id} Content-Type: application/json Authorization: Bearer ${access_token} ``` **参数说明**: - `${target_address_id}`:前一步提取的地址ID变量 - 认证方式根据实际接口调整(如 Basic Auth/OAuth2) #### 步骤 3:验证删除结果(后置断言) ```yaml # 删除接口的后置断言 响应断言: 检查点1: $.code == 200 # 状态码验证 检查点2: $.msg contains '删除成功' # 业务消息验证 # 可选二次验证(重新查询该地址) SQL断言: 查询: SELECT count(*) FROM addresses WHERE address_id = '${target_address_id}' 预期: 返回结果应为 0 ``` #### 完整场景示例 ```yaml - 场景名称: 删除指定手机号地址 步骤: 1. 获取token: POST /login 2. 查询地址: GET /addresses?mobile=18888888888 后置操作: 正则提取: target_address_id = "mobile":"18888888888".*?"address_id":"([^"]+)" 3. 删除地址: DELETE /addresses/${target_address_id} 后置断言: - JSONPath: $.success == true - 响应时间: < 1000ms 4. 验证删除: GET /addresses/${target_address_id} 预期: HTTP状态码 404 ``` #### 特殊场景处理 1. **逻辑删除场景**(如标记 delete_flag): ```http PUT /api/addresses/${target_address_id} { "delete_flag": 1 # 参考逻辑删除实现[^3] } ``` 2. **批量删除实现**: ```yaml # 后置操作提取多个ID JSONPath提取: 变量名: address_ids 表达式: $..[?(@.mobile=='18888888888')].address_id 匹配数字: -1 # 获取所有匹配项 # 使用循环控制器逐个删除 循环控制器: 循环变量: address_ids_1, address_ids_2,... 循环体: DELETE /addresses/${current_id} ``` #### 常见问题解决方案 | 问题类型 | 解决方案 | |---------|---------| | 认证失败 | 检查 token 有效期,添加 token 自动刷新机制 | | 地址不存在 | 前置添加存在性检查:`IF [ ${target_address_id} != null ]` | | 并发删除 | 添加分布式锁标记:`redis.set('lock_${target_address_id}',1)` | | 删除恢复 | 实现回收站机制(设置 is_deleted 标记)[^3] | > **最佳实践**:删除操作完成后,建议在场景中添加**数据清理**步骤,确保测试环境数据一致性[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值