2014-11-19 2 views
-1

Мне нужно заменить 1 символ в строке буквой, как игру декодера, но с кодом, который я создал в настоящее время. Мне нужно разработать часть программы, когда кто-то вводит символ и букву, он заменяет символ буквой и сохраняет список, тогда вы продолжаете делать это до тех пор, пока все символы не будут заменены, чтобы создать слово.Ошибка при замене

Список закодированных слов:

#+/084&" 
#3*#%#+ 
8%203: 
,1$& 
!-*% 
.#7&33& 
#*#71% 
&-&641'2 
#))85 
9&330* 

Список слов некодированная:

ACQUIRED 
ALMANAC 
INSULT 
JOKE 
HYMN 
GAZELLE 
AMAZON 
EYEBROWS 
AFFIX 
VELLUM 

Улики:

A# 
M* 
N% 

Код:

#Import Section 
import random 
import string 

class Game(): 

    def __init__(self): 
     words_open = open('Words.txt') 
     self.words = (words_open.read())    
     self.fixwords = self.words 
     solved_open = open('solved.txt') 
     self.solved = (solved_open.read()) 

    def menu_display(self): 
     #Display the menu 
     self.menud = ('''  MENU  
    1. Start Game 
    2. Quit Game 

    Please select 1 or 2''') 
     self.menu() 

    def menu(self): 
     print self.menud 
     #ask player to choose an option 
     self.menu_choice = raw_input(" >>> ") 
     print   
     self.menu_options() 

    def menu_options(self):  
     #When menu option is selected 
     if self.menu_choice == '1': 
      self.s_game() 
     elif self.menu_choice == '2': 
      pass 
     else: 
      print "not valid input" 
      self.menu() 

    def s_game(self): 
     print 'Words:' 
     print self.words 
     self.clues() 

    def clues(self): 
     clue = raw_input('Do you want clues? please enter Yes or No ' 
         '>>> ') 
     clue = clue.upper() 
     print clue 
     clues_open = open('clues.txt') 
     self.cluesclues = (clues_open.read())   
     if clue == 'YES': 
      print '''Words: 
      ''' 
      print self.words 
      print 'Clues:' 
      print self.cluesclues 
      self.sorting() 
     elif clue == 'NO': 
      print self.words 
      self.sorting() 
     else: 
      print "input is not valid" 
      self.clues() 


    def sorting(self): 
     #if self.fixwords == 0: 
      #self.fixwords = (words_open.read()) 
     #else: 
      #pass 
     self.symbol = raw_input("what symbol would you like to replace? >>> ") 
     if self.symbol in self.fixwords: 
      self.nletter = raw_input("that symbol is valid, what letter would you like to swap it with >>> ") 
      self.nletter.upper() 
      #self.fixwords.replace(self.symbol, self.letter[, max]) 
      #self.fixwords.replace(self.symbol, self.nletter) 
      string.replace(self.fixwords, self.symbol, self.nletter.upper) 
      print self.fixwords 
      print self.cluesclues 
      self.prechange() 
     elif self.symbol not in self.fixwords: 
      print "That symbol is not valid or has already been changed" 
      self.sorting()   

    def prechange(self):   
     self.change = raw_input("Do you want to change a letter for another letter? yes or no >>> ") 
     self.change = self.change 
     if self.change == "yes": 
      self.changing() 
     elif self.change == "no": 
      self.sorting() 
     else: 
      print "that is not a valid input" 
      self.prechange() 

    def changing(self): 
     self.chanlet = raw_input("what letter would you like to replace? >>> ") 
     if self.chanlet in self.fixwords: 
      self.letchan = raw_input("that letter is valid, what letter would you like to swap it with >>> ") 
      self.fixwords = string.replace(self.fixwords, self.chanlet, self.letchan)   
      print self.fixwords 
      self.sorting() 
     elif self.chanlet not in self.fixwords: 
      print "That letter does not exist" 
      self.changing() 

game = Game() 
game.menu_display() 
+0

Что вы собственно вопрос? –

+0

Используйте регулярное выражение. Используйте метод sub() для замены буквы за раз. Он возвращает новую строку. Все, что вы делаете, это «old string = re.sub (symbol_to_find, new_symbol)» – ha9u63ar

+0

... или, возможно, 'str.replace()' – cdarke

ответ

0

вы можете использовать функцию replace(). Он может заменить любой символ в строке, даже если он существует несколько раз. Все, что вам нужно сделать, это каждый раз, когда пользователь выбирает символ для замены и письмо, вы рамочный в списке закодированных слов и заменить этот символ с буквой:

symbol = input("Enter the symbol to replace : ") 
letter = input("Enter the letter : ") 
for i in range(0, len(encoded_list)) : 
    encoded_list[i] = encoded_list[i].replace(symbol, letter, len(encoded)) 
Смежные вопросы