【问题标题】:Empty line before input prompt on Python 3Python 3 输入提示前的空行
【发布时间】:2021-10-24 16:07:13
【问题描述】:

当我运行代码时

print("Hi")
input("Hello: ")

Python Tutor(Python 3.6)上,我得到了预期的输出(忽略我的输入)

Hi
Hello:

但是,当我使用 Spyder 3.3.1 和 Python 3.7 在我的计算机上运行相同的两行代码时,我得到了输出

Hi

Hello: 

我想了解为什么这个空行出现在 Spyder 中,以及如何摆脱它。

【问题讨论】:

  • 您是否尝试过使用命令行调用 Python 脚本而不是使用 Spyder 运行代码并查看是否发生了同样的事情?我无法重现你得到的东西。

标签: python python-3.x spyder


【解决方案1】:

你没有做错任何事。蜘蛛是。这是confirmed bug, issue #5242

开发人员似乎没有时间修复它,它自 2017 年 9 月以来一直在进行:

感谢您的报告。虽然很烦人,但这是一个简单的错误,我们现在没有时间修复它。对不起。

【讨论】:

    【解决方案2】:

    OP的问题分为两部分:

    1. “我想了解为什么这个空行出现在 Spyder 中,...”
    2. “……以及如何摆脱它。”

    Martijn Pieters 的answer,他指出这是一个known issue,只涉及第一部分。这个答案解决了第二个问题。

    执行以下操作以删除 print 的默认换行符:

    print("Hi", end="")
    input("Hello: ")
    

    哪个会返回:

    Hi
    Hello:
    

    注意:这有点小技巧,即它不会删除input 之前的换行符。因此,如果您在 Spyder 以外的任何地方运行脚本,上述代码将返回:

    HiHello:
    

    由于这是 Spyder 特有的一个小怪癖,因此容忍它并继续前进可能更有意义。

    【讨论】:

    • 我不认为预期的输出希望它们在同一行,它希望它们在 printinput() 之间没有空行
    • 他们没有询问如何删除换行符。他们问为什么 Spyder 在 print() 之后使用 input() 时会添加一个额外的换行符。
    • 但是由于 Spyder 中的错误,这实际上删除了两个输出之间的空白行
    猜你喜欢
    • 2017-10-22
    • 1970-01-01
    • 2016-09-26
    • 2017-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-09
    • 1970-01-01
    相关资源
    最近更新 更多