Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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 2.7 - Fatal编程技术网

Python二进制输入异常不存在';行不通

Python二进制输入异常不存在';行不通,python,python-2.7,Python,Python 2.7,我在编写程序的地方有点卡住了。我对非双字节输入的例外似乎不起作用。我在运行程序时收到此错误消息,“如果[I=='0'中的if False或bin2dec中I的I=='1]:TypeError:'int'对象不可编辑”。如果有人能帮忙 e1=True print"Welcome to CJ's Program V1.00.8\n" while e1: try: bininput= int(input("Please enter a binary nu

我在编写程序的地方有点卡住了。我对非双字节输入的例外似乎不起作用。我在运行程序时收到此错误消息,“如果[I=='0'中的if False或bin2dec中I的I=='1]:TypeError:'int'对象不可编辑”。如果有人能帮忙

e1=True
print"Welcome to CJ's Program V1.00.8\n"
    while e1:
        try:
            bininput= int(input("Please enter a binary number: "))
            e1=False
        except NameError: 
            print"Please try again.\n"
            time.sleep(0.5)
        except SyntaxError: 
            print"Please try again.\n"
            time.sleep(0.5)

    if False in [i == '0' or i == '1' for i in bininput]:
        print "\nIts not Binary number. Please try again."
        time.sleep(1)
    else:
        print "\nIts a Binary number!\n" 

        decnum = 0 
        for i in bininput: 
            decnum = decnum * 2 + int(i)
            time.sleep(0.25)
        print decnum, "<<This is your answer.\n"
e1=True
打印“欢迎使用CJ的程序V1.00.8\n”
而e1:
尝试:
bininput=int(输入(“请输入二进制数:”)
e1=假
除名称错误外:
打印“请重试。\n”
睡眠时间(0.5)
除SyntaxError外:
打印“请重试。\n”
睡眠时间(0.5)
如果[i=='0'中为False,或对于bininput中的i,i=='1']:
打印“\n不是二进制数。请重试。”
时间。睡眠(1)
其他:
打印“\n这是一个二进制数!\n”
decnum=0
对于输入中的i:
decnum=decnum*2+int(i)
睡眠时间(0.25)

print decnum,“与字符串不同,您不能像人们所说的那样在整数中循环遍历每个数字/字符-这就是它的含义

最简单的解决方案是通过每次将int转换为字符串,将其作为字符串进行迭代

e1=True
print"Welcome to CJ's Program V1.00.8\n"
while e1:
    try:
        bininput= int(input("Please enter a binary number: "))
        e1=False
    except NameError: 
        print"Please try again.\n"
        time.sleep(0.5)
    except SyntaxError: 
        print"Please try again.\n"
        time.sleep(0.5)

if False in [i == '0' or i == '1' for i in str(bininput)]:
    print "\nIts not Binary number. Please try again."
    time.sleep(1)
else:
    print "\nIts a Binary number!\n" 

    decnum = 0 
    for i in str(bininput): 
        decnum = decnum * 2 + int(i)
        #time.sleep(0.25)
    print decnum, "<<This is your answer.\n"
e1=True
打印“欢迎使用CJ的程序V1.00.8\n”
而e1:
尝试:
bininput=int(输入(“请输入二进制数:”)
e1=假
除名称错误外:
打印“请重试。\n”
睡眠时间(0.5)
除SyntaxError外:
打印“请重试。\n”
睡眠时间(0.5)
如果[i='0'或str(bininput)]中i的i=='1'中为False:
打印“\n不是二进制数。请再试一次。”
时间。睡眠(1)
其他:
打印“\n这是一个二进制数\n“
decnum=0
对于str中的i(bininput):
decnum=decnum*2+int(i)
#睡眠时间(0.25)

print decnum,“错误的意思是,您不能像在那一行中尝试做的那样迭代整数类型的对象。基本上,你不能循环一个数字。此外,如前所述,您将永远无法到达输入二进制数的行,因为未定义
error1
。。。那是错别字吗?是的,对不起,那是错别字。我的错误。如果bininput不在[0,1]:
(这可能不起作用,但我希望您能得到这个想法),您应该将给出错误的行更改为类似的
。我怀疑bininput中的I在
行也会出现类似的错误:
。此外,您的错误消息使用了名称
bin2dec
,但示例程序中未定义
bin2dec
。如果bininput不在[0,1]中,我尝试了
:打印“\n不是二进制数。请重试。”time.sleep(1)
谢谢您的帮助,您的建议部分有效。现在,问题是当我只输入数字而不是二进制数字时,它打印
输入二进制。请重试
,然后循环回到菜单,而不是循环回到
请输入二进制数:
。感谢您的帮助。之所以不返回到
请输入…
,是因为
if
行超出了while循环的范围。如果您想在阅读一个数字后返回进入阶段,则应将所有剩余的第4行缩进空格。是的,对不起,我必须更改您的部分缩进以使其运行,以便测试,但我忘记将其更改回:)