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的乘法结果

总结

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

相关文章
|
10月前
|
人工智能 自然语言处理 测试技术
从人工到AI驱动:天猫测试全流程自动化变革实践
天猫技术质量团队探索AI在测试全流程的落地应用,覆盖需求解析、用例生成、数据构造、执行验证等核心环节。通过AI+自然语言驱动,实现测试自动化、可溯化与可管理化,在用例生成、数据构造和执行校验中显著提效,推动测试体系从人工迈向AI全流程自动化,提升效率40%以上,用例覆盖超70%,并构建行业级知识资产沉淀平台。
从人工到AI驱动:天猫测试全流程自动化变革实践
|
12月前
|
Web App开发 人工智能 JavaScript
主流自动化测试框架的技术解析与实战指南
本内容深入解析主流测试框架Playwright、Selenium与Cypress的核心架构与适用场景,对比其在SPA测试、CI/CD、跨浏览器兼容性等方面的表现。同时探讨Playwright在AI增强测试、录制回放、企业部署等领域的实战优势,以及Selenium在老旧系统和IE兼容性中的坚守场景。结合六大典型场景,提供技术选型决策指南,并展望AI赋能下的未来测试体系。
|
10月前
|
数据采集 人工智能 自然语言处理
Playwright MCP 浏览器自动化框架全面解析
Playwright MCP是微软推出的开源项目,结合Playwright与MCP协议,让AI通过结构化数据直接操作浏览器。告别传统视觉识别,实现高效、精准的网页自动化,广泛应用于测试、爬虫、办公自动化等场景,大幅提升效率与可靠性。
|
10月前
|
存储 消息中间件 API
订单退款自动化接口:高效处理退款流程的技术实现
本文介绍如何设计并实现高效的订单退款自动化接口,基于RESTful API与Python Flask框架,涵盖核心流程、关键技术、代码示例及最佳实践,提升电商系统退款效率与准确性。
|
11月前
|
安全 搜索推荐 机器人
风险规则引擎-RPA 作为自动化依赖业务决策流程的强大工具
机器人流程自动化(RPA)是一种通过软件“机器人”自动执行重复性任务的技术,能大幅提升工作效率。它适用于财务、电商等领域的标准化流程,如账单处理和退货管理。然而,RPA在复杂决策场景中存在局限,需结合决策模型(DMN)和业务规则管理系统(BRMS)实现流程与决策的协同自动化,从而增强灵活性与业务价值。
|
Web App开发 开发框架 .NET
Playwright 自动化测试系列(6)| 第三阶段:测试框架集成​指南:参数化测试 + 多浏览器并行执行
Pytest 与 Playwright 集成可提升自动化测试效率,支持参数化测试、多浏览器并行执行及统一报告生成。通过数据驱动、Fixture 管理和并行优化,显著增强测试覆盖率与执行速度,适用于复杂 Web 应用测试场景。
|
敏捷开发 JSON 负载均衡
自动化流程推进工具的核心价值与优势,如何快速提升团队生产力?
自动化流程推进工具通过任务自动分配、进度跟踪、智能提醒等功能,提升团队协作效率,解决任务分配不均、沟通成本高、流程不规范等问题,助力项目高效执行。
|
12月前
|
JSON 缓存 供应链
API 接口驱动 1688 采购自动化:从商品获取到下单支付的全流程贯通
在B2B电商采购中,1688开放平台通过API实现商品筛选、比价、下单、支付及物流跟踪的全流程自动化,大幅提升采购效率,降低人工成本与错误率。企业可无缝对接ERP系统,实现数据驱动决策,显著优化采购周期、成本与风险管控,助力数字化转型。
|
人工智能 Python
python基本数据类型简介
本文简要介绍了Python的基本数据类型,包括整型、浮点型、字符串、列表、字典和布尔类型,帮助读者对Python数据类型有初步了解。
299 0
|
安全 Java 测试技术
Java 项目实战中现代技术栈下代码实现与测试调试的完整流程
本文介绍基于Java 17和Spring技术栈的现代化项目开发实践。项目采用Gradle构建工具,实现模块化DDD分层架构,结合Spring WebFlux开发响应式API,并应用Record、Sealed Class等新特性。测试策略涵盖JUnit单元测试和Testcontainers集成测试,通过JFR和OpenTelemetry实现性能监控。部署阶段采用Docker容器化和Kubernetes编排,同时展示异步处理和反应式编程的性能优化。整套方案体现了现代Java开发的最佳实践,包括代码实现、测试调试
404 0

推荐镜像

更多