(猜拳小游戏))
是对于基本数据类型和分支的简单应用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 randomrandom是 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)会随机生成一个从1到3的整数并且包含1和3。生成的结果被赋值给变量pc。这里的pc表示电脑的选择。4. 获取玩家输入pl int(input(请输入你的选择1石头2剪刀3布))input()用来接收玩家输入但它得到的内容默认是字符串。例如玩家输入1时实际得到的是字符串1。因此需要使用int()将它转换成整数11 → 1转换后的结果被赋值给变量pl表示玩家的选择。5. 检查输入是否有效if pl not in choices: print(输入错误请输入 1、2 或 3。)如果玩家输入的数字不在choices字典中说明玩家没有输入1、2或3。例如输入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()生成随机数字典保存对应关系if、elif和else判断条件and和or组合多个条件f-string 格式化输出内容。