2012-04-13 99 views
0
def rotate_word(word,number) 
    for i in word: 
     word_num = ord(i) 
     new_word += chr(word_num + number) 
return new_word 

嗨,上面的代码不工作。这是一个python函数。当我运行程序时,我将返回一个错误:“UnboundLocalError:'new_word'在赋值之前引用”Python UnboundLocalError“需要帮助”

这是什么意思?谁能帮我?

我的函数的输出将是:

打印rotate_word( 'ABC',5)

输出:FGH

+0

我已经解决了这个问题。我刚刚宣布new_word =“”的用于发生之前我已经更新了你的代码。噢! – 2012-04-13 01:07:11

+0

下一个问题是'rotate_word('xyz',5)'发生了什么? – 2012-04-13 01:15:01

+0

是的,那下一个问题。我正在尝试解决它。或者你有任何算法吗? – 2012-04-13 01:18:50

回答

2

使用它之前,您应该定义new_word。在for之前将此:

new_word = '' 

你也缺少了高清返回和冒号的压痕。这里有一个固定的版本:

def rotate_word(word, number): 
    new_word = '' 
    for i in word: 
     word_num = ord(i) 
     new_char = chr(word_num + number) 
     if new_char > 'z': 
      new_char = chr(ord(new_char) - 26) 
     new_word += new_char 
    return new_word 

print rotate_word('abc', 5) 
print rotate_word('xyz', 3) 

编辑:所以它包装后'z'