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

2024-09-28 23:43:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在疯狂地搜索,但我还没有找到为什么我的代码会在原始输入和打印行之间多打印一行空行。在

它看起来是这样的:

print "--------------------------"
print "You have " + str(guesses) + " guesses left."
print "Available Letters: "  + getAvailableLetters(lettersGuessed) + "."
letterGuessed = raw_input("Please guess a letter: ")

这是我得到的输出:

^{pr2}$

我希望它看起来像这样:

--------------------------
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

完整代码:https://gist.github.com/anonymous/cd6314470a5696181c10

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


Tags: 代码youhaveleftavailableprintpleaseguess
2条回答

编辑根据评论中的讨论得出的结论是,这是一个Canopy IDE中的bug。在

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

你的输出是:

Available Letters: abcdefghijklmnopqrstuwxyz.

应在末尾加上一个圆点:

^{pr2}$

但是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..

我的结论是你展示给我们的代码和你运行的代码不可能是一样的。我建议将代码粘贴到某个地方以便我们进行全面检查。Github Gist就可以了。在

虽然我不是一个冠层迷,但我认为这是一个冠层虫的结论是不公平的。我认为这是一个问题,当使用原始输入涉及到包含IPython在一个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")

我在许多环境中测试了代码(Python2.7):

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

  • 伊普顿:很好
  • Python:很好
  • Spyder使用Python控制台。在

因此,我得出结论,IPython在非终端环境中出于某种原因在raw_input()之前生成一个额外的换行符。请注意,这仍然适用于使用输入的python3.5。在

enter image description here

相关问题 更多 >