Как мне расположить петли? - PullRequest
0 голосов
/ 22 апреля 2019

Я новичок в программировании на Python.Я пытаюсь создать программу, которая поможет морякам быстро рассчитать их скорость, время и расстояние, используя удобную формулу S * T = D

Я создал операторы If, основанные на ответе, как вы увидите ниже.

Основные вопросы:

как можно очистить этот код?

Почему я, даже если введен правильный ответ, такой как «скорость», получаю ответ, который я использовал для else?(т. е. даже когда пользователь выбирает «скорость», в выводе все равно говорится, что он не выбрал один из трех вариантов).

Как включить цикл в мою программу, чтобы, если пользователь вводитнеправильный ответ идет прямо к первоначальному вопросу?

Спасибо!

Я пытался добавить def() перед операторами if, и это не работает.Я также пытался сделать while True в разных местах.

name = raw_input("what's your name?")
print 'Hi ' + name + ' you landlubber, you.'
# This will tell me whether we want to find out Speed, time, or distance
answer = raw_input("Do you want to figure out your speed, distance, or   time? Choose one and hit 'Enter'").lower()
# This will determine the response to their choice.
if answer == "speed":
print "You is all about that speed eh?"
if answer == "distance":
print "It's all about the journey, not the destination."
if answer == "time":
print "Time is an illusion, bro."
else:
print "You didn't choose one of the three options"

Ответы [ 2 ]

1 голос
/ 22 апреля 2019

Вообще говоря, длинные строки if/elif сложны в обслуживании и трудны для чтения.

Лучшим способом может быть использование словаря для сопоставления ввода с выводом.Тогда все отображения ввода -> ответа находятся в одном легко читаемом месте - их можно даже импортировать из другого файла.Логика, чтобы решить, что сказать, - это простой поиск по словарю.Вы можете использовать get() для предоставления значения по умолчанию для случаев, когда значение отсутствует в словаре.Например:

# map input to output:
responses = {
    "speed": "You is all about that speed eh?",
    "distance": "It's all about the journey, not the destination.",
    "time": "Time is an illusion, bro."
}

name = raw_input("what's your name?")
print('Hi ' + name + ' you landlubber, you.')

# This will tell me whether we want to find out Speed, time, or distance
answer = raw_input("Do you want to figure out your speed, distance, or   time? Choose one and hit 'Enter'").lower()

# just lookup the response:
print(responses.get(answer, "You didn't choose one of the three options"))
0 голосов
/ 22 апреля 2019

Это отличный вопрос, и ответ на него нужно использовать: if, elif, elif, else. Вы можете иметь столько elif, сколько хотите, но Python выберет только ОДИН из блоков if, elif, else для запуска.

Также я добавил .strip() к вашему входу, чтобы убрать пробелы.

name = raw_input("what's your name?")
print 'Hi ' + name + ' you landlubber, you.'

# This will tell me whether we want to find out Speed, time, or distance
answer = raw_input("Do you want to figure out your speed, distance, or time?   Choose one and hit 'Enter'").lower().strip()

# This will determine the response to their choice.
if answer == "speed":
    print "You is all about that speed eh?"
elif answer == "distance":
   print "It's all about the journey, not the destination."
elif answer == "time":
   print "Time is an illusion, bro."
else:
   print "You didn't choose one of the three options"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...