我已经设置了一个功能,将一个否定号码转换成一个8位二进制数字。用户输入一个数字,我必须在转换前验证它。 输入有效数字时代码效果很好,验证也正常。但是,当我尝试转换一个数字AFTER验证一个invallid数字后,我得到这个NoneType操作数错误。 任何人都可以解释我做错了什么
def testDenary(testValue):
if testValue < int(0):
print("Error: Negative value input. Please try again!")
return False
elif testValue > 255:
print("Error: Input value too high. Please try again!")
return False
else:
return True
def getDenary():
denIn = int(input("Please enter a number between 0 and 255: "))
if testDenary(denIn):
return denIn
else:
getDenary()
def convertToBinary(denaryIn):
x = 0
result = []
for number in range(8):
bit = denaryIn % 2
result.append(bit)
denaryIn = denaryIn // 2
print (type(denaryIn))
result.reverse()
str1 = "".join(str(x)for x in result)
return str1
def main():
denary = getDenary()
answer = convertToBinary(denary)
print ("Binary version = " + answer)
main()
main()
答案 0 :(得分:1)
您的函数getDenary()
不会在else子句中返回值,因此当您的函数结束时,将返回None
的默认返回值。
以下是更改代码的方法:
def getDenary():
denIn = int(input("Please enter a number between 0 and 255: "))
if testDenary(denIn):
return denIn
else:
return getDenary() # added return
注意:您可以通过执行
将整数转换为其二进制字符串表示形式"{0:b}".format(your_int)