【问题标题】:Python- including a variable within the text part of parameters [closed]Python-在参数的文本部分中包含一个变量[关闭]
【发布时间】:2017-12-06 18:39:51
【问题描述】:

所以在 Pygame 中有一个向用户显示消息的功能:

def message_to_user(msg, color, X_displacement, Y_displacement):
    # creating function to display messages to the user
    message=font.render(msg,True,color)
    msgcenter=200+X_displacement,200+Y_displacement
    Game_display.blit(message,msgcenter)

现在我需要显示一条消息,同时显示另一个变量:

        message_to_user("You managed to complete",levelcounter,"levels",green,0,40)

这是错误:

TypeError: message_to_user() takes exactly 4 arguments (6 given)

我明白为什么会出现这个错误,只是想不出办法解决它

【问题讨论】:

  • 错误就是它所说的。你的函数有四个参数:msg、color、X_displacement、Y_displacement。你给了六个。查看上面的重复链接,了解如何在 Python 中正确连接字符串,以便只发送所需的四个参数。

标签: python


【解决方案1】:

您需要在将字符串传递给函数之前构建字符串

mess = "You managed to complete {} levels".format(levelcounter)
message_to_user(mess, green, 0, 40)

【讨论】:

  • 啊,这么简单的解决方案,谢谢
【解决方案2】:

我认为这... message_to_user("你成功完成",levelcounter,"levels",green,0,40)

应该变成……

message_to_user("你成功完成" +str(levelcounter)+" 关卡",green,0,40)

【讨论】:

    【解决方案3】:

    您可以将字符串与变量连接起来,使您的消息成为 1 个参数

    message_to_user("You managed to complete " + levelcounter + " levels",green,0,40)
    

    这将修复函数调用以使参数与变量匹配

    【讨论】:

    • 如果levelcounter 不是字符串会怎样?
    • TypeError:无法连接“str”和“int”对象。会发生。所以使用拉里对 str(argument) 的回答使其成为字符串
    【解决方案4】:

    我只是将levelcounter 作为参数,然后在定义中创建msg

    def message_to_user(levelcounter, color, X_displacement, Y_displacement):
        msg = "You managed to complete " + str(levelcounter) + " levels!"
        message = font.render(msg, True, color)
        msgcenter = 200 + X_displacement, 200 + Y_displacement
        Game_display.blit(message, msgcenter)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-18
      • 2014-01-22
      • 2014-02-07
      • 1970-01-01
      • 2013-04-11
      相关资源
      最近更新 更多