Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当我期待一个小的二进制数时,我收到了一个巨大的数字_Python_Python 3.x_Binary - Fatal编程技术网

Python 当我期待一个小的二进制数时,我收到了一个巨大的数字

Python 当我期待一个小的二进制数时,我收到了一个巨大的数字,python,python-3.x,binary,Python,Python 3.x,Binary,这是我在一个更大项目中代码的一部分。我已经成功地添加了将二进制转换为十进制的功能。但是由于某种原因,我不能让这个工作。我尝试了很多东西,甚至编辑了一些。while(x>=0)是最符合逻辑的操作,当我运行它时,它不会给出任何结果。如果我将其更改为(x>0)或(x!=0),则会给出一个完整的错误,我将其放在文章底部,但请继续阅读。我尝试了而(x>-1)这也没有给我什么,只是等待了很长时间。有人知道这件事吗?这是一个错误,顺便说一句: 键入普通或十进制数字:155 e5.323-E6 6 6 6 6

这是我在一个更大项目中代码的一部分。我已经成功地添加了将二进制转换为十进制的功能。但是由于某种原因,我不能让这个工作。我尝试了很多东西,甚至编辑了一些。
while(x>=0)
是最符合逻辑的操作,当我运行它时,它不会给出任何结果。如果我将其更改为
(x>0)
(x!=0)
,则会给出一个完整的错误,我将其放在文章底部,但请继续阅读。我尝试了
而(x>-1)
这也没有给我什么,只是等待了很长时间。有人知道这件事吗?这是一个错误,顺便说一句:

键入普通或十进制数字:155

e5.323-E6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 606.1513-E5350212.3513-e596010424.6413-e931208482.1413->e872406965.2413-e655802931.5313-e52117148720.1313-e5224386550.2313->E54863111.4313-e96337222.8213-e837645446.1213-E695743902.3213-

等等。。。。它持续了大约一百行,以.05.11结尾


我期望的反应是10011011,但我得到了那巨大的失败。如果有人愿意帮助我,我会很高兴的。谢谢。:)

内置函数可用于此

while playAgain == "d":
    intDec = int(input("\nType in a normal, or decimal, number: "))
    x = intDec
    y = 0

    tot = ""

    while(x>=0):
        y=x%2

        x/=2
        tot+=str(y)
    print("\n", tot[::-1],"\n")
    playAgain = input("What do you want to do? (c, d (anything else to quit)): ")
你必须使用楼层除法来得到商的整数部分。 您必须使用
x>0
来避免无限循环

编辑:

bin(155)  #10011011

x>=0
创建一个无限循环<代码>x永远不会变为负数。哦,这在我脑海中激起了火花。:)谢谢你的澄清。我尝试了你的想法,并添加了代码,
If(x==0):break
,但是,它给了我与上面发布的相同的错误。我真的不知道为什么我会出现这个错误不会帮助其他有同样问题的人来到这个帖子。我建议使用更具描述性的方法。在现实生活中,如果你一次又一次地将一个正数除以2,你永远不会降到零。在计算机中,浮点数的精度是有限的,在某一点上,结果将非常接近于0,以至于实际上被认为是0。这就是停止循环的原因,迭代次数超过了您的预期。是的,我知道,但我只是在锻炼我的技能和解决问题的能力。我想知道是否可以创建原始函数的副本。谢谢你的评论!啊,我现在明白了。感谢您的努力和好意。:)祝你有一个美好的一天,谢谢你把事情弄清楚。可以执行(x>=0),但必须打破循环。在某一点上,变量tot必须处理“x=0”,所以我必须保持这种方式。使它工作的方法是在它处理它之后打破循环。再次感谢你:)。
while playAgain == "d":
    intDec = int(input("\nType in a normal, or decimal, number: "))

    x = intDec
    y = 0

    tot = ''

    while(x>0):
        y=x%2
        x//=2
        print(y)
        tot+=str(y)
    print("\n",tot[::-1],"\n")
    playAgain = input("What do you want to do? (c, d (anything else to quit)): ")