Skip to main content
 首页 » 编程设计

python变量传递问题

2025年05月04日13youxin

不久前,我决定开发一款文字冒险游戏。我一直想这样做。但它第一次做了史诗般的失败。这次我越来越近了,但就是不在那里。不过,我想我看到了错误:问题是变量没有被传送到下一个 def。所以我想知道的是如何解决它?

这是一段描述问题的代码:

def start(): 
    print "Hello there Knight... Knight? Sir Knight, what's your name?" 
    name = raw_input("> ") 
    print "Well sir %s of simpleton. We have a message from the queen, do you want to read it?" % name 
    rm = raw_input("> ") 
    rm(rm) 
 
def rm(rm): 
    if rm ==  "yes": 
        print "It says: \n Dear %s, \n Our kingdom is in great danger. Dragon Redpole has captured the beatiful princess. Who ever saves her    rom his dangerous castle may marry her." % name 
        print "What will you do? Go undercover to The Far Lands or in full weaponry" 
        UorW = raw_input("type u or fw \n > ") 
    elif rm ==  "no": 
        print "I am sorry sir, but the queen's word is la.. SHUT UP YOU USELESS PIECE OF TRASH OUT OF THIS ROOM NOW!! You say highly irritated. Will you tell the torturer to torture  the butler in the dungeons?" 
        torture_butler = raw_input(">  ")     
        torture_butler() 
    else:  
        print "That's not possible" 

这是我得到的报告:

Traceback (most recent call last): 
  File "story.py", line 59, in <module> 
    start() 
  File "story.py", line 6, in start 
    rm(rm) 
TypeError: 'str' object is not callable 

请您参考如下方法:

您用 raw_input("> ") 的返回值覆盖名为 rm() 的函数。在这一行之后,名称 rm 将指向一个字符串对象,并且尝试调用该字符串对象失败,因为字符串对象不可调用。重命名变量,使其不影响函数名称。