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

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()函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值