2015-01-27 6 views
-2

나는 미친 듯이 검색을 해왔고 왜 내 코드가 raw_input과 print 행 사이에 여분의 빈 줄을 인쇄하는지 알지 못했다.내 print와 raw_input 행 사이에 빈 줄이있는 이유는 무엇입니까?

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

Please guess a letter: 

을 그리고 이것은 내가 모양을하고 싶은 :

-------------------------- 
You have 8 guesses left. 
Available Letters: abcdefghijklmnopqrstuwxyz. 
Please guess a letter: 

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

이 내가 출력으로 무엇을 얻을 수 있습니다 :

는 모습입니다 왜 이런 일이 일어 났는지 설명 할 수 있다면 정말 고맙겠습니다!

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

일부 기능이 너무 그들을 무시하시기 바랍니다 사용하지 않는 여기

는 getAvailableLetters 코드입니다.

+5

"."는 어디에 있습니까? –

+0

@AshwiniChaudhary 추가하지 않았습니다. 캐노피 터미널에서 붙여 넣기를 복사 할 수 없기 때문에 출력물을 직접 복사해야했습니다. – Gurkmeja101

+0

'getAvailableLetters'에서 반환 된 문자열을 조사하여 줄 바꿈이 없는지 확인 했습니까? – kdopen

답변

1

EDIT 의견의 토론에서 결론은 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을 입력하십시오.

+0

안녕하세요. 도와 주셔서 감사합니다. 다음은 전체 코드입니다. https://gist.github.com/anonymous/cd6314470a5696181c10 – Gurkmeja101

+0

코드가 제대로 실행됩니다. 제발, 그 코드가 더 진행되기 전에 실행 중인지 확인해주세요. 그런 다음 어떤 Python 버전을 사용하고 있는지 알려주십시오. 'python --version'. – Schwern

+0

그래서 raw_input과 인쇄 줄 사이에 이상한 줄무늬가 생기지 않습니까? 파이썬 2.7.6을 사용하고 있습니다. – Gurkmeja101

2

캐노피 팬이 아닌만큼 캐노피 버그가 불공정하다는 결론에 도달했다고 생각합니다. 나는 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") 

내가 환경의 수 (파이썬 2의 코드를 테스트했다.7) :

  • 캐노피 : Jupyter QtConsole에
  • IPython 실패 : IPython 창으로
  • 스파이더 실패 실패

  • ipython : 좋은
  • 파이썬 : 좋은
  • Spyd 어.

그래서, non-terminal 환경에서 IPython이 raw_input() 전에 추가 라인 피드를 생성하고 있다고 결론을 내 렸습니다. 이는 입력을 사용하여 여전히 Python 3.5에 적용됩니다.

enter image description here

관련 문제