ќриентаци¤ пробелов в строке

я создаю похожую на палач игру. ¬ принципе, у мен¤ есть секретное слово, например, Ђкрасота и зверьї, и пользователю нужно угадать буквы и, в конечном итоге, все слова.

ѕока мой код работает нормально, но если вы хотите все это проверить, вы пойдете . ¬от соответствующа¤ часть:

def draw ( good_guesses , bad_guesses , secret_word ): # DRAW пробелы, буквы и удары 
    clear () print ( secret_word ) # печать удар¤ет сначала печать ( "Strikes: {} / 7" . format ( len ( bad_guesses ))) print ( " " )  
    
    
    
    

    # ѕечать плохих догадок до сих пор дл¤ письма в bad_guesses : печать ( письма , конец = Ђї ) # есть пространство между каждым элементом печатью ( Ђ пї ) # двойных пустыми строками
    
          
      

    # print found / uniscovered letters for letter in secret_word : if letter in good_guesses : print ( letter , end = "" ) else : print ( '_' , end = "" ) print ( '' ) prettyprinted ">
    
        
            
        
            
    ==

¬ернемс¤ к нашему примеру. дл¤ буквы в secret_word : если письмо в good_guesses : print ( letter , end = "" ) elif letter == '' : print ( '/' , end = "" ) else : print ( '_' , end = "" ) напечатайте ( '' ) строку Ђкрасота и зверьї , пользователь увидит распечатку дл¤ него следующего:

"_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _"

 ак вы можете видеть, пробелы строки печатаютс¤ как символы подчеркивани¤, и это именно то, что ¤ хотел бы изменить.

Ѕыло бы намного лучше, если бы это было напечатано вместо:

"_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

я думаю, может быть, есть способ нацелить пробелы и распечатать их как пробелы, а не подчеркивани¤? Ќе могу пон¤ть, как это сделать.

Ѕлагодарю.

python,python-3.x,

0

Ответов: 3


3 прин¤т

¬ логике вашего кода, вам нужно обрабатывать этот случай с оператором равенства: . “ак что-то вроде этого будет работать:if letter in good_guesses or letter == ' ':

good_guesses

1

я думаю, что вы хотите изменить строку 40 следующим образом:

if letter in good_guesses + ' ':

 роме того, вы можете использовать символы дл¤ :if letter in good_guesses + ' -,': # Commas, spaces, and dashes are "given" to the player.

str.join

Ёто позвол¤ет добавл¤ть и другие символы:

draw

1

¬ы можете внести р¤д улучшений в свой код, в основном с помощью и понимани¤.def draw(good_guesses, bad_guesses, secret_word): # DRAW spaces, letters & strikes clear() print(secret_word) # printing strikes first print("Strikes: {}/7 ".format(len(bad_guesses))) # printing bad guesses so far print("{} ".format(' '.join(bad_guesses))) # print discovered/undiscovered letters print("{} ".format(''.join(letter if letter in good_guesses else '/' if letter == ' ' else '_' for letter in secret_word)))

¬от ' '.join(bad_guesses)функци¤, котора¤ делает то, что делает ваш оригинал, но с запрошенными изменени¤ми и некоторыми другими изменени¤ми:

for

''.join(letter if letter in good_guesses else '/' if letter == ' ' else '_' for letter in secret_word)имеет преимущество перед исходным forциклом, что он не печатает конечное пространство.

'/'соедин¤ет все элементы итератора с пустой строкой. »тератор возвращает письмо, если оно было правильно угадано, '_'дл¤ пробелов и printдл¤ всего остального.

¬ обоих случа¤х предварительна¤ форматирование строки делает ненужным использование пользовательских строк print.

¬от пример вывода дл¤ вашей входной строки, где пользователь догадалс¤ о всех гласных:

>>> draw('aeuy', 'io', 'beauty and the beast')
beauty and the beast
Strikes: 2/7

i  o

_eau_y/a__/__e/_ea__
питон, питон-3.x,