代码用 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() 你知道什么数据?的半径 输入直径
注意我写了半径,输入(“输入半径:”)应该运行,但事实并非如此。请帮忙。
答案 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,所以会返回。