Python 圆圈计算器工作不正常

Python 圆圈计算器工作不正常,python,if-statement,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 ")) pr

代码是用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() 你知道什么数据半径 输入直径

注意,我写了radius,输入(“enteradius:”)应该运行,但它没有运行。请帮助。

您的问题是:

 if x == "Diameter" or "diameter":
在python看来:

 if (x == "Diameter") or "diameter":
x!=“直径”类似于:

if "diameter":
这将一直持续下去

Python将
False、None、“、[]、{}、
等视为
if
语句上下文中的
False
(或者如果您对它们调用
bool
或其他各种位置),而其他大部分内容都视为
True
。这通常很方便,但如果再加上对
语句的轻微混淆,许多不习惯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”或“Diameter”
看到
“Diameter”
True
ish,因此返回该值。

您的问题是:

 if x == "Diameter" or "diameter":
在python看来:

 if (x == "Diameter") or "diameter":
x!=“直径”类似于:

if "diameter":
这将一直持续下去

Python将
False、None、“、[]、{}、
等视为
if
语句上下文中的
False
(或者如果您对它们调用
bool
或其他各种位置),而其他大部分内容都视为
True
。这通常很方便,但如果再加上对
语句的轻微混淆,许多不习惯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”或“Diameter”
看到
“Diameter”
True
ish,因此返回该值。

什么语言?我很困惑。Python 3.3。对不起,我想我已经提到了。我的错误是什么语言?我很困惑。Python 3.3。对不起,我想我已经提到了。我在英语中的错误,逗号和“or”(或“and”)可用于列出各种备选方案。在编程语言中,“或”从未(或至少几乎从未)以这种方式工作。它几乎总是一个布尔运算符。有一些常见的额外的折痕,例如快捷的求值、对布尔值的转换,以及Python所做的事情,这些都是为了在不破坏正常模式的情况下实现一些有用的技巧。在Pythons的例子中,这些额外的技巧可以追溯到添加“x if c else y”语法之前,并且大多是尝试获得相同效果的一种失败的方式-即最好避免。@user2070615很高兴我能提供帮助!一般来说,在这种情况下,除非您有进一步的问题,否则不需要发布更正后的代码,在这种情况下,您应该将其编辑到您的问题中,而不是将其作为答案发布。此外,当问题解决后,你应该这样做。在英语中,逗号和“or”(或“and”)可以用来列出各种备选方案。在编程语言中,“或”从未(或至少几乎从未)以这种方式工作。它几乎总是一个布尔运算符。有一些常见的额外的折痕,例如快捷的求值、对布尔值的转换,以及Python所做的事情,这些都是为了在不破坏正常模式的情况下实现一些有用的技巧。在Pythons的例子中,这些额外的技巧可以追溯到添加“x if c else y”语法之前,并且大多是尝试获得相同效果的一种失败的方式-即最好避免。@user2070615很高兴我能提供帮助!一般来说,在这种情况下,除非您有进一步的问题,否则不需要发布更正后的代码,在这种情况下,您应该将其编辑到您的问题中,而不是将其作为答案发布。而且,当问题解决后,你应该这样做。