如何将1个函数中的字符串提供给2个其他函数,并在python中打印?

时间:2017-05-17 12:20:00

标签: python

我正在创建一个文本冒险游戏,如果用户输入“x”或“examine”,它就会这样做,它会打印一个房间的描述(存储在一个函数内的一个字符串)

这是代码:

def look(dsc):
    print(dsc)


def usr_input(dsc):


    a = input(">>> ")
    if a == "examine" or a == "x":
        look(dsc)
    if a == "help":
        print("north, n, east, e, south, s, west, w, up, u, down, d, inventory, i, examine, x")
    if a == "north" or a == "n" or a == "forwards":
        return "north"
    if a == "east" or a == "e" or a == "right":
        return "east"
    if a == "south" or a == "s" or a == "backwards":
        return "south"
    if a == "west" or a == "w" or a == "left":
        return "west"
    if a == "up" or a == "u":
        return "up"
    if a == "down" or a == "d":
        return "down"
    else:
        print("Sorry, I don't understand that. (Type 'help' for a list of commands")
        usr_input()
        return False


def room_00():
    room_description = "Description goes here"
    print(room_description)
    usr_input(room_description)


room_00()

基本上,只要用户输入look,我就需要函数“x”来打印该房间的描述,但我无法获得要链接的功能。

3 个答案:

答案 0 :(得分:0)

尝试a = raw_input('>>> '),然后a = a.strip()

def look(dsc):
   print dsc

你需要一个标签而不需要()

答案 1 :(得分:0)

我认为正确的解决方案是创建课堂,其中的实例会存储房间描述,也许还有别的东西,也许是其他房间的门列表(你不会只有一个房间,是吗? )

这个类也应该有look方法让你已经知道了什么。

我认为您应该将当前房间存储在某个全局变量中,当您需要当前房间的描述时,您只需访问该变量,获取Room对象并调用其look方法。

据我所知,访问函数局部变量是不可能的。如果我错了,请纠正我。

答案 2 :(得分:0)

您的代码似乎运行没有任何问题,忽略上面的人,Python 3确实需要括号用于打印调用。

它返回了一个回溯,因为在第28行,你在没有提供参数的情况下调用usr_input()函数。

您可以通过定义如下函数来解决此问题:

def look(dsc=''):
    print(dsc)

这会将空字符串传递给函数,除非你传递一个自己的字符串。

另一个问题是你使用的是raw if语句。所以最后的评估在这里:

if a == "down" or a == "d":
    return "down"
else:
    print("Sorry, I don't understand that. (Type 'help' for a list of commands")
    usr_input()
    return False

转到else分支,因为x既不是“down”也不是“a”,你应该用elif替换第一个下面的所有if语句,并保留最后的其他语句