这是我的代码片段,但它没有按我想要的方式执行.如果输入是非负/字符值,则第一个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")
Run Code Online (Sandbox Code Playgroud)
的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)
Run Code Online (Sandbox Code Playgroud)