问题描述
我刚刚开始学习python,在if-else程序中,我偶然发现了该错误。程序要求用户输入数字,并显示其位数。这是代码:
`
num: int = int(input("enter a number : "))
num = math.fabs(num)
if (num < 10):
print("number has 1 digit")
elif (num >= 10 & num < 100):
print("number has 2 digits")
elif (num >= 100 & num < 1000):
print("number has 3 digits")
elif (num >= 1000 & num < 10000):
print("number has 4 digits")
elif (num >= 10000 & num < 100000):
print("number has 5 digits")
elif (num >= 100000 & num < 1000000):
print("number has 6 digits")
elif (num >= 1000000 & num < 10000000):
print("number has 7 digits")
elif (num >= 10000000 & num < 100000000):
print("number has 8 digits")
elif (num >= 100000000 & num < 1000000000):
print("number has 9 digits")
else:
print("the number has 10 digits")`
错误消息:D:\ venv \ Scripts \ python.exe“ D:/ python projects / conditionalStatements.py” 输入数字:1000 追溯(最近一次通话): 在第7行的文件“ D:/ python projects / conditionalStatements.py” elif(num> = 10&num
解决方法
&
是按位的,并且比比较具有更强的约束力。所以这行:
elif (num >= 10 & num < 100):
被解释为这,这不是您想要的。
elif (num >= (10 & num) < 100):
相反,请使用and
关键字...
elif num >= 10 and num < 100:
...或比较链。
elif 10 <= num < 100:
当然,您也可以只使用对数或数字if/elif
表示形式的len
替换所有str
检查:
print(f"number has {len(str(num))} digit")