2013-03-01 6 views
-2

Вот мой код:преобразования итерационных элементов в строку

def getGuessedWordd(secretWord, lettersGuessed): 
    lga = "".join(lettersGuessed) 
    swa = "".join(secretWord) 
    jihadi = str() 
    jihad=" " 
    for c in swa: 

     if c in lga: 
      print c 

     if c not in lga: 
      print "_" 

Все значения распечатайте как следующее:

р р л е

Я хочу, чтобы он распечатывался как «яблоко» после завершения итерации. Как я могу это сделать?

+0

его для питона .... –

+0

def getGuessedWordd (secretWord, lettersGuessed): lga = "" .join (lettersGuessed) swa = "".присоединиться (secretWord) джихадисты = Str() джихад =»" для с в SWA: если с в LGA: печать с если с не в LGA: печати „_“ –

+1

Как вы видите значение распечатать как «яблоко»? Этот код определенно будет печатать только один символ в строке. Если вы не дадите нам код и вывод, которые действительно идут вместе, мы не можем сказать вам, как это исправить. – abarnert

ответ

0

Вы хотите импортировать SYS и использовать sys.stdout.write(c)

+0

спасибо миллиону парней ... \ –

1

Есть три способа решения этой проблемы.

Во-первых, нет причин, по которым вам нужно распечатывать символы один за другим, когда вы их найдете. Вместо этого скопируйте их в list (или, что еще лучше, yield их), затем join результат и напечатайте его в конце.

Например:

def getGuessedWordd(secretWord, lettersGuessed): 
    lga = "".join(lettersGuessed) 
    swa = "".join(secretWord) 
    jihadi = str() 
    jihad=" " 
    result = [] 
    for c in swa:  
     if c in lga: 
      result.append(c) 
     if c not in lga: 
      result.append("_") 
    print "".join(result) 

Во-вторых, если вы должны напечатать их, как вы их найдете, вы не можете использовать print. Используйте sys.stdout.write.

В-третьих, если вы можете перейти на Python 3, сделайте это, а затем вы можете использовать print.


Несколько других способов, вы можете улучшить этот код:

  • Там нет необходимости для lga и swa. Если lettersGuessed и secretWord уже являются строками, "".join(lettersGuessed) точно такой же, как lettersGuessed. Но, что еще более важно, даже если бы lettersGuessed были совершенно другой последовательностью символов, это не имело бы значения, потому что единственное, что вы делали с ними, - это for и in.
  • Вы определяете две переменные, которые вы никогда не используете, jihad и jihadi.
  • Нет причин для использования str(); это то же самое, что только "".
  • Нет причин писать два заявления if с совершенно противоположными условиями; просто используйте else.

Таким образом, мы можем упростить все дело много:

def getGuessedWordd(secretWord, lettersGuessed): 
    result = [] 
    for c in secretWord: 
     if c in lettersGuessed: 
      result.append(c) 
     else: 
      result.append("_") 
    print "".join(result) 

После того, как вы сделаете это, то очевидно, что цикл идентичен списку понимания:

def getGuessedWordd(secretWord, lettersGuessed): 
    result = [c if c in lettersGuessed else '_' for c in secretWord] 
    print "".join(result) 
+0

Должен ли я удалить мой? Не видел этого :( – woozyking

+1

@woozyking: Я думаю, если вы ничего не хотите добавить. – abarnert

+0

прошу проголосовать, чтобы удалить его. – woozyking

Смежные вопросы