当前位置: 首页 > news >正文

python经典百题之乒乓球比赛

题目:

两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。

第一种方式:

思路:使用嵌套循环,枚举所有可能的组合,然后判断是否满足a和c的要求,若满足则输出比赛名单。

优点:思路简单,易于理解和实现。

缺点:效率较低,枚举了所有组合,不适用于数据量较大的情况。

代码实现如下:

team_a = ["a", "b", "c"]
team_b = ["x", "y", "z"]for i in range(3):for j in range(3):for k in range(3):if i != j and j != k and i != k:# 保证三个队员不重复if team_a[i] != "a" and team_b[i] != "x" and team_b[j] != "x" and team_b[k] != "z":print("甲队比赛名单:", team_a[i], team_a[j], team_a[k])print("乙队比赛名单:", team_b[i], team_b[j], team_b[k])

第二种方式:

思路:使用列表解析,先生成所有可能的组合,然后筛选出符合条件的比赛名单。

优点:代码简洁,可读性高;比第一种方法效率更高。

缺点:如果比赛名单不唯一,可能输出多个符合条件的结果。

代码实现如下:

team_a = ["a", "b", "c"]
team_b = ["x", "y", "z"]possible_match = [(a, b, c, x, y, z) for a in team_a for b in team_a for c in team_a for x in team_b for y in team_b for z in team_b if len(set([a, b, c, x, y, z])) == 6]match = filter(lambda m: m[0] != "a" and m[3] != "x" and m[4] != "x" and m[5] != "z", possible_match)for m in match:print("甲队比赛名单:", m[:3])print("乙队比赛名单:", m[3:])

第三种方式:

思路:使用递归函数,按顺序从队列中选出一名队员,如果选择的队员与之前的队员满足条件,则递归调用函数,找出下一名队员,直到选出三名队员,判断是否符合条件,符合则输出比赛名单。

优点:代码可维护性高;如果比赛名单不唯一,可以全部找到。

缺点:代码实现相对较复杂,难度较大。

代码实现如下:

def get_match(team_a, team_b, match, selected_a, selected_b):if len(selected_a) == 3:if "x" not in selected_b and "z" not in selected_b:print("甲队比赛名单:", selected_a)print("乙队比赛名单:", selected_b)returnfor i, a in enumerate(team_a):if a not in selected_a and (a != "a" or "x" not in selected_b):for j, b in enumerate(team_b):if b not in selected_b and (a != "c" or b != "x") and (a != "c" or b != "z"):get_match(team_a, team_b, match, selected_a + [a], selected_b + [b])team_a = ["a", "b", "c"]
team_b = ["x", "y", "z"]
get_match(team_a, team_b, [], [], [])

相关文章:

python经典百题之乒乓球比赛

题目: 两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。第一种方式: 思路…...

【C++ Exceptions】Catch exceptions by reference!

catch exceptions 写一个catch子句时必须指明异常对象是如何传递到这个子句来的,三种方式: by pointerby valueby reference 接下来比较它们使用时会出现的问题,以说明最好的选择是by reference。 catch by pointer 无需复制对象&#x…...

高斯公式证明

高斯公式: 若空间闭区域 Ω \Omega Ω 由光滑的闭曲面 Σ \Sigma Σ 围成,则 ∫ ∫ ∫ Ω ( ∂ P ∂ x ∂ Q ∂ y ∂ R ∂ z ) d v ∮ ∮ Σ P d y d z Q d z d x R d x d y \int \int \int _{\Omega}(\frac{\partial P}{\partial x} \frac{\p…...

速卖通获得aliexpress商品详情 API 返回值说明

item_get-获得aliexpress商品详情 aliexpress.item_get 进入测试 公共参数 名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包括在请求地址中)[item_search…...

c++语法-模板

模板 模板是C中一种强大的特性,允许你编写通用的代码,以便在不同数据类型上重复使用。模板分为函数模板和类模板,它们都是在编译时生成具体代码的蓝图。 函数模板 函数模板是一种定义通用函数的方式,可以在不同数据类型上使用相…...

DMNet复现(一)之数据准备篇:Density map guided object detection in aerial image

一、生成密度图 密度图标签生成 采用以下代码,生成训练集密度图gt: import cv2 import glob import h5py import scipy import pickle import numpy as np from PIL import Image from itertools import islice from tqdm import tqdm from matplotli…...

k8s相关命令-命名空间

k8s相关命令目录 文章目录 前言一、创建命名空间二、删除命名空间三、查看命名空间列表四、查看命名空间列表五、查看特定命名空间下所有资源六、删除特定命名空间下所有资源 前言 记录k8s命名空间的相关操作命令 一、创建命名空间 kubectl create namespace <namespace&g…...

CG Magic分享同一场景里下,VR渲染器和CR渲染器哪个好?

渲染操作时&#xff0c;VR渲染器和CR渲染器的对比成为常见问题了。这个问题很多人都会问。 今天CG Magic小编通过一个真实的项目&#xff0c;就是同一场景下来比较一下VR渲染器和CR渲染器的区别。 以下图为例是用来测试的场景当年的最终图。采用了当年的一个伊丽莎白大街152号的…...

Hive工作原理

Hive 工作原理详解-阿里云开发者社区 Hive的服务端组件 1. Driver组件&#xff1a;该组件包括&#xff1a;Compiler、Optimizer、Executor,它可以将Hive的编译、解析、优化转化为MapReduce任务提交给Hadoop1中的JobTracker或者是Hadoop2中的SourceManager来进行实际的执行相应…...

vue 使用this.$set设置对象属性值时,不更新试图

vue 使用this.$set设置对象属性值时&#xff0c;不更新试图。 后来发现是因为若对象中存在该属性时&#xff0c;只更新值&#xff0c;不添加响应监测。 //vue/src/core/observer/index.js 源码片段/*** Set a property on an object. Adds the new property and* triggers ch…...

uniapp视频播放功能

UniApp提供了多种视频播放组件&#xff0c;包括视频播放器&#xff08;video&#xff09;、多媒体组件&#xff08;media&#xff09;、WebView&#xff08;内置Video标签&#xff09;等。其中&#xff0c;video和media组件是最常用的。 video组件 video组件是基于HTML5 vide…...

Java面向对象七大原则以及设计模式单例模式和工厂模式简单工厂模式

面向对象的七大原则&#xff08;OOP&#xff09; 1,开闭原则&#xff1a; 对扩展开发&#xff0c;对修改关闭 2.里氏替换原则&#xff1a; 继承必须确保超类所拥有的子类的性质在子类中仍然成立 3.依赖倒置原则&#xff1a; 面向接口编程&#xff0c;不要面向实现编程&am…...

Linux 遍历目录(cd 命令)

Linux 遍历目录&#xff08;cd 命令&#xff09; 文章目录 Linux 遍历目录&#xff08;cd 命令&#xff09;一、cd 命令二、绝对文件路径三、相对文件路径 一、cd 命令 在 Linux 文件系统上&#xff0c;可以使用 cd 命令将 shell 会话切换到另一个目录。cd 命令的格式也很简单…...

整合Nginx实现反向代理

针对后端启动多个服务&#xff0c;接口需要统一请求路径时&#xff0c;可以使用nginx进行请求地址反向代理。 1.下载: nginx 2.下载完成后解压&#xff0c;找到配置文件nginx.conf&#xff08;在解压文件的conf目录中&#xff09;&#xff0c;在http中增加以下示例代码&#x…...

Linux:IP转INT详解

一、IP地址介绍 IP地址&#xff08;Internet Protocol Address&#xff09;是指互联网协议地址&#xff0c;是所有连接到网络设备的唯一标识符。IP地址由32位二进制数表示&#xff0c;通常以四段十进制数&#xff08;每个数值范围为0-255&#xff09;表示&#xff0c;例如192.1…...

43.MQ—RabbitMQ

目录 一、MQ—RabbitMQ。 &#xff08;1&#xff09;同步调用与异步调用。 &#xff08;1.1&#xff09;同步调用。 &#xff08;1.2&#xff09;异步调用。 &#xff08;2&#xff09;MQ之间的区别。 &#xff08;3&#xff09;RabbitMQ学习。 &#xff08;3.1&#xf…...

Leetcode154. 寻找旋转排序数组中的最小值(存在重复元素)

力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 已知一个长度为 n 的数组&#xff0c;预先按照升序排列&#xff0c;经由 1 到 n 次 旋转 后&#xff0c;得到输入数组。例如&#xff0c;原数组 nums [0,1,4,4,5,6,7] 在变化后可能得到&#xff1a;…...

docker查看镜像的latest对应的具体版本

查询容器镜像时&#xff0c;TAG只显示latest&#xff0c;而不是显示具体的版本号 docker images # 显示内容 REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 605c77e624dd 20 months ago 141MB redis latest 7614ae945…...

RabbitMQ深入 —— 死信队列

前言 前面荔枝梳理了RabbitMQ中的普通队列、交换机以及相关的知识&#xff0c;在这篇文章中荔枝将会梳理RabbitMQ的一个重要的队列 —— 死信队列&#xff0c;主要了解消息流转到死信队列的三种的方式以及相应的实现demo。希望能帮助到有需要的小伙伴~~~ 文章目录 前言 死信队…...

【React + Umi】自定义离开页面拦截弹框事件

在 react umi 中对离开页面的行为进行自定义弹窗拦截控制。以下为可选的方案分析。 wrapper 首先&#xff0c;因为项目框架是 umi&#xff0c;最先想到了 umi 路由的 wrapper 装饰器&#xff0c;但仔细一想又不太对&#xff0c; wrapper 争对于跳转到某个特定页面的前置行为…...

AI应用框架Weam:微服务化架构与工作流编排实战

1. 项目概述&#xff1a;一个面向未来的AI应用框架 最近在AI应用开发领域&#xff0c;一个名为“Weam”的项目开始引起不少开发者的注意。它不是一个具体的AI模型&#xff0c;而是一个旨在构建、管理和部署AI应用的开源框架。简单来说&#xff0c;你可以把它想象成一个“AI应用…...

论文AI率从50%降到10%:4个实用方法+3个高效技巧

辛辛苦苦写完的论文&#xff0c;一查AI率直接飙到50%&#xff0c;但学校要求必须控制在10%以内&#xff0c;是不是瞬间感觉之前的熬夜都白搭了&#xff1f;改来改去AI率没降多少&#xff0c;头发反而掉了一大把&#xff1f;别着急&#xff0c;今天就把我亲测好用的降AI率全攻略…...

Ctool JSON工具完全指南:从格式化到Schema生成的完整流程

Ctool JSON工具完全指南&#xff1a;从格式化到Schema生成的完整流程 【免费下载链接】Ctool 程序开发常用工具 chrome / edge / firefox / utools / windows / linux / mac 项目地址: https://gitcode.com/gh_mirrors/ct/Ctool Ctool是一款功能强大的程序开发常用工具&…...

下一代Web字体性能革命:Inter字体3大智能优化策略突破渲染瓶颈

下一代Web字体性能革命&#xff1a;Inter字体3大智能优化策略突破渲染瓶颈 【免费下载链接】inter The Inter font family 项目地址: https://gitcode.com/gh_mirrors/in/inter 在数字体验时代&#xff0c;字体性能已成为前端性能优化的关键战场。Inter字体作为现代无衬…...

Python爬虫实战:手把手教你如何采集开源许可证 FAQ 文章归档!

㊗️本期内容已收录至专栏《Python爬虫实战》&#xff0c;持续完善知识体系与项目实战&#xff0c;建议先订阅收藏&#xff0c;后续查阅更方便&#xff5e; ㊙️本期爬虫难度指数&#xff1a;⭐⭐ (中级) &#x1f250;福利&#xff1a; 一次订阅后&#xff0c;专栏内的所有文章…...

动态物理模拟中的碰撞处理:Pymunk中的球体大小变化

在物理模拟和游戏开发中,碰撞处理是一个常见但复杂的问题。特别是在使用像Pymunk这样的物理引擎时,如何正确地处理物体在碰撞后的行为(比如体积变化)显得尤为重要。本文将通过一个实际的例子,展示如何在Pymunk中实现一个球体在每次与地面或墙壁碰撞后,其半径增大的逻辑。…...

第四章 数字孪生制作完整流程

4.1 项目需求分析、场景规划、页面布局设计数字孪生项目开发前期必须进行需求分析&#xff0c;明确项目用途、使用人群、展示内容以及功能模块&#xff0c;避免盲目开发造成资源浪费。需求分析是整个项目开发的逻辑起点&#xff0c;决定项目最终呈现效果。4.1.1 需求分析开发者…...

AI编程协作实战:从提示工程到全周期开发工作流

1. 项目概述&#xff1a;从零开始的AI编程启蒙最近在GitHub上看到一个挺有意思的项目&#xff0c;叫jnMetaCode/ai-coding-101。光看名字&#xff0c;你大概能猜到它和AI编程有关&#xff0c;但“101”这个后缀又暗示着它的入门属性。作为一个在代码堆里摸爬滚打多年的老码农&a…...

基于MCP协议构建本地AI多代理协作平台:Roundtable AI实战指南

1. 项目概述&#xff1a;告别单打独斗&#xff0c;开启AI圆桌会议如果你和我一样&#xff0c;每天在IDE里写代码、调试、优化&#xff0c;那你肯定也经历过这种场景&#xff1a;遇到一个复杂的性能问题&#xff0c;你打开Claude的聊天窗口&#xff0c;把前端错误日志贴进去&…...

UCC25600 LLC谐振变换器:从补偿网络设计到软启动与过流保护的实战调试

1. UCC25600 LLC谐振变换器入门指南 第一次接触LLC谐振变换器时&#xff0c;我被它的高效和低EMI特性吸引&#xff0c;但真正用UCC25600做项目时才发现理论和实操差距不小。这款德州仪器的控制器确实强大&#xff0c;但要把它的性能完全发挥出来&#xff0c;得先理解几个关键点…...