You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 07:18:13