圆计算器无法正常工作

时间:2013-02-14 03:01:33

标签: python if-statement

代码用 python 3.3 编写,只适用于第一个if语句,即使if语句错误也不承认其他elif语句。

calccircle()

您知道哪些数据?半径

Enter Diameter def calccircle():
      x = input("What data do you know? ")
      if x == "Diameter" or "diameter":
          a = int(input("Enter Diameter "))
          print("Circumference is", a * math.pi)
          print("Area is", math.pi * math.pow(a/2,2))
          print("Radius is:",a/2)
      elif x == "Radius" or "radius":
          b = input("Enter radius: ")
          print("Circumference is", b * 2 * math.pi)
          print("Area is", math.pi * math.pow(b,2))
          print("Diameter is", b * 2)
      elif x == "area" or "Area":
          c = input("Enter area: ")
          print("Circumference is", ((math.sqrt(c))/math.pi) * b * 2 * math.pi)
          print("Diameter is", math.sqrt(c) * math.pi * 2)
          print("Radius is", math.sqrt(c) * math.pi)
      elif x == "circumference" or "Circumference":
          d = input("Enter Circumference: ")
          print("Area is", math.pi * math.pow(d/math.pi,2))
          print("Diameter is", d/math.pi * 2)
          print("Radius is", d/math.pi)

显示输入(“输入直径:”)并且不注意我写的内容或if语句。

  

calccircle()   你知道什么数据?的半径   输入直径

注意我写了半径,输入(“输入半径:”)应该运行,但事实并非如此。请帮忙。

1 个答案:

答案 0 :(得分:4)

你的问题是:

 if x == "Diameter" or "diameter":

看起来像python:

 if (x == "Diameter") or "diameter":

,当x != "Diameter"时,就像:

if "diameter":

将永远经历。

Python会在False, None, "", [], {}, ...语句的上下文中将False等视为if(或者如果您在其上或其他各个地方调用bool),并且大多数其他所有内容为True。这通常很方便,但可以结合对or语句的轻微混淆,使许多不习惯使用Python的人犯这个错误。

相反,请执行以下操作之一:

if x == "Diameter" or x == "diameter":  # most direct translation
if x in {"Diameter", "diameter"}:  # very slightly faster, a little less typing
if x.lower() == "diameter":  # also allows DIAmeter, etc

如果您写了类似

的内容,也值得注意
if x == ("Diameter" or "diameter"):

这与

相同
if x == "Diameter":

因为"Diameter" or "diameter"看到"Diameter"True ish,所以会返回。