2017-10-05 42 views
-1

我正在製作一個需要一個單詞並且生成一個單詞梯形圖的程序。例如,您首先輸入的是貓,您輸入要替換的索引,如索引0,然後輸入要替換的字母,如「h」,輸出將爲「hat」0122如你所見,我在get_letter中使用string.replace函數。問題是,當我嘗試更換first_word的指標,我得到的錯誤在使用索引時遇到名稱錯誤

NameError: name 'user_index' is not defined on line 17 

我試圖把3線是連接和打印get_index函數調用下面的字符串代碼,但它不不打印任何東西。

+1

[皮斯創建一個最小的,完整的,並且可驗證示例](https://stackoverflow.com/help/mcve) – sam

+0

由於這是Python 2,因此使用'raw_input()'而不是'input()'。 –

+0

你可以用錯誤消息或堆棧跟蹤來編輯問題嗎? –

回答

2

有許多的與您的代碼),而不是問題,

  1. 的raw_input使用(輸入(),因爲你正在使用python2
  2. 名稱USER_INDEX是get_index一個局部變量()。它在get_letter()中不可訪問。將它作爲參數傳遞給get_letter(user_index)。
  3. 您需要指定list_to_string = list_to_string.replace(first_word [user_index],user_letter)。

這裏是python2正在運行的程序,

first_word = raw_input("Enter a word: ") 
my_list = [first_word] 
print(my_list) 
def get_letter(user_index): 
    while True: 
     user_letter = raw_input("Enter a letter: ") 
     if len(user_letter) > 1: 
      print "Must be exactly one character!" 
      continue 
     if user_letter.isupper(): 
      print "Character must be a lowercase letter!" 
      continue 
     else: 
      list_to_string = "".join(my_list) 
      list_to_string = list_to_string.replace(first_word[user_index], user_letter) 
      print list_to_string 
      break 

def get_index(): 
    while True: 
     user_index = int(raw_input("Enter an index(-1 to quit): ")) 

     if user_index == -1: 
      break 
     elif user_index > len(first_word): 
      print "Invalid index" 
     elif user_index < -1: 
      print "Invalid index" 
     else: 
      get_letter(user_index) 



get_index() 
+0

這似乎也沒有工作,我仍然得到相同的錯誤信息 –

+0

您是否運行我添加到我的答案上面的代碼? –

0

你叫你的變量user_index但但只在您在定義它的函數定義你需要把它作爲參數傳遞給其他功能:

first_word = input("Enter a word: ") 

my_list = [first_word] 

def get_letter(user_index): 
    while True: 
     user_letter = input("Enter a letter: ") 
     if len(user_letter) > 1: 
      print "Must be exactly one character!" 
      continue 
     if user_letter.isupper(): 
      print "Character must be a lowercase letter!" 
      continue 
     else: 
      list_to_string = "".join(my_list) 
      list_to_string.replace(first_word[user_index], user_letter) 
      print list_to_string 
      break 

def get_index(): 
    while True: 
     user_index = int(input("Enter an index(-1 to quit): ")) 

     if user_index == -1: 
      break 
     elif user_index > len(first_word): 
      print "Invalid index" 
     elif user_index < -1: 
      print "Invalid index" 
     else: 
      get_letter(user_index) 



get_index() 
0

試試這個代碼:

first_word = input("Enter a word: ") 

my_list = [first_word] 

def get_letter(): 
    while True: 
     index_value=int(" ".join(str(x) for x in track_index)) 


     user_letter = input("Enter a letter: ") 
     if len(user_letter) > 1: 
      print ("Must be exactly one character!") 
      continue 
     if user_letter.isupper(): 
      print ("Character must be a lowercase letter!") 
      continue 
     else: 
      list_to_string = "".join(my_list) 

      print(list_to_string.replace(first_word[index_value], user_letter)) 

      break 
track_index=[] 
def get_index(): 
    while True: 
     user_index = int(input("Enter an index(-1 to quit): ")) 

     if user_index == -1: 
      break 
     elif user_index > len(first_word): 
      print ("Invalid index") 
     elif user_index < -1: 
      print ("Invalid index") 
     else: 
      track_index.append(user_index) 
      get_letter() 




get_index() 
0

user_index是一個局部變量的get_index功能。要解決此錯誤,您可以:

  1. 將它作爲參數使用get_letter(user_index)並修改def get_letter(user_index)

  • 聲明你的變量作爲global,您的while True:語句之前在get_index函數添加global user_index
  • 相關問題