Python 为什么我的石头剪纸代码没有在JupyterLab中执行?

Python 为什么我的石头剪纸代码没有在JupyterLab中执行?,python,Python,所以最近我尝试了一些python,从一个石头剪刀代码开始,它工作得很好,直到它没有,我实际上没有改变任何东西,它只是在JupyterLab中停止工作。此外,如果您看到任何可能性,请随时分享一些关于如何缩短此代码的提示 代码: 代码在JupyterLab中运行良好,甚至在我的Jupyter笔记本VSCode中也运行良好,因此我怀疑我们是否有足够的信息来帮助您。也许你需要重新启动你的内核 但是,我建议进行以下增强:您的功能包括游戏逻辑和输入/输出管理。根据“独立关注点”范例,您应该提取后者,例如,将

所以最近我尝试了一些python,从一个石头剪刀代码开始,它工作得很好,直到它没有,我实际上没有改变任何东西,它只是在JupyterLab中停止工作。此外,如果您看到任何可能性,请随时分享一些关于如何缩短此代码的提示

代码:


代码在JupyterLab中运行良好,甚至在我的Jupyter笔记本VSCode中也运行良好,因此我怀疑我们是否有足够的信息来帮助您。也许你需要重新启动你的内核

但是,我建议进行以下增强:您的功能包括游戏逻辑和输入/输出管理。根据“独立关注点”范例,您应该提取后者,例如,将其放在另一个函数中。然后,逻辑由“大量if语句”(又名“初学者代码”)组成,产生7个决策点(圈复杂度Tx=8)。您可以轻松地将逻辑放入决策矩阵,然后在函数中只剩下2个决策点:

def evaluate_game(p1: str, p2: str) -> str:
    """Evalute a Rock-Paper-Sissors game
    :param p1: selection player 1
    :type p1: str
    :param p2: selection player 2
    :type p2: str
    :return: result
    :rtype: str
    """
    DECISION_MATRIX = {
        'Rock': {'Paper': 'Player 2 Wins',
                 'Scissors': 'Player 1 Wins'},
        'Paper': {'Rock': 'Player 1 Wins',
                  'Scissors': 'Player 2 Wins'},
        'Scissors': {'Rock': 'Player 2 Wins',
                     'Paper': 'Player 1 Wins'}}
    if p1 == p2:
        return 'Game Draw'
    else:
        try:
            return DECISION_MATRIX[p1][p2]
        except KeyError:
            return 'Check Spelling'

代码在JupyterLab中运行良好,甚至在我的Jupyter笔记本VSCode中也运行良好,因此我怀疑我们是否有足够的信息来帮助您。也许你需要重新启动你的内核

但是,我建议进行以下增强:您的功能包括游戏逻辑和输入/输出管理。根据“独立关注点”范例,您应该提取后者,例如,将其放在另一个函数中。然后,逻辑由“大量if语句”(又名“初学者代码”)组成,产生7个决策点(圈复杂度Tx=8)。您可以轻松地将逻辑放入决策矩阵,然后在函数中只剩下2个决策点:

def evaluate_game(p1: str, p2: str) -> str:
    """Evalute a Rock-Paper-Sissors game
    :param p1: selection player 1
    :type p1: str
    :param p2: selection player 2
    :type p2: str
    :return: result
    :rtype: str
    """
    DECISION_MATRIX = {
        'Rock': {'Paper': 'Player 2 Wins',
                 'Scissors': 'Player 1 Wins'},
        'Paper': {'Rock': 'Player 1 Wins',
                  'Scissors': 'Player 2 Wins'},
        'Scissors': {'Rock': 'Player 2 Wins',
                     'Paper': 'Player 1 Wins'}}
    if p1 == p2:
        return 'Game Draw'
    else:
        try:
            return DECISION_MATRIX[p1][p2]
        except KeyError:
            return 'Check Spelling'

您需要在另一个单元格中调用该函数,正如另一个人之前提到的,您应该可以:)


您只是定义了函数,而没有执行它。

您需要在另一个单元格中调用函数,正如另一个人之前提到的,您应该可以:)


你只是定义了函数,没有执行它。

你真的在另一个单元格中调用了函数吗?这里只有定义。您还应该考虑添加更多关于它如何停止工作的描述,运行时错误?意外输出?或者根本不运行?不,我没有在另一个单元格中调用该函数,它只是在那里@AmarthGül它只是停止工作,不,我没有得到任何错误或任何东西。当我尝试运行它时,它创建了一个新的单元格,其他什么都没有发生。嗯,你的代码没有做任何事情。。。您只需定义一个函数。你需要用
()
像这样调用
石头剪刀()
你真的在另一个单元格中调用了这个函数吗?这里只有定义。您还应该考虑添加更多关于它如何停止工作的描述,运行时错误?意外输出?或者根本不运行?不,我没有在另一个单元格中调用该函数,它只是在那里@AmarthGül它只是停止工作,不,我没有得到任何错误或任何东西。当我尝试运行它时,它创建了一个新的单元格,其他什么都没有发生。嗯,你的代码没有做任何事情。。。您只需定义一个函数。你需要用
()
打电话,就像用
石头、布、剪刀()
@Daumus@Daumus
Rock_Paper_Scissors()