如何解决机器人猜词结果字符分行打印问题?需整行输出猜词内容
解决机器人猜单词游戏整行输出目标单词的问题
我之前做类似的猜词机器人时也踩过这个坑!你原来的代码里,每次循环都调用await bot.say(),这会让机器人把每个字符/下划线单独发成一条消息,自然就变成每行一个了——而且sys.stdout.flush()在这里完全没用,因为bot.say()是机器人的消息发送接口,和控制台的标准输出不是一个体系。
后来我也是用先拼接字符串再一次性输出的思路解决的,和你修改后的代码逻辑一致,这个方法确实是这类场景的最优解:
text = "" for char in word: if char in guesses: text += char # 用+=写法更简洁,和text = text + char效果完全一致 else: text += " - " failed = failed + 1 await bot.say(text)
核心逻辑就是先把所有要展示的内容(猜中字母和占位下划线)都攒到一个字符串变量里,等遍历完整个单词后,再让机器人一次性发送这个完整字符串,这样就能得到整行的输出效果了。
这个思路还要感谢abccd的提示~
内容的提问来源于stack exchange,提问作者Capn Survivalist
相关产品推荐
相关产品推荐

