Python学习(2)(猜拳小游戏)
2026/8/16 3:07:03 网站建设 项目流程

是对于基本数据类型和分支的简单应用

import random # 使用字典保存数字与手势之间的对应关系 choices = { 1: "石头", 2: "剪刀", 3: "布" } # 电脑随机选择 1、2、3 中的一个数字 pc = random.randint(1, 3) # 获取玩家输入 pl = int(input("请输入你的选择(1:石头,2:剪刀,3:布):")) # 判断输入是否有效 if pl not in choices: print("输入错误,请输入 1、2 或 3。") else: print(f"电脑出了:{choices[pc]}") print(f"你出了:{choices[pl]}") # 判断玩家是否获胜 if ( (pl == 1 and pc == 2) or (pl == 2 and pc == 3) or (pl == 3 and pc == 1) ): print("你赢了!") # 玩家和电脑选择相同 elif pl == pc: print("平局!") # 其他情况都是玩家失败 else: print("你输了!")

1. 导入随机数模块

import random

random是 Python 提供的随机数模块。

在这个小游戏中,我们需要让电脑随机选择石头、剪刀或布,因此要先导入它。

2. 建立数字和手势的对应关系

choices = { 1: "石头", 2: "剪刀", 3: "布" }

这里定义了一个字典choices

  • 数字1对应“石头”;
  • 数字2对应“剪刀”;
  • 数字3对应“布”。

有了这个字典,我们就可以通过数字获得对应的手势名称:

print(choices[1]) # 石头 print(choices[2]) # 剪刀 print(choices[3]) # 布

3. 让电脑随机选择

pc = random.randint(1, 3)

random.randint(1, 3)会随机生成一个从13的整数,并且包含13

生成的结果被赋值给变量pc。这里的pc表示电脑的选择。

4. 获取玩家输入

pl = int(input("请输入你的选择(1:石头,2:剪刀,3:布):"))

input()用来接收玩家输入,但它得到的内容默认是字符串。

例如,玩家输入1时,实际得到的是字符串"1"。因此需要使用int()将它转换成整数1

"1" → 1

转换后的结果被赋值给变量pl,表示玩家的选择。

5. 检查输入是否有效

if pl not in choices: print("输入错误,请输入 1、2 或 3。")

如果玩家输入的数字不在choices字典中,说明玩家没有输入123

例如输入5,程序就会提示输入错误。

6. 显示双方的选择

print(f"电脑出了:{choices[pc]}") print(f"你出了:{choices[pl]}")

这里使用了 Python 的 f-string 格式化字符串。

假设:

pc = 2 pl = 1

那么输出就是:

电脑出了:剪刀 你出了:石头

7. 判断玩家是否获胜

if ( (pl == 1 and pc == 2) or (pl == 2 and pc == 3) or (pl == 3 and pc == 1) ): print("你赢了!")

玩家获胜有三种情况:

pl == 1 and pc == 2

玩家出石头,电脑出剪刀。

pl == 2 and pc == 3

玩家出剪刀,电脑出布。

pl == 3 and pc == 1

玩家出布,电脑出石头。

其中:

  • and表示两个条件必须同时成立;
  • or表示多个条件中只要有一个成立即可。

8. 判断是否平局

elif pl == pc: print("平局!")

如果玩家和电脑选择的数字相同,就表示双方出了相同的手势,因此是平局。

9. 判断失败

else: print("你输了!")

如果不属于获胜和平局的情况,就说明玩家输了。

四、原代码中的问题

原来的获胜判断是:

if pl == 1 and pc == 2 or pl == 2 and pc == 3or pl == 3 or pl == 1:

主要有两个问题。

第一个问题是3or中间没有空格,可能导致语法错误,应写成:

pc == 3 or

第二个问题是最后的判断写成了:

pl == 3 or pl == 1

这意味着只要玩家出布或者石头,就可能直接判定获胜,没有正确判断电脑出了什么。

正确写法应该是:

pl == 3 and pc == 1

完整的获胜条件是:

if ( (pl == 1 and pc == 2) or (pl == 2 and pc == 3) or (pl == 3 and pc == 1) ):

五、运行示例

请输入你的选择(1:石头,2:剪刀,3:布):1 电脑出了:剪刀 你出了:石头 你赢了!

通过这个小游戏,我们练习了:

  • input()获取用户输入;
  • int()转换数据类型;
  • random.randint()生成随机数;
  • 字典保存对应关系;
  • ifelifelse判断条件;
  • andor组合多个条件;
  • f-string 格式化输出内容。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询