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

VSCode编写Python石头剪刀布游戏时部分代码不可达如何解决

代码不可达的原因

VSCode标记不可达的核心原因是这些代码不存在任何可被执行的路径:

  • return语句会立刻终止当前函数的运行,只要执行到return 'tie',同缩进级别下紧跟在它后面的内嵌函数定义永远不会运行,因此被置灰。
  • 你写的第二个is_win函数定义、print(play())调用要么缩进在其他函数的return语句之后,要么缩进在if分支的return语句之后,程序运行时永远走不到这些位置。
  • 你还重复定义了is_win函数,第一个嵌套在play函数里的定义本身就永远不会被触发,属于无效代码。
修复方法
  • 把判断胜负的is_win函数挪到全局作用域,不要嵌套在其他函数、其他分支的return语句后面,补全判断失败的返回逻辑。
  • 调整play函数内的判断顺序:先判断平局,再判断用户获胜的情况,两个分支都不满足才返回失败结果,不要在return语句后写同层级的其他代码。
  • 把启动游戏的print(play())语句挪到全局最外层,不要缩进在任何函数或分支块内部。
修正后可正常运行的代码
import random

def is_win(player, opponent):
    if (player == 'r' and opponent == 's') or (player == 's' and opponent == 'p') \
        or (player == 'p' and opponent == 'r'):
        return True
    return False

def play():
    user = input("What is your choice 'r' for rock, 'p' for paper, 's' for scissors\n")
    computer = random.choice(['r','p','s'])

    if user == computer:
        return 'tie'
    
    if is_win(user, computer):
        return 'You won'
    
    return 'You lost'

print(play())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 01:40:05