Почему я получаю «неправильный» вывод в этом выражении ifelse? - PullRequest
0 голосов
/ 11 февраля 2019

Я новичок в 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")

Тем не менее, мой окончательный вывод отображается как "неверный", что я делаю не так?

Четыре свойства железной дороги:Рединг, Пенсильвания, B & O и Short Line.Который не железная дорога?Короткая линия правильная.Short Line - автобусная компания.

Ответы [ 3 ]

0 голосов
/ 11 февраля 2019

Пара вещей, которые я вижу с этим кодом, который вы опубликовали.

Во-первых, не уверен, действительно ли у вас есть **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)

Я обнаружил, что, когда у меня возникают проблемы с пониманием, почему что-то не работает, я добавляю некоторые операторы print, чтобы посмотреть, что делают переменные.

0 голосов
/ 11 февраля 2019

Возможно, вы захотите поймать пользователя в цикле, иначе вам придется постоянно запускать код, чтобы найти правильный ответ (если это не желаемое поведение, то вы можете оставить его как есть).Также имейте в виду, что вам может потребоваться прописные или строчные буквы, потому что пользователь может предоставить ответ в виде «Короткой строки» (строчная буква «L»), и код вернется как неправильный.Конечно, это зависит от того, что вы примете в качестве ответа.

Образец

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")
0 голосов
/ 11 февраля 2019

Притворился за тебя

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")
...