Python接口自动化测试框架(练习篇)-- 数据类型及控制流程(一)

简介: 本文提供了Python接口自动化测试中的编程练习,包括计算器、猜数字、猜拳和九九乘法表等经典问题,涵盖了数据类型、运算、循环、条件控制等基础知识的综合应用。

前言

前面的python基础部分都学习完了,那么剩下的只有练习了,对于很多精通python的人而言,没有捷径可言、唯手熟尔。一旦缺少持久的练习,就会对很多知识点选择性遗忘,尽管能从百度找到答案,但作者建议:不要每次都去百度,要学会自己解决问题。练习篇会从一些经典的练习题或面试题进行讲解。

练习

天下武功,唯快不破。为什么?因为快,敌人无法及时作出回应,便已经输了。那么开发一途,唯有勤加苦练。但是也需要一点点技巧,不能盲目。

计算器

卖橘子的计算器:写一段代码,提示用户输入橘子的价格,然后随机生成购买的斤数(5到10斤之间),最后计算出应该支付的金额!

分析

这里面涉及多个基础知识的应用,如输入input、随机数的产生random、计算涉及的运算、扩展的话应该还有异常及条件判断

  • input函数的处理,接收数据后的类型只能是字符串,那么在算术运算时需要的是int或者float类型
import random

try:
    price = float(input("请输入橘子的价格:"))
except:
    print("输入数据错误")
    raise

weight = random.randint(5,10)

money = round(price * weight,2)

print("用户购买{}斤橘子,应付{}元。".format(weight,money))
  • 思考点1:对于输入的价格,为什么是float而不是int?
  • 思考点2:最后计算的金额,为什么要使用round()函数?或者有什么其他用法代替?
猜数字

程序会随机生成一个1-9之间数值,提示用户猜数字,猜错继续猜(需要给出提示大小,让用户继续输入),猜对了则退出程序。加个条件,用户只有3次机会,不能无限次输入,因为总会猜对。

分析

提取题目描述的关键信息:随机数random、循环while、break关键字、有限制次数

  • break关键字的用法,在循环体中,执行到break程序会中断退出,不会再执行后面的代码
import random

guess = random.randint(1,9)

i = 0

while i < 3:
    guest=int(input("请用户输入1-9范围的整数,不能是小数(仅有3次机会):"))

    if guest > guess:
        print("用户输入数值大了,请重新输入:")
    elif guest < guess:
        print("用户输出数值小了,请重新输入:")
    else:
        print("恭喜用户猜对了。")
        break
    i += 1
猜拳

这个游戏和猜数字差不多,但是多了一点点运算,且看要求如何:提示用户输入要出的拳:石头(1)/剪刀(2)/布(3)/退出(4) 电脑随机出拳比较胜负,显示 用户胜、负还是平局;注意:用户有权选择退出游戏,且每次猜拳电脑也要随机,而不像上次猜数字那样电脑只在当前运行中随机产生一次;所以不限次数。

分析

所以电脑出拳要在循环体类,保证用户每次出拳,电脑也随机出拳;根据要求,肯定是需要一个变量来储存石头剪刀布。

  • 分析数据特点,有数字和中文,那么何种方式来储存数据呢?两个方案:一是字典,二是随机函数;下面会给两个方案都演示一个案例:
方案一:字典储存猜拳数据
import random


guess_dic = {
   1:"石头",2:"剪刀",3:"布"}

while True:
    guest = int(input("请用户输入1-4的整数,分表代表:石头(1)/剪刀(2)/布(3)/退出(4),开始猜拳:"))

    com_guess  = random.randint(1,3)

    if guest == 4:
        print("选择出游戏或输入数字不在范围内退出游戏!!!")
        break
    elif (guest==1 and com_guess==3) or (guest==2 and com_guess==1) or (guest==3 and com_guess==2):
        print("用户出拳:{},电脑也出拳:{},电脑赢了!".format(guess_dic.get(guest),guess_dic.get(com_guess)))
    elif guest == com_guess:
        print("用户出拳:{},电脑也出拳:{},平局!".format(guess_dic.get(guest),guess_dic.get(com_guess)))
    else:
        print("用户出拳:{},电脑也出拳:{},用户赢了!".format(guess_dic.get(guest),guess_dic.get(com_guess)))
  • 小技巧:列举电脑赢的所有组合及平局的情况,那么剩下的就是用户赢,同时作者一边写也在一边测试,
方案二:列表储存,随机选择
import random


guess_lis = ["石头","剪刀","布"]

while True:
    guest = int(input("请用户输入1-4的整数,分表代表:石头(1)/剪刀(2)/布(3)/退出(4),开始猜拳:"))

    com_guess  = guess_lis.index(random.choice(guess_lis)) + 1

    if guest == 4:
        print("选择出游戏或输入数字不在范围内退出游戏!!!")
        break
    elif (guest==1 and com_guess==3) or (guest==2 and com_guess==1) or (guest==3 and com_guess==2):
        print("用户出拳:{},电脑也出拳:{},电脑赢了!".format(guess_lis[guest-1],guess_lis[com_guess-1]))
    elif guest == com_guess:
        print("用户出拳:{},电脑也出拳:{},平局!".format(guess_lis[guest-1],guess_lis[com_guess-1]))
    else:
        print("用户出拳:{},电脑也出拳:{},用户赢了!".format(guess_lis[guest-1],guess_lis[com_guess-1]))
  • 缺点:复杂度高了很多,电脑的随机出拳,是先随机选择列表,再得到索引,最后还得加1才能跟用户比较,否则用户赢面很大。
九九乘法表

作为经典的面试题,练习必不可少。提示:熟练掌握嵌套循环

嵌套for循环
for i in range(1,10):
    for j in range(1,i+1):
        print("{} * {} = {}".format(i,j,i*j),end=" ")
    print(" ")
嵌套while循环
i = 1
while i <= 9:
    j = 1
    while j <= i:
        print("{} * {} = {}".format(i, j, i * j), end=" ")
        j += 1
    i += 1
    print("")
  • 点评:相较而言for循环实现会比较简单且不易出错,while关于变量的运算位置,可能会导致出错,例如j在最外层初始化,可能的情况是只得到1-9的乘法结果

总结

这篇练习比较综合,复习了数据类型、运算、循环、条件控制等基础语法;下一篇还会从这些方面来复习,唯有通过更多的练习来巩固所学的知识,作者也权当复习了。

相关文章
|
1天前
|
运维 测试技术
拆分软件测试流程,一张图秒杀所有面试
本文主要介绍了软件测试流程的核心内容,包括需求分析、测试用例编写、测试执行、缺陷提交及回归测试等关键步骤。以迭代测试为例,详细说明了每个环节的具体操作和注意事项,并提供了一张测试流程图以便理解。测试流程确保了软件质量,是面试中常见的考察点。
12 7
拆分软件测试流程,一张图秒杀所有面试
|
1天前
|
数据可视化 数据管理 测试技术
聊聊自动化测试框架
关于自动化测试框架的一些理解和思考总结,就是上面这些内容,提到的一些框架组件可能存在不合理的地方,仅供参考,如有更好的建议,请指出,不胜感激
10 4
聊聊自动化测试框架
|
1天前
|
开发者
利用 GitHub Actions 自动化你的软件开发流程
在快速发展的软件开发环境中,自动化对于提升效率与质量至关重要。GitHub Actions 作为一款强大的工具,能帮助开发者实现从自动运行测试到部署应用等工作的自动化。本文详细介绍了 GitHub Actions 的核心概念、设置方法及实际应用示例,如自动测试、部署和合并 Pull Requests,助力提升开发流程的自动化水平。
|
3天前
|
安全 JavaScript 前端开发
自动化测试的魔法:如何用Python编写你的第一个测试脚本
【8月更文挑战第41天】在软件的世界里,质量是王道。而自动化测试,就像是维护这个王国的骑士,确保我们的软件产品坚不可摧。本文将引导你进入自动化测试的奇妙世界,教你如何使用Python这把强大的魔法杖,编写出能够守护你代码安全的第一道防护咒语。让我们一起开启这场魔法之旅吧!
|
7天前
|
存储 Java 关系型数据库
“代码界的魔法师:揭秘Micronaut框架下如何用测试驱动开发将简单图书管理系统变成性能怪兽!
【9月更文挑战第6天】Micronaut框架凭借其轻量级和高性能特性,在Java应用开发中备受青睐。本文通过一个图书管理系统的案例,介绍了在Micronaut下从单元测试到集成测试的全流程。首先,我们使用`@MicronautTest`注解编写了一个简单的`BookService`单元测试,验证添加图书功能;接着,通过集成测试验证了`BookService`与数据库的交互。整个过程展示了Micronaut强大的依赖注入和测试支持,使测试编写变得更加高效和简单。
25 4
|
8天前
|
JSON 测试技术 数据库
Python的Flask框架
Python的Flask框架
|
10天前
|
IDE 测试技术 持续交付
Python自动化测试与单元测试框架:提升代码质量与效率
【9月更文挑战第3天】随着软件行业的迅速发展,代码质量和开发效率变得至关重要。本文探讨了Python在自动化及单元测试中的应用,介绍了Selenium、Appium、pytest等自动化测试框架,以及Python标准库中的unittest单元测试框架。通过详细阐述各框架的特点与使用方法,本文旨在帮助开发者掌握编写高效测试用例的技巧,提升代码质量与开发效率。同时,文章还提出了制定测试计划、持续集成与测试等实践建议,助力项目成功。
35 5
|
11天前
|
机器学习/深度学习 PyTorch 算法框架/工具
python这些库和框架哪个更好
【9月更文挑战第2天】python这些库和框架哪个更好
26 6
|
11天前
|
机器学习/深度学习 数据采集 算法框架/工具
python有哪些常用的库和框架
【9月更文挑战第2天】python有哪些常用的库和框架
17 6
|
9天前
|
数据采集 测试技术 API
在BrowserStack上进行自动化爬虫测试的终极指南
随着互联网的发展,数据价值日益凸显,爬虫技术成为提取网页信息的关键工具。然而,不同环境下的测试与运行挑战重重,特别是在多浏览器、多平台上保证爬虫的稳定性和兼容性尤为困难。BrowserStack作为领先的跨浏览器测试平台,提供了强大的工具和服务。本文将详细介绍如何在BrowserStack上进行自动化爬虫测试,并结合代理IP技术提升爬虫的隐蔽性和成功率。通过具体步骤和案例分析,展示如何利用Selenium、自定义用户代理和Cookie设置来应对反爬虫机制。本指南旨在为开发者提供实用模板,帮助其在多变的测试环境中构建高效的爬虫系统。