用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("人数不足,无法进行猜拳!")
```