首页 > 解决方案 > 如何让 mov 功能正常工作

问题描述

所以,我有这个输入命令,它应该给用户无提示的输入,如果它是一个无效的命令来输出“输入”是一个无效的命令。但是,向北、向西等是一个有效的命令,但代码无法识别它。请帮助:)

顺便说一句,播放器是一个模块,其中有一个用于移动播放器位置的类。

代码:

import world, tiles
from player import Player

game = "play"
while game == "play":
    x = input()
    y = " is not a valid command"
    string = x + y
    
    if x == "go north":
        Player.go_north

    if x == "go south":
        Player.go_south
    if x == "go east":
        Player.go_east

    if x == "go west":
        Player.go_west

    if x == "pick up":
        print("pick up what?")

    else:
        print(string)

标签: pythonmoduleadventure

解决方案


似乎有几件事可能是错误的。首先,Player.go_*被作为属性引用,但我希望它们在做某事时应该是函数?从技术上讲,我猜它们可能是属性,但这感觉像是使用它们的错误方式。

其次,我认为您的 if/else 逻辑不是您想要的。您检查每个方向,但即使成功,它也会下降到下一个if语句。所以在最后一次检查时会发生什么,如果它不是“拾取”,它总是会打印出无效的命令字符串。您要么希望每个条件都成为 a 的一部分,if/elif/else以便一旦遇到一个,它就会跳过其他条件,或者您需要continue在任何成功检查后进行 a,因为如果找到匹配项,您只想继续循环。

所以像:

import world, tiles
from player import Player

player = Player()
game = "play"
while game == "play":
    x = input()
    y = " is not a valid command"
    string = x + y
    
    if x == "go north":
        player.go_north()
    elif x == "go south":
        player.go_south()
    elif x == "go east":
        player.go_east()
    elif x == "go west":
        player.go_west()
    elif x == "pick up":
        print("pick up what?")
    else:
        print(string)

推荐阅读