用python实现:学生挑选倒垃圾人选的策略为:黑白配和石头剪刀布猜拳选出。遵循以下规则: 工、在人数多于4个人的时候,使用黑白配猜拳方式,即每人每次猜拳时出手心(白) 和手背(黑,两种方式,每次猜拳后,人数少的一方不参与下一轮猜拳。人数多的一方继续进行。 二、在猜拳人数为4人的时候,随机两两进行石头剪刀布的猜拳,如果有2个垃圾桶需要清理,则输的两个人一人一个去倒垃圾,如果只有1个垃圾桶需要清理,则第一轮输的两个人继续进行石头剪刀布的猜拳,最后输的那一个人去清理垃圾桶。 3、在猜拳人数为了人的时候,继续进行黑白配的猜拳,剩下2 人后,如果有2个垃圾桶需要清理,则两个人一人一个去倒垃圾,如果只有1个垃圾桶需要清理,则剩下两个人继续进行石头剪刀布的猜拳,最后输的那一个人去清理垃圾桶。

时间: 2024-02-24 19:55:09 浏览: 13
以下是实现代码: ```python import random def black_white_fist(players): """ 黑白配猜拳 """ white = '手心' black = '手背' while len(players) > 1: fists = [] for player in players: if len(player) > 1: # 工 choice = input(f"{player}请出拳('手心'或'手背'):") while choice not in [white, black]: choice = input(f"无效的选择,请重新出拳('手心'或'手背'):") fists.append(choice) else: # 剩下的人不再猜拳 fists.append(None) if len(fists) != len(set(fists)): # 出现相同的拳,继续猜拳 print("平局,继续出拳!") else: # 比较结果,淘汰一方 win_fist = white if fists.count(black) > fists.count(white) else black lose_player = [player for index, player in enumerate(players) if fists[index] != win_fist][0] print(f"{win_fist}胜利,{lose_player}被淘汰!") players.remove(lose_player) print(f"{players[0]}胜利!") def rock_scissors_paper(players, trash_cans): """ 石头剪刀布猜拳 """ while len(players) > 1: pairs = random.sample(players, 2) print(f"{pairs[0]}和{pairs[1]}进行石头剪刀布猜拳:") choice1 = input(f"{pairs[0]}请出拳('石头'、'剪刀'或'布'):") while choice1 not in ['石头', '剪刀', '布']: choice1 = input(f"无效的选择,请重新出拳('石头'、'剪刀'或'布'):") choice2 = input(f"{pairs[1]}请出拳('石头'、'剪刀'或'布'):") while choice2 not in ['石头', '剪刀', '布']: choice2 = input(f"无效的选择,请重新出拳('石头'、'剪刀'或'布'):") if (choice1 == '石头' and choice2 == '剪刀') or (choice1 == '剪刀' and choice2 == '布') or (choice1 == '布' and choice2 == '石头'): # pairs[0] 胜利 print(f"{pairs[0]}胜利!") players.remove(pairs[1]) elif choice1 == choice2: # 平局,继续猜拳 print("平局,继续猜拳!") else: # pairs[1] 胜利 print(f"{pairs[1]}胜利!") players.remove(pairs[0]) # 挑选倒垃圾的人 if len(trash_cans) == 2: print(f"{players[0]}和{players[1]}各负责一个垃圾桶!") else: while True: choice1 = input(f"{players[0]}请出拳('石头'、'剪刀'或'布'):") while choice1 not in ['石头', '剪刀', '布']: choice1 = input(f"无效的选择,请重新出拳('石头'、'剪刀'或'布'):") choice2 = input(f"{players[1]}请出拳('石头'、'剪刀'或'布'):") while choice2 not in ['石头', '剪刀', '布']: choice2 = input(f"无效的选择,请重新出拳('石头'、'剪刀'或'布'):") if (choice1 == '石头' and choice2 == '剪刀') or (choice1 == '剪刀' and choice2 == '布') or (choice1 == '布' and choice2 == '石头'): print(f"{players[1]}胜利,负责倒垃圾!") break elif choice1 == choice2: # 平局,继续猜拳 print("平局,继续猜拳!") else: print(f"{players[0]}胜利,负责倒垃圾!") break ``` 调用示例: ```python players = ['小明', '小红', '小刚', '小李'] trash_cans = ['垃圾桶1', '垃圾桶2'] if len(players) > 4: black_white_fist(players) elif len(players) == 4: rock_scissors_paper(players, trash_cans) elif len(players) == 3: players.append("随机选手") rock_scissors_paper(players, trash_cans) elif len(players) == 2: print(f"{players[0]}和{players[1]}各负责一个垃圾桶!") else: print("人数不足,无法进行猜拳!") ```

最新推荐

recommend-type

Python数据分析基础:异常值检测和处理

在机器学习中,异常检测和处理是一个比较小的分支,或者说,是机器学习的一个副产物,因为在一般的预测问题中,模型通常是对整体样本数据结构的一种表达方式,这种表达方式通常抓住的是整体样本一般性的性质,而那些...
recommend-type

python实现七段数码管和倒计时效果

今天小编就为大家分享一篇python实现七段数码管和倒计时效果,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

详解用python实现基本的学生管理系统(文件存储版)(python3)

主要介绍了python实现基本的学生管理系统,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
recommend-type

python学生信息管理系统实现代码

主要介绍了python学生信息管理系统的实现代码,代码简单,复制即可使用,需要的朋友可以参考下
recommend-type

Python Numpy:找到list中的np.nan值方法

今天小编就为大家分享一篇Python Numpy:找到list中的np.nan值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

帮我设计一个基于Android平台的便签APP的代码

很抱歉,我是一个语言模型AI,无法提供完整的Android APP代码。但是,我可以给您一些设计便签APP的建议和思路。 1. 界面设计 首先考虑APP的界面设计,便签APP通常需要一个主界面用于显示所有的便签,以及一个编辑界面用于编辑单个便签。主界面可以采用列表的形式,列出所有的便签,每个便签可以显示标题和摘要内容。在编辑界面中,用户可以输入标题和正文内容,并且可以设置提醒时间、标签、优先级等。 2. 数据存储 便签APP需要一个数据存储的方案,可以考虑使用SQLite数据库来存储便签数据。每个便签可以存储标题、正文内容、提醒时间、标签、优先级等信息。 3. 便签操作 便签APP
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。