Как я могу использовать локальную переменную внутри цикла также вне цикла? - PullRequest
0 голосов
/ 07 мая 2018

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

speed = input("Enter the speed without the unit : ")

unit_speed = input("Which unit is the speed in? ( miles/hr or kilometres/hr) : ")

if unit_speed == "miles/hr " or unit_speed == "miles / hr" or unit_speed == "m/hr":
    unit = " miles"

elif unit_speed == "kilometres/hr " or unit_speed == "kilometres / hr" or unit_speed == "km/hr":
    unit = " kilometres"

time_hours = input("Enter the number of hours taken : ")

time_minutes = input("Enter the number of minutes taken : ")

time = int(time_hours) + int(time_minutes) / 60

print("The required distance is " + str(float(speed)*float(time)) + unit)

Я был бы очень признателен за любую помощь.

Кстати, я программирую на Python 3.

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Проблема в вашем коде на вашем , если заявление . Вы должны обрабатывать выполнение, используя блок else.

if unit_speed == "miles/hr " or unit_speed == "miles / hr" or unit_speed == "m/hr":
    unit = " miles"

elif unit_speed == "kilometres/hr " or unit_speed == "kilometres / hr" or unit_speed == "km/hr":
    unit = " kilometres"

else:
    # Raise exception or print output message to enter correct input here and break the excecution.
0 голосов
/ 07 мая 2018

Первый

Ваша текущая проблема не имеет ничего общего с циклами. Ваш вопрос от вас if раздел заявления вашего кода.

Issue

Ваша настоящая проблема заключалась в том, что всякий раз, когда выполнялась секция оператора if, у нее не было способа перехватить неожиданный пользовательский ввод, например. если бы пользователь просто набирал мили, в настоящий момент программа просто рухнула, и это была ваша проблема.

Решение

Ради этого решения я просто упростил единицы измерения до миль или километров. Это проверит, ввел ли пользователь что-то кроме miles или kilometres, которые есть в списке, затем выйдет из программы, сообщив недопустимую единицу скорости.

if unit not in ["miles", "kilometres"]:
    print("invalid unit of speed")
    quit()

Кроме того, вместо переменных unit_speed и unit, упростите их и поместите в одну переменную, я просто назвал ее единицей.

unit = input("Which unit is the speed in? (miles or kilometres) : ")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...