题目要求
规则:系统随机出拳,在控制台中循环猜测.
提示:(1)将胜利的策略存入容器
(
(“石头”,“剪刀”),
(“剪刀”,“布”),
(“布”,“石头”)
)
(2) 将用户猜的拳与系统出拳形成一个元组
作业:实现三局两胜.
```python
import random
# 定义一个输入出拳的函数
def hostInputfist():
# 初始化数值及列表
loop = 0
list1 = []
tuple_s = {}
# 定义一个存放剪刀、石头、布的字典
fist_number = {"剪刀": 1,"石头": 2,"布": 3}
# 循环三次,使得游戏有三局
while loop <= 2:
# 系统随机生成的随机出拳
random_fist = random.choice(('剪刀', '石头', '布'))
print("系统随机给出的拳:" + random_fist)
# 用户输入一个出拳
fist = input("用户输入的拳头:")
# 对用户输入的值进行判断,如果不在其中跳出输入,系统随机更改出拳
if fist not in (key for key in fist_number.keys()):
print("输入错误请重新输入")
continue
# 两个字符串相等,跳出
if fist == random_fist:
print("系统给出的拳头相同不添加")
continue
# 否则胜出(计算机或用户胜出)
else: # 对用户与系统中对应的字典数值比较,判断输赢(可以把用户赢得直接判断出来其余都是系统赢),赢了尾部添加
if fist_number[random_fist]<fist_number[fist]<fist_number["布"] or \
fist_number["剪刀"]<fist_number[random_fist]<fist_number[fist]or \
fist_number[fist]<fist_number["石头"]<fist_number[random_fist]:
print('用户赢啦')
list1.append((fist, random_fist))
tuple_s = tuple(list1)
else:
# 计算机赢了不添加
print('输啦,计算机赢了,不添加')
# 将循环的次数每次加一
loop = loop + 1
print("第%d次数输入完成" % loop)
# 游戏最终的目的是进行三局两胜,如果用户运气不佳三局都输了或者两局可以根据元组的长度进行判断输赢
if len(tuple_s) < 2:
print("系统胜出")
else:
print("用户胜出")
if __name__ == '__main__':
hostInputfist()