function - 基本功能查询
问题描述
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())
解决方案
函数is_win(player, opponent)
定义和调用时,player
可以opponent
是任意变量,不一定同名。
这样想,下面的代码:
if is_win(user, computer):
return ("You won")
相当于:
if is_win(computer, user):
return ("You lost")
在第一种情况下,用户是玩家,计算机是对手,而在第二种情况下,计算机是玩家,用户是对手。
如果您对此有更多困惑,您需要阅读更多关于 python 中的变量、范围和函数的信息:
推荐阅读
- python -
必须解决这个问题? - javascript - 执行第一个函数后如何调用第二个函数
- python - 与 plotly 中的悬停数据交互
- sql - SQL - 为给定列中的值获取另一列的值
- r - 根据相同的条件创建多个列
- mysql - Laravel 5 insert 无需 $fillable 即可工作
- javascript - 我可以删除我网上商店中的所有“.0000”外观吗?
- spring-boot - 带有匿名端点的 Spring“webflux oauth2 资源服务器”
- chart.js - 当在任意值上方/下方绘制时,如何更改 Chart.js 线条的颜色?
- css - 在 rmarkdown 中将文本强制为两列时,项目符号重复数字