如何解决print的end=' '参数导致后续输入行与输出行重叠问题
解决翻译输出与输入提示重叠的问题
嘿,这个小问题我太熟悉了!你遇到的输出重叠情况,根源在于你用了end=' '让每个翻译后的单词只加空格不换行,导致下一次的输入提示直接跟在翻译结果的同一行末尾。
给你两个简单的修复方案:
方案1:遍历后手动换行
在打印完所有翻译单词后,额外加一个无参数的print(),它会自动输出一个换行符,把输入提示推到下一行:
lan = {} for line in open('dictionary.txt'): en, ab = line.rstrip().split(',') lan[en] = ab req = input('English: ') while req: words = req.split() for i in range(len(words)): print(lan[words[i]], end=' ') # 新增这一行,强制换行 print() req = input('English: ')
方案2:用字符串拼接更优雅地输出
比起循环打印每个单词,我们可以先把所有翻译后的单词用空格拼接成一个字符串,然后一次性打印——print()默认会在结尾添加换行符,这样自然就分隔开了:
lan = {} for line in open('dictionary.txt'): en, ab = line.rstrip().split(',') lan[en] = ab req = input('English: ') while req: words = req.split() # 用生成器表达式获取所有翻译结果,再用join拼接 print(' '.join(lan[word] for word in words)) req = input('English: ')
这两种方案都能让你的输出变成期望的样子:
English: I like python
ngaju kuja-piya malilyi
English:
内容的提问来源于stack exchange,提问作者Crobi267




