Python 为什么我的打印和原始输入行之间有一个空行?

Python 为什么我的打印和原始输入行之间有一个空行?,python,Python,我一直在疯狂地搜索,但我还不知道为什么我的代码会在原始输入和打印行之间额外打印一条空行 这就是它看起来的样子: print "--------------------------" print "You have " + str(guesses) + " guesses left." print "Available Letters: " + getAvailableLetters(lettersGuessed) + "." letterGuessed = raw_input("Please

我一直在疯狂地搜索,但我还不知道为什么我的代码会在原始输入和打印行之间额外打印一条空行

这就是它看起来的样子:

print "--------------------------"
print "You have " + str(guesses) + " guesses left."
print "Available Letters: "  + getAvailableLetters(lettersGuessed) + "."
letterGuessed = raw_input("Please guess a letter: ")
这是我得到的输出:

--------------------------
You have 8 guesses left.
Available Letters: abcdefghijklmnopqrstuwxyz.

Please guess a letter:
这就是我想要它的样子:

--------------------------
You have 8 guesses left.
Available Letters: abcdefghijklmnopqrstuwxyz.
Please guess a letter:
如果有人能解释为什么会这样,我会非常感激

以下是getAvailableLetters的代码:

def getAvailableLetters(lettersGuessed):
    import string
    str = string.ascii_lowercase
    for char in lettersGuessed:
        if char in str:
            str = str.replace(char, "") 
    return str
完整代码:


有些函数未使用,请忽略它们。

编辑评论中讨论的结论是,这是IDE中的一个bug

你给我们看的代码不是你正在运行的代码

您的输出是:

Available Letters: abcdefghijklmnopqrstuwxyz.
这应该是打印的(注意末尾添加的点):

但是
getAvailableLetters
也在其返回值的末尾添加了一个点

def getAvailableLetters(lettersGuessed):
    import string
    str = string.ascii_lowercase
    for char in lettersGuessed:
        if char in str:
            str = str.replace(char, "") 
    return str + '.'
所以输出应该是这样的:

Available Letters: abcdefghijklmnopqrstuwxyz..

我的结论是,您向我们展示的代码与您运行的代码不能相同。我建议将代码粘贴到某个地方,以便我们进行全面检查。好的。

虽然我不是一个天篷迷,但我认为认为认为它是天篷虫的结论是不公平的。我认为在IDE中包含IPython时使用原始输入是一个问题。为什么?

我的测试代码是:

print "Error if there is an extra line before 1"
print "Error if there is an extra line before 2"
guess = raw_input("This line should follow directly")
我在许多环境中测试了代码(Python 2.7):

  • 天篷:失败
  • 带IPython窗口的Spyder:失败
  • Jupyter QtConsole中的IPython:失败

  • 伊皮顿:很好
  • 蟒蛇:很好
  • Spyder使用Python控制台
因此,我得出结论,在非终端环境中,IPython在原始输入()之前出于某种原因正在生成一个额外的换行符。注意,这仍然适用于使用输入的Python3.5


@AshwiniChaudhary忘了添加它。我必须手动复制输出,因为我无法从canopy terminal复制粘贴它。您是否检查了从
getAvailableLetters
返回的字符串以确保它不包含换行符?@kdopen my getAvailableLetters函数返回一个简单字符串。我尝试在它的末尾添加一个返回str+'.',但仍然打印一个空行。尝试使用插值,会更干净--并且可能会创建另一行,正如kdopen所说的,是var GetAvailableLitters。没有其他东西会在代码中创建新行。您再次粘贴了不同的代码!我认为你应该停下来下载你正在运行的代码的完整副本,并确保你正在运行你认为正在运行的代码。谢谢你帮助我。以下是完整的代码:您的代码对我来说运行良好。在继续之前,请验证这是您正在运行的代码。然后告诉我你使用的是什么版本的Python
python——版本
。那么您不会在原始输入和打印行之间出现奇怪的换行符?我正在使用python 2.7。6@Gurkmeja101我也在使用Python 2.7.6。不,我没有断线。我得到了你的预期结果,这很奇怪。它是不是有天篷和IDE?
print "Error if there is an extra line before 1"
print "Error if there is an extra line before 2"
guess = raw_input("This line should follow directly")