You need to enable JavaScript to run this app. Python调用user_win()缺少player、opponent位置参数报错如何解决?
优惠活动
大模型
产品
解决方案
定价
更多

Python调用user_win()缺少player、opponent位置参数报错如何解决?

问题根源
  • 你的user_win()函数定义时要求传入player(玩家选择)、opponent(对手选择)两个参数,但你在script()里调用user_win()时没有传入任何值,所以触发参数缺失报错
  • 另外你的play()函数目前只返回了电脑选择的提示文本,没有把玩家输入值、电脑选择值两个核心数据传出来,你就算想给user_win()传参也拿不到对应的值
  • 除此之外你的代码还有几处逻辑错误会导致运行不符合预期:
    • user_win()返回值末尾多加了逗号,会让返回结果变成元组而非普通字符串,打印时会带多余的括号和引号
    • 玩家输入合法性的判断逻辑错误:player is not 'rock' or 'paper' or 'scissors' 无论玩家输入什么都会判定为真,完全无法实现输入校验效果
    • 输入校验的判断顺序放错了位置,就算逻辑写对也会先走输赢判断,无法触发非法输入提示
    • 递归调用script()时套了print(),会打印多余的None值
修复后可正常运行的代码
import random

def play():
    user = input("Enter 'rock', 'paper', or 'scissors': ").lower()
    computer = random.choice(['rock', 'paper', 'scissors'])
    # 同时返回玩家输入、电脑选择、提示文本三个值
    return user, computer, f'\nThe computer randomly entered "{computer}".'

def user_win(player, opponent):
    # 先判断输入是否合法
    if player not in ['rock', 'paper', 'scissors']:
        return 'Oops, enter a correct word.'
    if (player == 'rock' and opponent =='scissors') \
        or (player == 'scissors' and opponent == 'paper') \
        or (player == 'paper' and opponent == 'rock'):
        return 'Game result: you won!\n'
    elif player == opponent:
        return 'Game result: it\'s a tie!\n'
    else:
        return 'Game result: you lost!'

def script():
    user_choice, com_choice, play_tip = play()
    print(play_tip)
    # 把拿到的玩家、电脑选择传入user_win
    print(user_win(user_choice, com_choice))
    restart = input("Would you like to try again?")
    if restart == "yes":
        # 直接调用即可,不用套print
        script()
    if restart == "no":
        print("Thank you for playing.")

# 启动游戏
script()
核心修改说明
  1. 调整play()函数的返回值,同时输出后续判断输赢需要的玩家、电脑选择数据
  2. 修正输入合法性的判断逻辑,同时调整判断顺序优先校验输入
  3. 移除返回值末尾多余的逗号,保证返回字符串格式正确
  4. 在script()中接收play()返回的两个选择值,传入user_win()完成调用
  5. 优化递归调用逻辑,避免打印多余内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 04:51:03