You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现人机石头剪刀布游戏 定义botmove后无输出如何解决

问题原因
  • 缺少random模块导入:使用random.randint()前必须先导入random模块,否则代码首行就会抛出命名错误,若运行环境屏蔽了错误提示,就会出现逻辑中断、无对战结果输出的情况。
  • 变量名冲突:你将存储随机结果的变量直接命名为random,会覆盖导入的random模块对象,属于错误写法,会导致后续依赖random模块的逻辑失效。
  • 无输入合法性校验:如果用户输入的出招内容不是r/p/s,不会匹配到任何胜负判断分支,也就不会打印任何输出。
修复方案
  1. 在代码最开头添加import random语句导入依赖模块
  2. 将存储随机数的变量名改为random_num,避免和模块名冲突
  3. 增加用户输入合法性校验,对不符合要求的输入给出提示
  4. 可选优化:将独立的if分支改为if-elif结构,减少不必要的判断
修复后完整代码
import random

# 生成电脑出招,避免变量名和模块名冲突
random_num = random.randint(1,3)
if random_num == 1:
    botmove = 'r'
elif random_num == 2:
    botmove = 'p'
else:
    botmove = 's'


print('Play Rock,Paper,Scissors?')
print('Y/N')
play = input('>').lower().strip()

if play == 'n':
    print('Thank You For Playing.')
elif play == 'y':
    print('Rock Or Paper Or Scissors?')
    print('R/P/S')
    move = input('>').strip().lower()
    
    # 先校验输入是否合法
    if move not in ['r','p','s']:
        print('输入错误,请输入R/P/S中的一个')
    else:
        # 胜负判断
        if move == 'r':
            if botmove == 'r':
                print('The Computer Chose:', botmove)
                print('Draw.')
            elif botmove == 'p':
                print('The Computer Chose:', botmove)
                print('You Lost.')
            else:
                print('The Computer Chose:', botmove)
                print('You Won.')
        elif move == 'p':
            if botmove == 'r':
                print('The Computer Chose:', botmove)
                print('You Won.')
            elif botmove == 'p':
                print('The Computer Chose:', botmove)
                print('Draw.')
            else:
                print('The Computer Chose:', botmove)
                print('You Lost.')
        elif move == 's':
            if botmove == 'r':
                print('The Computer Chose:', botmove)
                print('You Lost.')
            elif botmove == 'p':
                print('The Computer Chose:', botmove)
                print('You Won.')
            else:
                print('The Computer Chose:', botmove)
                print('Draw.')
else:
    print('输入错误,请输入Y/N')

内容的提问来源于stack exchange,提问作者WereWolf_Hunter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 00:30:00