Python if else 条件错误

2 投票
4 回答
16527 浏览
提问于 2025-04-15 15:50

这是我的代码片段,但它的执行结果和我想要的不同。第一个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)

撰写回答