Python程序输入提示顺序颠倒 先请求文本再要行号的原因及修复方法
问题原因
Python 执行赋值语句时,会先把等号右侧的表达式全部计算完毕拿到结果,才会去计算等号左边的赋值位置。
你出问题的就是这行代码:
list_of_lines[int(input('What line would you like to edit?: ')) - 1] = input('Write your text here: ') + '\n'
运行时会先执行等号右边的input('Write your text here: '),先弹出输入文本的提示,等你输完文本、右边的字符串拼好之后,才会去算左边方括号里的行号输入逻辑,自然提示顺序就反过来了。
修复方法
别把两个input塞在同一条赋值语句里,分开写,按你想要的顺序先后调用就行。另外建议用with语句管理文件,不用手动写close,也避免文件资源泄漏,修复后的完整代码:
def edit_line(file): with open(file, 'r', encoding='utf-8') as f: list_of_lines = f.readlines() # 按顺序先拿行号,再拿新文本 target_line = int(input('What line would you like to edit?: ')) - 1 content = input('Write your text here: ') + '\n' list_of_lines[target_line] = content with open(file, 'w', encoding='utf-8') as f: f.writelines(list_of_lines) edit_line('sample.txt')
如果要做鲁棒性优化,可以额外加行号范围判断、输入合法性校验,避免用户输入非数字、超出文件总行数的行号时程序抛出异常。
内容的提问来源于stack exchange,提问作者Internet Warrior
相关产品推荐
相关产品推荐

