Python二进制输入异常不存在';行不通
我在编写程序的地方有点卡住了。我对非双字节输入的例外似乎不起作用。我在运行程序时收到此错误消息,“如果[I=='0'中的if False或bin2dec中I的I=='1]:TypeError:'int'对象不可编辑”。如果有人能帮忙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
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行缩进空格。是的,对不起,我必须更改您的部分缩进以使其运行,以便测试,但我忘记将其更改回:)