Python if else 条件错误
这是我的代码片段,但它的执行结果和我想要的不同。第一个if语句在输入是非负数或字符时能正常执行,但如果输入是负数,它就会忽略elif语句。请问这是怎么回事?我使用的是Python 2.6。
from math import sqrt
import cmath
y = raw_input("Enter your number:")
if y.isdigit():
x = int(sqrt(float(y)))
print "Answer is", x
elif y < 0:
print "Negative number", cmath.sqrt(y)
else:
print "Not a valid number"
raw_input("Press <enter> to Exit")
4 个回答
0
elif float(y) < 0:
print "Negative number", cmath.sqrt(float(y))
现在可以进行正确的比较了,cmath.sqrt
函数可以正常工作,因为它需要一个浮点数。
1
你的 elif
语句在 y
是数字的时候永远不会被执行。
程序会先执行 if
里面的内容,然后直接跳到最后一行(raw_input ...
)
5
s.isdigit()
这个方法的意思是“字符串 s
的长度是一个或多个字符,并且所有字符都是数字”,也就是说每个字符都是 0123456789
这些数字。注意,像 +
和 -
这样的其他字符在这里是没有的哦;-)。
你写的 elif y < 0:
这个判断是针对一个字符串 y 的,所以这个判断是没有意义的。如果你想检查用户输入的内容是否是数字,正确的方法其实和你现在的做法完全不同……:
try:
thenum = float(y)
except ValueError:
print "Not a valid number"
else:
if thenum >= 0:
x = int(sqrt(thenum))
print "Answer is", x
else:
print "Negative number", cmath.sqrt(thenum)