Python IDLE与Python 3.5.2"崩溃"

时间:2016-11-15 01:52:59

标签: python python-3.x user-input python-idle

好的,让我先说一下:我是Python新手。我只是在尝试IDLE,然后我就有了这种奇怪的故事"崩溃"。我把"崩溃"内部语音标记,因为我不确定它是否有资格作为崩溃,因为而不是程序只是崩溃正常程序在Windows中的方式,它仍然运行,但每当我按Enter键并尝试让它接受新文本没有做任何事情。例如。如果您尝试输入" print(' a')"然后点击输入它只是转到下一行(并且不打印' a')。我试图创建一个简单的函数,将整数转换为字符串,其中字符串中的每个字符都是' 1'或者' 0',形成表示所述(无符号)整数的二进制数。

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

基本上,它对我的​​输入完全没有反应,并允许我编辑/更改&#34;打印(&#39; a&#39;)&#34;即使我不能实际接受&#34;接受&#34;我的意见。为什么是这样?我做错了什么/搞砸了?

此外,我确定通过关闭shell并再次打开它并且仅为&#34; int_to_string&#34;添加所述代码,我以前没有做过其他事情。功能,我没有事先改变任何设置或导入任何模块或类似的东西(如果它很重要)。

编辑:我尝试重新安装,这有点帮助我现在可以做其他的事情,但是当我尝试使用&#34; str_to_int()&#34;函数,它具有不接受/解释任何更多用户输入的同样奇怪的行为。

1 个答案:

答案 0 :(得分: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停止它。