为什么我在此 ifelse 语句中收到 "incorrect" 输出?

Why am I receiving "incorrect" output in this ifelse statement?

我是 python 的新手,正在尝试通过做小项目来学习。

我正在尝试编写一个程序来显示四个属性的名称和 要求用户识别不是铁路的 属性。选择是否正确,应通知用户。

properties = "Reading,","Pennsylvania","B & O","Short Line"
question = str(input("Which is not a railroad?")) **Short Line**
if properties == "Short Line":
    print("correct")
else:
    print("incorrect")

然而,我的最终输出显示为 "incorrect",我做错了什么?

四大铁路物业 是雷丁,宾夕法尼亚州, B&O和短线。 哪个不是铁路?短线 正确的。 Short Line 是一家巴士公司。

给你美化了

print( "Reading, Pennsylvania, B & O, and Short Line. Which is not a railroad?" )
print("Which is not a railroad?")
answer = input()
if answer == "Short Line":
    print("correct")
else:
    print("incorrect")

我在您发布的这段代码中看到了一些东西。

首先,不确定您的实际代码中是否确实有 **Short Line**,但如果您尝试注释,请使用 # 这样它就不会在 运行 时被解释。

其次,如其他答案中所述,您正在检查正在拉入数组的属性。您应该检查存储在问题中的输入。

properties = "Reading,","Pennsylvania","B & O","Short Line"
question = str(input("Which is not a railroad?")) # **Short Line**
if question == "Short Line": # replaced properties with question
    print("correct")
else:
    print("incorrect")
print(properties)
print(question)

我发现当我无法理解为什么有些东西不起作用时,我会输入一些打印语句来查看变量在做什么。

您可能希望让用户陷入循环,否则您将不得不不断地 运行 代码来找到正确的答案(除非那是所需的行为,那么您可以将其保留为你拥有了它)。此外,请注意您可能需要大写或小写,因为用户可能会提供 "Short line"(小写 "L")的答案,并且代码将 return 视为不正确。当然,这取决于你会接受什么作为答案。

样本

print ("Reading,Pennsylvania,B & O, or Short Line. Which is not a railroad?")
user_input = input("Please provide an answer: ")
# != the loop will close once the user inputs short line in any form
# The upper.() will convert a user_input string to all caps 
while user_input.upper() != "SHORT LINE":
  print ("Incorrect, Please try again.")
  user_input = input("Which one is not a railroad? ")

print ("Correct")