首页 > 解决方案 > 基本功能查询

问题描述

2关于这段代码的问题。代码可以工作,但是关于 is_win 函数的代码中有一些我不明白的地方。

问题 1 - 定义函数 is_win 时,是否在 if 语句中调用它,它位于 def play 函数中?

问题 2 - 如果是,我不明白为什么需要参数用户和计算机来执行计算,而不是玩家和对手。通常,当您调用函数时,信息由函数中定义的参数转换。但在这种情况下,它似乎反过来工作。有人可以解释为什么会这样吗?

谢谢。

import random

def play():
    user = input ("What's your choice? 'R' for rock, 'P' for paper, 'S' for scissors: ")
    computer = random.choice(["r", "p", "s"])
    print (f"Computer chose {computer}")
    if user == computer:
        return ("You tie")

    if is_win(user,computer):
        return ("You won")

    return "You lost"

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

print (play())

标签: functionparameter-passing

解决方案


函数is_win(player, opponent)定义和调用时,player可以opponent是任意变量,不一定同名。

这样想,下面的代码:

if is_win(user, computer):
    return ("You won")

相当于:

if is_win(computer, user):
    return ("You lost")

在第一种情况下,用户是玩家,计算机是对手,而在第二种情况下,计算机是玩家,用户是对手

如果您对此有更多困惑,您需要阅读更多关于 python 中的变量、范围和函数的信息:


推荐阅读