2012-04-13 159 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'