Разместить сообщение в той же строке - PullRequest
0 голосов
/ 30 мая 2018

Мой бот распечатал слово со всеми угаданными и неизвестными буквами.Я хочу, чтобы весь оператор печатался в одну строку, но из-за того, как я использую for char in word (поэтому он проверяет, правильно ли угадано каждое слово), он печатает каждый символ в отдельной строке.

for char in word:      
    if char in guesses:   
        await bot.say(char)
    else:
        await bot.say("_")     
        failed = failed + 1 

Как мне исправить это, поскольку я знаю, что вы можете использовать sys.stdout.flush() с регулярной печатью, но пока не могу найти способ заставить этот атрибут работать в моей программе.

РЕДАКТИРОВАТЬ: я получил его на работу с помощью этого кода, где я добавляю символ или _ в строковую переменную, а затем говорю все сразу.Благодарим abccd за эту идею!

text = ""
for char in word:      
    if char in guesses:    
        text = text + char
    else:
        text = (text + " - ")
        failed = failed + 1
await bot.say(text)

1 Ответ

0 голосов
/ 30 мая 2018

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

text = "".join(c if c in guesses or c.isspace() else "_" for c in word)
failed = text.count("_")

await bot.say(text)

(ps Я думаю, что в палач, вы также показывает пробелы.)

...