Python if else条件错误

时间:2009-11-10 06:34:26

标签: 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")

4 个答案:

答案 0 :(得分: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)

答案 1 :(得分:1)

您的elif永远不会被评估if y是一个数字 程序执行if范围内的语句,然后跳到最后一行(raw_input ...

答案 2 :(得分:0)

elif float(y) < 0:
     print "Negative number", cmath.sqrt(float(y))

现在可以进行正确的比较,cmath.sqrt将起作用,因为它需要浮动。

答案 3 :(得分:0)

为什么不呢:

from math import sqrt
from cmath import sqrt as neg_sqrt

y = raw_input("Enter your number:")
try:
    number = float(y)
    if number > 0:
        print 'Answer is', sqrt(number)
    else:
        print 'Negative number:', neg_sqrt(number)
except ValueError:
    print 'Not a valid number'