2016-11-15 2 views
0

좋아, 그럼 내가 미리 말하게하자. 나는 파이썬을 처음 사용한다. 나는 단지 IDLE을 실험하고 있었는데 그때 나는 이상한 "충돌"을 겪었다. 나는 정상적인 프로그램이 Windows에서하는 것처럼 충돌하는 프로그램보다는 충돌로 자격이 있는지 확실하지 않기 때문에 음성 마크 안에 "충돌"을 넣습니다. 여전히 실행되지만 입력을 시도하고 시도 할 때마다 그것은 아무것도하지 않는 새로운 텍스트를 받아들입니다. 예 : "print ('a')"를 입력하고 엔터를 치면 그냥 다음 행으로 넘어 가서 'a'를 인쇄하지 않습니다. 나는 문자열의 각 문자가 '1'또는 '0'인 문자열을 정수로 변환하여 (부호없는) 정수를 나타내는 이진수를 형성하는 간단한 함수를 만들려고했습니다.파이썬 IDLE 파이썬 3.5.2 "크래시"

>>> def int_to_str(int_in): 
     str_out='' 
     bit_val=1<<int_in.bit_length() 
     while(int_in>0): 
      if(int_in>bit_val): 
       str_out+='1' 
       int_in-=bit_val 
      else: 
       str_out+='0' 
      bit_val>>=1 
     return str_out 

>>> print('a') 
print('c') 

기본적으로, 내 입력에 완전히 응답하지 않게하고, 실제로 내 입력 "가능"한 경우에 내가 할 수 없어야에도 불구하고/변경 "인쇄 ('A'를)"편집 날 수 있습니다 . 왜 이런거야? 나는 잘못했거나 엉망이 되었습니까?

또한 이전에 쉘을 닫은 후 다시 열어 "int_to_string"함수에 대한 코드 만 넣고 다른 설정이 변경되지 않았는지 확인했습니다. 또는 손에 넣기 전에 모듈을 가져 오거나 (그런 경우에는 중요).

EDIT : 다시 설치해 보았습니다. 이제는 다른 것들을 잘 할 수 있지만, "str_to_int()"함수를 사용하려고 할 때 약간의 도움이되었습니다. 더 이상의 사용자 입력을 해석합니다.

+0

코드 창이 아니라 셸에 있는지 확인하십시오. 그렇지 않으면 설치가 어떻게 든 손상됩니다. –

+0

@JohnColeman Hahaha. 네, 확신합니다. 당신이 나를 믿지 않으면 스크린 샷을 제공 할 수 있습니다. –

+0

문제가 지속되면 다시 생각해 볼 필요가 없습니다. Mac 사용자는 IDLE 뒤에있는 기본 Tk와 관련된 문제가 종종 있습니다. –

답변

1

while 루프가 종료되지 않으므로 로직을 다시 정렬해야합니다.

>>> def int_to_str(int_in): 
     str_out='' 
     bit_val=1<<int_in.bit_length() 
     while(int_in>0): 
      print(int_in, bit_val) 
      if(int_in>bit_val): 
       str_out+='1' 
       int_in-=bit_val 
      else: 
       str_out+='0' 
      bit_val>>=1 
     return str_out 

프로그램이 진행 될 것 같으면 너무 오래 당신이 CTRL-C와 함께 중지 할 수 있습니다 :이 같은 - 인쇄 변수는 효과적인 디버깅 도구가 될 수 있습니다.

+0

나는 그것이 사소한 것이라고 생각했다. 그게 사실입니다. 감사! –