我被分配了一个为字节加法器编写程序的任务。第一个程序只是检查输入的数字是否有效,并导入另外两个模块:logicGates 和 fullAdder。 logicGates 没有错误,我确信它由门(if、else)组成,仅此而已。这是我的代码:
dec1=int(input("Enter first decimal number: "))
dec2=int(input("Enter second decimal number: "))
def check(dec1,dec2):
if (dec1+dec2)>255:
print ("The decimal number you've entered is invalid. Please enter another number")
dec1=int(input("Enter first number again: "))
dec2=int(input("Enter second number again: "))
return dec1,dec2
elif (dec1+dec2)>+127 and (dec1+dec2)<-127:
print ("The decimal number you've entered is invalid. Please enter your numbers again")
dec1=int(input("Enter first number again: "))
dec2=int(input("Enter second number again: "))
return dec1,dec2
else:
print("Your number is now converted")
return dec1,dec2
print (check(dec1,dec2))
import conversion
lis1, lis2=conversion.bin2dec(dec1,dec2)
import fullAdder
add= fullAdder.fulladder(lis1,lis2)
print (add)
这是我的 fullAdder:
import logicGates
def fulladder(bin1,bin2):
lis1=list(bin1)
lis2=list(bin2)
Cin=0
lisEmp=[]
for i in range(7,-1,-1):
num1=int(lis1[i])
num2=int(lis2[i])
result1=logicGates.XOR(num1,num2)
result2=logicGates.NAND(result1,Cin)
result3=logicGates.OR(result1,Cin)
Sum=logicGates.AND(result2,result3)
result4=logicGates.AND(num1,num2)
result5=logicGates.AND(result1,Cin)
result6=logicGates.NOR(result4,result5)
result7=logicGates.NOT(result6)
Cin=result7
lisEmp.insert(0,Sum)
return lisEmp
这是我的 bin2dec 代码:
def bin2dec(dec1,dec2):
a=bin(dec1)
b=bin(dec2)
c=a[2:]
d=b[2:]
bin1=c.zfill(8)
bin2=d.zfill(8)
print (bin1)
print (bin2)
这是我不断收到的错误。
Traceback (most recent call last):
File "C:\Python34\main.py", line 26, in <module>
lis1, lis2=conversion.bin2dec(dec1,dec2)
TypeError: 'NoneType' object is not iterable
最佳答案
TLDR
问题是您的函数 bin2dec
没有 return 语句。您可以通过添加来修复它
return bin1, bin2
到bin2dec
的末尾。
错误的深入解释
实际发生的情况以及为什么你会得到“NoneType object is not iterable”,是因为 python 实际上不从函数中获得多个返回值,即使它看起来像这样。相反,发生的情况是返回一个元组,然后解压该元组。
因此,您的代码中发生的情况与此相同
result = conversion.bin2dec(dec1, dec2)
lis1, lis2 = result
在这里,由于缺少 return 语句,我们得到 result
为 None
,然后在下一行中 lis1, lis2 = result
执行 code> 时,您尝试解压 None
值,这是不可能的,因此会抛出 TypeError
。
关于python - 我一直收到 "NoneType object is not iterable"我不知道为什么。我已经检查了我的程序一千次。有谁知道如何解决这一问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45120931/