2023备战金三银四,Python自动化软件测试面试宝典合集(十四)

news2024/9/20 18:40:50

15.8 App 的性能测试

内容要点:

指标:cpu,内存,电量,流量,FPS,

怎么测? cpu,内存,流量 android studio

cpu 不能超过 10-20% 普通业务要求在 10%左右,核心的业务,尤其是一些绘图的业务,

要求在 20%左右。指标:SE 给到,竞品分析

内存主要看有内存泄露的情况,怎么看?

流量:一刷新使用软件,流量会逐渐增加

具体操作:

1,对于 cpu 内存,流量这 3 个指标,我们用的 android studio 来检测的,结合 sdk 里面的一个插

件 android Monitor,它可以帮我们试试检测 cpu,内存,流量的曲线图

2,这里我们需要开启手机端的开发者模式,还有 usb 调试模式,例外,开发给我们提供的 apk 包,

必须需要开启 debug 模式,开发开启之后打包给测试人员就可以了

3,主要就是对我们需要测的功能进行操作,然后实时查看图表,看他是否有内存 oom 内存泄漏,cpu

是否使用过高,是否有内存抖动,造成的卡顿等现象,是否有图片过大造成流量使用过大这些问题等,

是否有频繁使用流量,没有使用缓存等问题

4,像 fps 帧率是通过 adb 命令来测的,还有电量我们当时用的是手机自带的一个第三方软件测的?107

15.9 对于内存具体怎么测呢?

对于内存其实主要看有没有内存泄漏的问题

具体我们是这样做的:

1、首先我会频繁操作同一个业务,看他的内存和 cpu 是否逐步增长,最后稳定在一个固定大小的范

围,如果在频繁操作同一个业务,内存一直在增长,可能存在有内存泄漏问题,尝试手动 GC(手动回

收内存,因为内存泄漏,系统已经回收不了,所以尝试下手动回收内存),内存明显或者断崖式的下

降,基本就可以判断有内存泄漏的现象

再通过 damp java 这个去分析,分析结果如果出现 leaked,就说明有了,里面可以找到是哪个对象,

截图提 bug,

2、使用 app 过程中,内存一直在增长,那基本可以判断有内存泄漏的情况,还有看是否有内存抖动

的现象:这里主要原因还是有因为大量小的对象频繁创建,频繁的回收内存,会导数 cpu 频繁使用,

造成 cpu 使用过大,造成 app 卡顿,导致内存碎片,内存泄漏等问题

15.10 对于 CPU 具体怎么测呢?

cpu 主要就是看有没有过高,有没有超过我们的指标范围

具体是这样做的:

首先频繁使用某一个业务,cpu 是否逐步增长,最后稳定在一个固定大小的范围,对于一把基础

业务,对 cpu 要求不高的业务,cpu 不能超过 10%,对于 cpu 要求比较高的,比如某个业务需要加载

地图,大量的图片,视频等的业务,或者需要做大量的数据统计分析的业务,

我们要求 cpu 不能超过 20%

15.11 对于流量具体怎么测?

a,首先看在没有操作功能业务的情况下,没操作流量不应该有,或者是流量使用不是很大,就几 KB

因为 app 肯能实时刷新消息,比如如果一个登陆,你就使用 1M 的流量,查询个图片使用 3-4M 的流量

图片,这个肯定流量使用过大

b,频繁操作同一个业务,流量一直在刷,说明没有使用缓存

如何处理:图片过大处理方法:图片压缩传输,要么降低图片分辨率,

15.12 对于 FPS 具体怎么测?

对于 Fps 帧率的问题,我们当时用的 adb 命令来测的

知识点拓展: Android 设备的屏幕刷新率为 60 帧/s,要保持画面流畅不卡顿,要求每一帧的时间不

超过 1000/60=16.6ms,这就是 16ms 的黄金准则,

a. 打开手机:开发者选项-> profile GPU rendering ->108

in adb shell dumpsys gfxinfo(开启 GPU 渲染模式)

b. 操作要测试的 apk

C. cmd 窗口输入命令: adb shell dumpsys gfxinfo 包名

d. 得到一个矩阵数据,计算矩阵中帧率大于 16 的点所占比例,即为卡顿比

e. 通过 execl 进行表格处理可以直观的查看软件的流畅度

15.14 对于电量具体怎么测?

电量这一块,我们当时用的手机自带的第三方软件测的

15.15 App 交互性怎么做的?

交互性这块,主要从以下几个方面去考虑测试的是:

1. 看我们软件与其他应用软件的同时运行来回切换是否有问题

2. 看软件切换到后台一段时间,再切换到前端,或者前后台来回切换,

软件是否会有异常,比如:进程被杀死,或者切换到前端页面出现问题,或者页面数据丢失等等。

3. 看软件被在使用过程中被其他应用中断,或者其他意外情况中断,比如:来电,来短信,闹铃,

低电量测试等,还要注意手机端硬件上,如:待机,锁屏,插拔数据线,耳机等操作不会影响客户端。

15.16 App 的安装,卸载,更新测试具体从哪些方面考虑?

安装测试:

1. 正常安装测试,检查是否安装成功安装完成后,能否正常启动应用程序

2. 是否支持第三方安装,比如豌豆荚及 91 助手等工具可以正常安装及卸载程序

3. 检测在各大手机市场上下载,并直接安装,看是否能正常安装,安装完成之后,能否能正常启动。

4. 检测 APP 版本覆盖测试(先安装一个低版本,不卸载。然后再直接安装一个高版本,看是否会覆盖

低版本。(直接覆盖是否成功,卸载之后,再下载新版本,看是否能安装成功)

5. 检测版本回退(先装高版本,不卸载,直接再重新安装一个低版本,是否会覆盖高版本。

6. 检测在内存不足的情况下,去安装软件,系统应该会有提示

7. 在安装过程中,所有的提示信息必须是英文或者中文,提示信息中不能出现代码符号、乱码等。

8. 检测在未允许外来程序的安装的情况下,安装软件是否会有提示信息

9. 如果软件需要用到网络,GPS 定位,联系人等其他系统应用程序的时候,安装 App 会有相应的提

示。在不允许的情况,软件是否能正常使用。

10. 安装完成后,是否对其他应用程序造成影响。

11. 多进程进行安装,是否安装成功。(同时安装多个软件,是否能正常安装)

12. 在不同型号、系统的手机进行安装。(兼容性)109

13. 安装过程中,取消安装,再次重新安装,是否能正常安装。

14. 安装完成后,检查手机桌面能否添加快捷方式。(是否有快捷图标生成。)

卸载测试:

1. 正常卸载,软件是否能正常被卸载,相应的桌面图标是否会删除

2. 卸载之后,对应的文件是否删除干净,进入安装位置,去看下是否有残留的文件

3. 程序正在运行的时候,卸载程序,是否能正常卸载

4. 卸载过程中,取消卸载,看是否正常退出卸载程序,检查软件是否还能继续正常使

5. 在没用使用程序时,删除目录文件,看程序是否能运行。

6. 不同系统、硬件环境下进行卸载

7. 卸载成功后,是否对其他程序有影响

8. 卸载后再次安装,是否正常使用

9. 在卸载过程中,所有的提示信息必须是英文或者中文,

提示信息中不能出现代码是否有相关的提示信息

10. 卸载过程中,出现意外(比如手机关机,没电,查看信息,接打电话),程序是否还能运行

11. 在卸载过程中,突然重启设备,再次访问程序,是否还能运行。

更新测试:

1. 当客户端有新版本时,提示更新

2. 非强制更新,可以取消更新,旧版本正常使用,下次使用软件时,仍然会出现更新提示

3. 强制更新,强制更新而用户没有更新时,退出客户端,下次启动,依然提示更新

4. 不卸载,更新,检查是否可以更新

5. 不卸载更新,检查资源同名文件如图片等是否更新成最新版本。

6. 非 wifi 网络下,提示是否更新,取消就加入待下载,wifi 下自动更新。

15.17 H5 界面怎么测试

基本功能测试:(浏览器、微信内置浏览器)

登陆

目前 H5 与 native 各个客户端都做了互通,所以大家在测试的时候要注意两点:

A、若客户端已登录,那么进入 H5 后仍然是登录状态

B、若客户端未登录,进入 H5,点击对应按钮 OR 链接,如果需要登录,须拉起 native 登录。若取消

登录,是否可再次拉起登录,或者停留在的页面是否有对应的登录提示.。

ps:本次测试过程中就发现,第一次点击链接,可以拉起登录,第二次却不能

翻页 110

遇到翻页加载的页面,需要注意内容为 1 页或者多页的情况。

A、数据分页加载时,注意后续页面请求数据的正确。

ps:这个需要注意在快速操作场景中,请求页数是不是依次递增,快速操作(如第 1 页尚未 loading

出来的时候仍然继续上拉操作)时是否发出去对应的请求了。

刷新与返回

A、下拉刷新是否仍然处于当前页面。

B、用户主动点击刷新按钮是否仍然处于当前页面

C、点击返回与 back 键,回退页面是否是期望页面

ps:本次测试过程中就发现,mtop 接口请求成功,但是 data 内无数据时,返回到的就是个空白页面,

无法正常发送请求。

H5 适配相关

H5 的适配其实比客户端的相对来说,要少一些,手机品牌之间的差异不大,所以不用太多关注,最

容易出现问题的是 android2.3 系统,这个要特别关注下:

A. 大屏(如 720*1280,重点关注页面背景是否完全撑开页面,刷新是否有抖动)

小屏手机(如 320*480,重点关注下弹框样式和文案折行)

B. android2.3、android4.X 随机找一个即可

C. ios5、ios6、ios7

体验相关

资源相关

A、页面中有图片的话,淘宝那边建议图片一般不大于 50kb,本着一个原则,尽量缩小图片

B、资源是否压缩、是否通过 CDN 加载

C、如何保证二次发布后有效更新。

流量

A、对于一些不会变化的图片,如游戏动画效果相关图片,不需要每次都请求的东西,做本地缓存

B、数据较多时是否做了分页加载。

页面展现时间

A、关注页面首屏加载时间

页面提示

A、弱网络下,数据加载较慢,是否有对应的 loading 提示

B、接口获取异常时,提示是否友好

C、刷新页面或者加载新内容时页面是否有抖动111

手机操作相关

A、锁屏之后展示页面

B.回退到后台之后,重新呼出在前端展示

15.18 你们之前是用什么手机什么版本做兼容性测试的?

有用到三星 note5 Android 6.0.1

三星 s6 Android 6.0.1

红米 1s Android 5.1

小米 5 Android 7.0

华为 mate9 Android 6.0

乐视 2 Android 6.0

华为 mate20 Android 9.0

三星 s8 Android 8.0

iphoneos ios 10.3.2 iphone ios 10.0.2

iphone ios 8.4.1

iPhone X ios 11.0

15.19 Android 跟 ios 测试有什么区别?

Android 和 ios 测试的共同点都需要进行界面测试、功能测试、兼容性测试、网络测试、交互性测试、

易用性专项测试、异常测试、安全专项测试以及权限测试。不同的是 Android 测试除了以上的测试

之外还要用 monkey 进行稳定性专项测试以及用 emmagee 或者 gt 进行性能专项测试。los 是用 itools

工具对功能进行测试:安装、传输文件以及查看日志。

从操作系统,安装卸载,按键操作,开发语言这几个方面去区分操作系统: android 操作系统较

多,iOS 较少只能升级不能降级,并目新的版本的资源库不能完全兼容旧版中系统中的应用,如果低

版本应用调用了高版本的资源库,可能会导致系统崩溃。

安装卸载测试,应用发布后:下载安卓包的平台和渠道很多:豌豆英、应用宝、360 手机助手等;

iOS 主要有 App store、 iTunes,安全性会更高点

本地测试:安卓手机可以通过扫码或者直接安卓 APK 包安装测试包;iOS 要安装测试包必须绑定手机

的 id(证书)才可以安装 ipa 测试包

按键操作测试:安卓手机针对每一款手机有不一样的操作;苹果手机操作习惯单一

开发语言:虽然同样的业务安卓和 iOS 的展示形式和业务一致,但是底层全完不一样,安卓的应用是

有 java 语言实现的,iOS 用 OC 实现。

15.20 小程序怎么测试

1,小程序测试(多用第一人称,口语化表达,多讲一些,讲细一些,先宏观,在微观)参考面试问题

STAR 法则:

我们原来主要测试,几个方面,界面测试,功能测试,交互性测试,兼容性测试,安全测试,

易用性测试,异常测试,权限测试112

界面测试:主要是测试跟界面的原型图是否一致,同时我也要考虑不同屏幕大小跟分辨率

功能测试:跟所有的功能测试都是一样的,还有小程序有位置功能,检查下,微信小程序,附近中是

否能找到对应小程序,使用小程序是否记录,

交互性测试:要考虑跟微信的功能交互使用,比如说一些,卡包,支付等功,考虑跟手机固有功能交

互,比如说来电,短信等

兼容性测试:考虑跟微信不同版本的兼容,还有同时还要考虑不同手机厂商跟手机型号兼容,还要考

虑当微信清除缓存后,小程序还能否继续使用

安全测试:测试数据加密,包括 sql 与 xss 脚本攻击这块

易用性测试:考虑功能是否方便还用

异常测试:考虑断网,手机重启,关机的情况

权限测试:小程序继承微信权限,测试手机对微信权限,还要考虑微信对小程序授权,是否允许操作

原来我们测试阶段,上传小程序到微信小程序平台,上传到开发版本里面,通过扫描二维码去下载小

程序进行测试,

上线后,我们也要测试下,微信搜索小程序中能否搜索的到

15.21 公众号,小程序比 app 更火,你怎么看

小程序有安装包,一般控制在 1M 以内

1,基于微信大的平台,有流量的入口

2,不需要安装,操作更加方便

15.22 微信开发者工具如何使用

原来我们的下载一个微信开发者工具,导入开发给的小程序代码包,在输入开发给予的

appid,调试与测试小程序代码包,

如果真机测试,也可以扫描开发在微信开发者工具生成的二维码进行测试

十六、安全测试

16.1 安全测试怎么测试?

安全测试我们常用的方法是:1,sql 注入 2,xss 脚本攻击 3,数据加密 4,权限控制

运用扫描工具 appscan 扫描 web 系统。扫描 app 的一般用腾讯 wettest 等平台测试测试,

前端(web)时我们首先检查检查一下用户的感敏信息有没有进行加密显示,通过 Fiddle 抓包工具检查

一下用户的感敏信息有没有进行加密后传输如:用户密码,相应的银行卡,个人信息等,再到日志中

搜索关键信息,搜索到,就泄密,存在安全漏洞,数据库中是否做了加密处理。还有就是把发送请求

的数据篡改例如:打开 fiddle 工具,设置过滤器,设置断点把商城里的支付订单的 1000 完金额修改113

成 1 块钱,再放行发送数据,看是否,支付 1 块钱,订单支付成功,如果成功则是 bug,预期结果是

支付金额不对才行,用 sql 语句注入和 xss 脚本攻击,把 sql 语句或 xss 脚本编缉成 csv 文档通过

jmeter 工具添加"CSV 数据文件设置"来调用里面的语句来在所有的查询位置、所有的接口请求、url

请求链接参数中,进行 sql 语句注入或 xss 脚本攻击:模拟 sql 语句 xss 脚本攻击数据库,看它是否

把 sql 注入代码或 xss 脚本当成字符处理,如果不是就是 bug,再看功能不能正常使用、系统是否崩

溃,错误弹出框,界面是否变形。还有在所有可以保存的地方,都添加 xss 脚本攻击代码,看看是否

出现异常。权限控制(用户的校验)校验用户安全认证信息是否正确,如没有权限的界面不能进入,不

能提供操作入口或不能通过 url 直接去访问:例如;把所有需要权限的界面,全部复制一份出来然后

退出用户再通过 url 链接去访问功能如果可以访问,就是 bug,如有提示登录,属于正常。还有登陆

用户再退出用户后,点击浏览器的后退不能进入原来的界面。

通过 appscan 扫描工具去扫描,我们般是这样操作的;

1、启动软件进入主界面->选择创建新的扫

2、在弹出的新建扫描对话框中选择常规扫描;

3、在弹出的扫描配置向导对话框中选择 AppScan(自动或手动),点击下一步;

4、在此页面中填写需要扫描系统的同址,点击下一步:

5、选择登陆方式为记录,点击下一步;

6、完成系统登录操作后,关闭浏览器选择登录管理中的“详细信息”;

7、在“详细信息”中,取消“激活会话中的检测”,同时在“登录会话标识中”,对变量参数值进行

跟踪以确保参数的正确处理而获得系统访问权限;

8、把密码修改页面 URL、用户权限删除 URL 等页面添加至排除测试范围,防止 Appscan 的请求产生

相应影响(防止 Appscan 修改密码或删除用户帐号);

9、在“自动表单填充中,填入用户名和密码参数,并填写参数值,其余不做修;

10、如果测试过程中,应用服务出现性能响应过慢的问题,适当调整测试线程数为 2~5;

11、测试策路选择为严重性”进行过滤只勾选关注的严重性级别,把“高”、“中”和低”选上,

13、点击确定按钮,结束扫描配置工作;

14、点击扫描按钮,选择“仅探索”, Appscan 开始执行探索工作;

15、探索自动结束后,点击“手动探索”按钮,此时,在弹出的 E 浏览器窗口中登录系统,手工的任

意访问系统页面(1-10 个),关闭浏览器;

16、在弹出的参数添加窗口中,点击确定按钮”

17、点击扫描按钮,选择“完全扫描”, Appscan 开始执行测试工作;

18、测试执行结束后,点击报告按钮,选择关注的测试结果信息,勾选“报告内容”里的所有勾选;114

19、保存报告,保存类型建议选择为 html;然后分析报告。(只需了解面试尽量不要提及)

16.2 appscan 的原理是什么

对一个综合性的大型网站来说,可能存在成干上万的页面。以登录界面为例,至少要输入用户名

和密码,即该页面存在两个字段,当提交了用户名和密码等登录信息,网站需要检查是否正确,这就

可能存在一个新的检查页面这里的每个页面的每个参数都可能存在安全漏洞,可能成为被攻击对象。

AppScan 正是通过按照设定策略和规则,对 Web 应用进行安全攻击,以此来检查网站是否存在安全漏

洞。

在使用 AppScan 的时候,通过配置网站的 URL 网址, Appscan 会利用“探索”技术去发现这个

网站存在多少个目录,多少个页面,页面中有哪些参数等,即探索出网站的整体结构通过“探索”可

确定测试的目标和范围,然后利用 AppScan 的扫描规则库,针对发现的每个页面的每个参数,进行

安全检查。

简言之, APPScan 的工作原理如下:

1) 通过“探索”功能,利用 Http Request 和 Response 的内容,爬行出指定网站的整个 Web 应用结

构。

2) AppScan 本身有一个内置的漏洞扫描的规则库,可随版本进行更新,从探索出的 url 中,修改参

数 or 目录名等方式,构造不同的 url 对照组向服务器发送请求 or 攻击。

3) 根据 Http Response 返回的内容,和正常请求所返回的响应作对比,是否产生差异性,而这种差

异性又是否符合扫描规则库的设定规则,以此来判断是否存在不同类型的安全洞。

4) 若 APPScan 可判断存在安全漏洞,则对这些漏洞的威胁风验给出说明,进行严重程度提示,并给

出修复的建议和方法,以及漏洞发现的位置提示。

十七、 python 编程

17.1 一个变量没有定义报什么错误

一般在 python 中会有红色的波浪线标出来要是运行后,就直接会报变量没定义的错

NameError: name'i' is not defined

17.2 列表与元组的区别

他们最大的区别

1) 列表可以修改,元组不可以修改,列表就相当于一个动态数组,而元组是一个静态数组。

2) 从设计上说,列表是用来保存多个相互独立对象的数据集合,而元组设计的初衷就是为了描述一

个不会改变的事物的多个属性。

3) 然后列表的声明用中括号元组的声明用小括号,并且元组只有一个元素的时候需要在后面加逗号。115

17.3 python 序列有哪些?

有序序列:字符串,元组,列表

无序序列:字典,集合

序列特点:

---都可以通过索引得到每一个元素

---默认索引值总是从零开始

---可以通过切片的方法得到一个范围内的元素的集合

---有很多共同的操作符(重复操作符、拼接操作符、成员关系操作符)

17.4 Python 区分大小写吗?

python 中是区分大小写的

17.5 如何获取字典中的所有键?

我们可以直接遍历这个字典,用 keys()函数取出所有的键

for key in dict.keys()

如果说要取出字典中所有的键和对应的值,我们用 items0 函数

for key,value in dict.items()

17.6 列表和字典有什么区别?

1) dict 生成慢,查找快,list 生成快,查找慢,

2) 另外 list 是有序的,dict 是无需的,

3) list 通过索引访问,dict 使用 key 访问,

17.7 截取字符串里面部分字符怎么做?

1) 一般就是在定义的这个字符串变量后面用中括号[],然后里面填写需要截取的素引数

print(str[2:1)

print(str[:2])

# 从开始到 2)

print(str[2:5])

print(str[:])

2) 利用字符串的中的内置函数 split()

str1 = ‘2018-11-20 14:40:00’

print("年份: "str1.split(‘’)[0].split(‘

-’)[0])

print("月份: "str1.split(‘’)[0].split(‘

-’)[1])116

print("日期: "str1.split(‘’)[0].split(‘

-’)[2])

print("时: "str1.split(‘’)[1].split(‘

:’)[0])

print("分: "str1.split(‘’)[1].split(‘

:’)[1])

print("秒: "str1.split(‘’)[1].split(‘

:’)[2])

17.8 如何遍历列表,字典?

1) 列表遍历

list=[3,4,6,89]

for i in range(0,len(list)):

print(‘%d’%list[i])

for i in list

print(i)

2) 字典遍历

dict ={‘name’:’jason’,’pwd’:’123456’}

for key in dict.keys():

print(dict[key])

for value in dict.values():

print(value)

for key,value in dict.items():

print(key,value)

17.9 列出 5 个 python 标准库?

os: 提供了不少与操作系统相关联的函数

sys: 通常用于命令行参数

re: 正则匹配

math: 数学运算

datetime: 处理日期时间

17.10 字典如何删除键和合并两个字典?

字典 dic1={‘name’:’laowang’,’age’:’18’},

dic2=(‘name’:’Xiaohua’},删除 dic1 中键名为’name’的键,并合并 dc1 和 dic2

1) 删除键名为 name 的键

dic1={‘name’:’laowang’,’age’:’18’}117

del dic1[‘name’]

2) 合并两个字典,使用字典的成员方法 update()

dic2.update(dic1)

print(dic2)

17.11 python 实现列表去重的方法?

第一种方式:

#encoding = utf-8

import time

time_start=time.time()

print u"列表去重的七种方法"

prnt u"第一种测试方法"

repeat_list=[1,2,4,1,5,1,2,5]

result=[]

for i in repeat_list:

if i not in result;

result.append(i)

print u"第一种去重结果:", result

第二种方法:

repeat_list=[1,2,4,1,5,1,2,5]

print u"第三种去重结果:",list(set( repeat_list))

17.12 python 内建数据类型有哪些?

整型 -- int

布尔型 -- bool

字符串 -- str

列表 -- list

元组 -- tuple

字典 -- dict

17.13 列出 python 中可变数据类型和不可变数据类型,并简述原理?

1) 可变数据类型:列表 list 和字典 dict;

2) 不可变数据类型:整型 int、浮点型 float、字符串型 string 和元组 tuple118

"python 中的不可变数据类型,不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一

个对象,而对于相同的值的对象,

在内存中则只有一个对象,内部会有一个引用计数来记录有多少个变量引用这个对象;可变数据类型,

允许变量的值发生变化,即如果对变量进行 append、+=等这种操作后,

只是改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化,不过对于相同的值

的不同对象,在内存中则会存在不同的对象,即每个对象都有自己的地址,

相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。

17.14 如何将字符串转换为小写?

S = "What is Your Name?"

print(s.lower())

#返回小写字符串

print(s.upper())

#返回大写字符串

print(s.capitalize())

#字符串首字符大写

print(s.title())

#每个单词的首字母大写

pint(s.swapcase())

#大小写互换

17.15 现场出了一个 100-10000 之间,打印出各位数字相加能被 15 整除的整数,每行打印十个

def chu(strum,endnum)

sum = 0

for i in range(strum,endnum):

if i%15 == 0;

sum=sum+1

print(i,’,’)

if sum%10==0

pint(‘/n’)

17.16 然后现场出了一个 Python 题目 1689 年到 2019 年打印出所有的闰年

for i in range(2000,2501):

if i%4==0 and i%100!=0 or i%400==0;

print(i)

17.17 打印九九乘法表

def print99():119

for i in range(1,10):

#i=0 表示打第 1 行 i=1 表示打第 2 行 i=2 表示打第 3 行

for j in range(1,i+ 1):

print(‘%d*%d=%d\t'%(j,i,i*j),end="")

#换行

print(‘’)

17.18 冒泡排序

list=[2,1,6,3,8]

def bubble_sort(list);

for i in range(0,len(list)-1):

for j in range(0,len(lists)-i-1):

if list[j] > list[j+1];

list[j],list[j+1] = list[j+1],list[j]

return list

另外自带函数排序: list.sorto 默认升序排列

list.sort(reverse=True) 降序排列

17.19 写一个程序进行货币间币值转换函数

说明:其中人民币和美元间汇率固定为:

1 美元=678 人民币。程序可以接受人民币或美元输入,转换为美元或人民币输出。

人民币采 RMB 表示,美元采 USD 表示,符号和数值之间没有空格

示例:输入:USD:1 输出:RMB:6.78

while 1:

xuanze= int(input("请选择:1 美元转化为人民币\t2.人民币转化为美元\t3 结束"))

if xuanze == 1:

USD = float(input("输入美:USD: "))

if USD < 0:

print("你输入的数小于 0")

break

usd_rmb = USD * 6.78

print("输入:USD:1 输出:RMB:%f" %(usd_rmb))

elif xuanze ==2;120

RMB= float(input(输入人民币:RMB:"

if RMB <0;

print("你输入的数小于 0")

break

rmb_usd= RMB/6.78

print(输入:RMB:1 输出:USD:%f" %(%usd_rmb))

elif xuanze ==3;

break

else;

print("没有选择美元或人民币")

except;

print("你输入错误,请输入数字")

17.20 回文数

num = input(‘Num:’)

if num == num[::-1];

print("回文数")

else:

print(不是)

17.21 python 中生成随机整数、随机小数、0-1 之间小数方法

import random

#生成 1 到 100 之间的随机整数

print(random.randint(1,100))

#生成 0-1 之间随机的小数

print(random.random())

#生成随机小数, randn(3)代表生成三个

print(np.random.randn(3)

17.22 fixture 装饰器的作用与默认值

可以使用此装饰器(带或不带参数)来定义 fixture 功能。 fixture 功能的名称可以在以后,使用引

用它会在运行测试之前调用它:test 模块或类可以使用 pytest.mark.usefixtures

(fixturename 标记。测试功能可以直接使用 fixture 名称作为输入参数,在这种情况下,夹具实例121

从 fixture 返回功能将被注入。

17.23 如何进行异常处理

try:

执行脚本代码

except:

脚本运行失败执行代码

断言错误(AssertionError)

其他类型错误(Exception)

else:

没有错误执行的代码

finally:

不管运行成功与否都运行的代码

17.24 类的继承与多态意思

1. 子类继承父类所有的方法

2. 父类不能继承子类

3. 子类再去修改父类里面的方法,子类都是新的方法(多态)

17.25 json 与字典的区别?

区别总结:

定义上:字典是一种数据结构;

json 是一种数据的表现形式,一种数据格式。

写法上:字典中的键 key,只要是 hashable 的数据类型即可;

但是 json 的键 key(属性名称),必须是用双引号引起来的字符串。

17.26 如何获取字典中的所有键?

我们可以直接遍历这个字典,用 keys()函数取出所有的键

如果说要取出字典中所有的键和对应的值,我们用 items()函数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/352292.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

链表:反转链表、快慢指针、删除链表【零神基础精讲】

来源0x3f&#xff1a;https://space.bilibili.com/206214 文章目录反转链表[206. 反转链表](https://leetcode.cn/problems/reverse-linked-list/)[92. 反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/)[25. K 个一组翻转链表](https://leetcode.cn/proble…

新生儿住月子中心20天患败血症 什么是败血症?有哪些危害

12月7日&#xff0c;四川眉山市民唐先生说&#xff0c;他刚出生的儿子在妇产医院分娩中心住了20天后感染了败血症。据唐先生介绍&#xff0c;哈子出院时各项指标正常。他在分娩中心住了半个月左右&#xff0c;孩子喝牛奶异常易怒&#xff0c;第二天开始发烧。当天&#xff0c;在…

(十一)、用户中心页面【uniapp+uinicloud多用户社区博客实战项目(完整开发文档-从零到完整项目)】

1,个人中心页面 1.1 新建个人中心页面 1.2 纯净版个人中心页面代码&#xff1a; <template><view class"user"><view class"top"><view class"group"><view class"userinfo"><!-- 顶部 左侧 头像 …

Unreal Engine07:Actor的物理特性

写在前面 UE4作为物理引擎&#xff0c;其中一大功能就是能够赋予物体以物理特性。这里将简单介绍一下Actor常用的一些物理特性设置。 一、基本操作 这里介绍一些UE4的Editor基本操作&#xff1b; 1. Actor的变换 将Actor类拖动到地图中&#xff0c;生成实例&#xff1b;鼠…

408强化(二)线性表纯享版

目录 一、顺序表&#xff08;数组&#xff09;和链表总览 二、考情分析 2.1 从历年考情可以看出&#xff0c;如果一个方法出现了第2次&#xff0c;一般是以下情况&#xff1a; 2.2 没有考过的地方 三、 共同操作或考法 3.1 多指针后移 3.2 逆置 3.3 空间换时间的操作 3.…

一分钟了解微信公众号服务器配置自动回复

1、建一个web服务工程 2、开放任意一个接口&#xff0c; 比如 /aaa/bbb/ccc 把接口路径配置在这里&#xff0c;ip为公网ip或域名&#xff0c;其他的参数默认&#xff0c;对入门选手没啥用 3、该接口允许get和post两种方式访问&#xff0c;接口需要对于访问方式编写两套逻辑…

ubuntu下如何使用wireshark抓包,保姆级教程

Wireshark&#xff08;前称Ethereal&#xff09;是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包&#xff0c;并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口&#xff0c;直接与网卡进行数据报文交换。 一、安装wireshark 打开终端&…

教育行业如何高效使用知识库?

在线知识库的有效性在商业世界中是众所周知的。知识库通常用于客户支持&#xff0c;或管理员工的内部知识。在教育系统中&#xff0c;知识库的优势鲜为人知。知识库是可用于各种应用程序的多功能软件。特别是考虑到当前网络影响我们所有人生活的环境&#xff0c;教育越来越多地…

数据结构<堆>

&#x1f387;&#x1f387;&#x1f387;作者&#xff1a; 小鱼不会骑车 &#x1f386;&#x1f386;&#x1f386;专栏&#xff1a; 《数据结构》 &#x1f393;&#x1f393;&#x1f393;个人简介&#xff1a; 一名专科大一在读的小比特&#xff0c;努力学习编程是我唯一…

字符串匹配 - 模式预处理:朴素算法(Naive)(暴力破解)

朴素的字符串匹配算法又称为暴力匹配算法&#xff08;Brute Force Algorithm&#xff09;&#xff0c;最为简单的字符串匹配算法。算法简介朴素的字符串匹配算法又称为暴力匹配算法&#xff08;Brute Force Algorithm&#xff09;&#xff0c;它的主要特点是&#xff1a;没有预…

功率放大器科普知识(晶体管功率放大器的注意事项)

虽然功率放大器是电子实验室的常用仪器&#xff0c;但是很多人对于它却没有清晰的认识&#xff0c;下面就让安泰电子来为大家介绍功率放大器的科普内容以及使用注意事项&#xff0c;希望大家可以对功率放大器有清晰的认识。功率放大器可以把输入信号的功率放大&#xff0c;以满…

NFT Insider #86:A16z 领投,YGG 获得 1380 万美元融资,The Sandbox与《北斗神拳》合作

引言&#xff1a;NFT Insider由NFT收藏组织WHALE Members、BeepCrypto联合出品&#xff0c;浓缩每周NFT新闻&#xff0c;为大家带来关于NFT最全面、最新鲜、最有价值的讯息。每期周报将从NFT市场数据&#xff0c;艺术新闻类&#xff0c;游戏新闻类&#xff0c;虚拟世界类&#…

智能小车红外循迹原理

循迹电路循迹电路由收发一体的红外收发管P1&#xff0c;P2&#xff1b;电位器R18&#xff0c;R29&#xff1b;发光二极管D6&#xff0c;D7和芯片LM324等组成。一共有两路&#xff0c;对应的红外电位器用于调节灵敏度。LM234用于信号的比较&#xff0c;并产生比较结果输出给单片…

MySQL8.0 optimizer_switch变化

Optimizer_switch变量是支持对优化器行为的控制。是一组值标志&#xff0c;每个标志都有一个on或off的值&#xff0c;以指示是否启用或禁用相应的行为。 MySQL8.0里除了熟悉的hash join重大变化之外&#xff0c;其他方面也有优化。 mysql> SHOW VARIABLES LIKE OPTIMIZER_…

14 基数排序(桶排序)

文章目录1 基数排序基本思想2 基数排序的代码实现2.1 java2.2 scala3 基数排序总结1 基数排序基本思想 1) 基数排序&#xff08;radix sort&#xff09;属于“分配式排序”&#xff08;distribution sort&#xff09;&#xff0c;又称“桶子法”&#xff08;bucket sort&#…

【Python】循环语句(while,for)、运算符、字符串格式化

一、while循环Python 编程中 while 语句用于循环执行程序&#xff0c;即在某条件下&#xff0c;循环执行某段程序&#xff0c;以处理需要重复处理的相同任务。其基本形式为&#xff1a;while 判断条件(condition)&#xff1a;执行语句(statements)执行语句可以是单个语句或语句…

Git、小乌龟、Gitee的概述与安装应用超详细(组长与组员多人开发版本)

目录 一、概述 1.什么是Git&#xff1f; 2.Git历史来源 3.Git的优点? 4.什么是版本控制&#xff1f; 5.版本控制工具种类&#xff1f; 6.Git工作机制 7.Git、小乌龟、Gitee、凭据管理器的简单介绍 二、Git下载安装 下载Git 安装Git 安装完成后查看版本 三、下载小…

防水蓝牙耳机评测,值得入手的四款蓝牙耳机分享

提到蓝牙耳机&#xff0c;大家第一反应是音质跟佩戴舒适度要好&#xff0c;其实除了这两个功能&#xff0c;还有就是防水性能不能少&#xff0c;而且防水等级越高&#xff0c;耳机寿命也就越长&#xff0c;那么&#xff0c;我们该如何 选购一款好用的蓝牙耳机呢&#xff1f;下面…

Echarts 配置横轴竖轴指示线,更换颜色、线型和大小

第018个点击查看专栏目录本示例是描述如何在Echarts上配置横轴竖轴指示线&#xff0c;更换颜色、线型和大小。方法很简单&#xff0c;参考示例源代码。 文章目录示例效果示例源代码&#xff08;共85行&#xff09;相关资料参考专栏介绍示例效果 示例源代码&#xff08;共85行&a…

数据的TCP分段和IP分片

本文简述下TCP分段和IP分片的区别与联系。 我们知道&#xff0c;用户空间的数据拷贝到内核空间的TCP发送缓冲区&#xff08;这个是一个结构体&#xff0c;叫sk_buffer&#xff0c;简称skb&#xff09;后就由内核网络协议栈做后续的封装和发送处理了&#xff0c;用户无需考虑下…