Python if else条件错误

Swi*_*tch 1 python syntax

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

Ale*_*lli 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)
Run Code Online (Sandbox Code Playgroud)