2016-11-15 5 views
0

Хорошо, позвольте мне сказать только заранее: я новичок в Python. Я просто экспериментировал с IDLE, а затем у меня был этот странный «крах». Я поставил «крах» внутри речевых меток, потому что я не уверен, что он квалифицируется как сбой, так как вместо того, чтобы программа просто врезалась в обычную программу в Windows, она все еще работает, но всякий раз, когда я нажимаю кнопку ввода и пытаюсь он принимает новый текст, он ничего не делает. Например. если вы попытаетесь ввести «print ('a')», а затем нажмите «Ввод», он просто переходит к следующей строке (и не печатает «a»). Я попытался сделать простую функцию, которая преобразовала целое число в строку, где каждый символ в строке был либо «1», либо «0», образуя двоичное число, представляющее указанное (беззнаковое) целое число.Python IDLE с Python 3.5.2 «crashing»

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

В основном, это становится совершенно невосприимчивы к моему входу, и позволяет мне редактировать/изменить «печать („а“)» несмотря на то, что я не должен быть в состоянии, если он на самом деле «принял» мой вход , Почему это? Что я сделал неправильно/испортил?

Кроме того, я убедился, что это не что-то еще, с чем я ранее сталкивался, закрывая оболочку и открывая ее снова и добавляя только код для функции «int_to_string», и я не изменил никаких настроек или импортировать любые модули перед рукой или что-то в этом роде (в случае, если это имеет значение).

EDIT: Я попытался переустановить, и это немного помогло мне в том, что теперь я могу сделать что-то другое, но в тот момент, когда я пытаюсь использовать функцию str_to_int(), у нее есть такое же странное поведение, интерпретируя больше пользовательский ввод.

+0

Вы уверены, что находитесь в оболочке, но не в окне кода? Если это не так, возможно, ваша установка каким-то образом повреждена. –

+0

@JohnColeman Hahaha. Да, я уверен. Я могу предоставить скриншот, если вы мне не верите. –

+0

У меня нет идей, если проблема не исчезнет, ​​подумайте о переустановке. Если вы находитесь на Mac, иногда возникают проблемы с базовым Tk, который находится за IDLE. –

ответ

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

Я думал, что это будет нечто тривиальное. Так оно и было. Благодаря! –