您的当前位置:首页 > 焦点 > 人机猜拳游戏python 正文

人机猜拳游戏python

时间:2026-10-17 04:35:15 来源:网络整理 编辑:焦点

核心提示

人机猜拳,代码量不大,坑却不少。我写这个Python小游戏时,最意外的不是逻辑判断,而是玩家输入。你以为用户会乖乖输“石头”“剪刀”“布”?不,他们可能打“石头!”、“布吧”、“剪刀啊”,甚至直接敲个

人机猜拳,人机代码量不大,猜拳坑却不少。游戏我写这个Python小游戏时,人机最意外的猜拳不是逻辑判断,而是游戏玩家输入。你以为用户会乖乖输“石头”“剪刀”“布”?人机不,他们可能打“石头!猜拳”、游戏“布吧”、人机“剪刀啊”,猜拳甚至直接敲个“1”。游戏光清洗输入就占了我一半代码。人机
import random choices = ["石头",猜拳 "剪刀", "布"] user = input("出拳:石头/剪刀/布 → ").strip().replace("!",游戏 "").replace("吧", "") if user not in choices: print("别闹,正经出拳。") exit() comp = random.choice(choices) print(f"你出{ user},电脑出{ comp}")
规则本身简单得让人怀疑人生:石头赢剪刀,剪刀赢布,布赢石头。用字典映射胜负关系,比一堆if else清爽得多。
win_map = { "石头": "剪刀", "剪刀": "布", "布": "石头"} if user == comp: print("平局,再来。") elif win_map[user] == comp: print("你赢了,但别得意。") else: print("你输了,菜就多练。")
写这段时我盯着屏幕笑了——三行代码,人类几千年的猜拳博弈就这么被驯服了。可真正有趣的是循环逻辑。你总不能让玩家玩一把就退出吧?我加了个while True,输了必须继续,赢了可以见好就收。
while True: # 上面那堆猜拳代码缩进来 again = input("再来一局?(y/n) ").lower() if again != 'y': print("溜了溜了。") break
这里有个细节:如果玩家输入“Y”或“yes”,我的.lower()能兜住。但要是手滑打个“y空格”,又得strip()。这种边界处理,写的时候觉得啰嗦,实际跑起来才知道多救命。 有个朋友试玩后吐槽:“电脑出拳太随机了,跟傻子似的。”我反驳:“随机才公平。你要是觉得傻,说明你被自己的套路骗了。”他愣住,然后笑了。人机猜拳的乐趣不在输赢,而在观察自己——你是不是总爱出石头?赢了一局就想继续,输了就想翻盘,这种心态比代码本身更值得琢磨。 最后贴个完整版,加了计分和异常处理。代码不长,但够你消磨十分钟。
import random choices = ["石头", "剪刀", "布"] win_map = { "石头": "剪刀", "剪刀": "布", "布": "石头"} score = 0 while True: raw = input("出拳:石头/剪刀/布(或按q退出)").strip().lower() if raw == 'q': break if raw not in choices: print("输入无效,重来。") continue comp = random.choice(choices) print(f"你出{ raw},电脑出{ comp}") if raw == comp: print("平局。") elif win_map[raw] == comp: print("你赢一局。") score += 1 else: print("你输了。") score -= 1 print(f"当前比分:{ score}") print(f"最终得分:{ score}。玩得开心。")
别小看这个游戏。它逼你思考随机性怎么模拟、输入怎么容错、循环怎么退出——全是编程的基本功。而且你写完会发现,自己不知不觉理解了“状态”这个概念:每局游戏其实都是一次独立的状态机转换。 下次有人让你练手Python,别写什么计算器了。猜拳游戏,够味。