我一直在疯狂地搜索,但我还没发现为什么我的代码在raw_input和print行之间打印了一个额外的空行。
这就是它的样子:
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
完整代码:https://gist.github.com/anonymous/cd6314470a5696181c10
某些功能未被使用,请忽略它们。
答案 0 :(得分:2)
尽管我不是Canopy的粉丝,但我认为它的Canopy bug是不公平的。我认为在使用涉及在IDE中包含IPython的raw_input时会出现问题。为什么呢?
我的测试代码是:
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在非终端环境中由于某种原因在raw_input()之前生成了额外的换行符。请注意,这仍适用于使用输入的Python 3.5。
答案 1 :(得分:1)
编辑评论中讨论的结论是Canopy IDE中的一个错误。
您向我们展示的代码不是您正在运行的代码。
您的输出是:
Available Letters: abcdefghijklmnopqrstuwxyz.
应该由此打印(注意末尾添加的点):
print "Available Letters: " + getAvailableLetters(lettersGuessed) + "."
但是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会这样做。