这是我的代码片段,但它没有按照我想要的方式执行。如果输入是非负值/字符值,第一个 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")
请您参考如下方法:
s.isdigit() 字符串方法的意思是“字符串 s 是一个或多个字符长,所有字符都是数字”,意思是每个字符都是 0123456789 之一。请注意其他字符(如 + 和 -)如何明显地不存在于该集合中;-)。
您的 elif y < 0: 测试应用于 string 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)
