Я вижу некоторые проблемы в коде, поэтому я постараюсь указать на них, когда я отвечу на ваши вопросы
- Я хочу использовать переменную typ_transport для дальнейшего кодирования, а не только внутриif. (он не распознает переменную.)
Причина, по которой вы не можете получить доступ к переменной typ_transport
, заключается в том, что она создана внутри оператора if
.Если вы захотите получить доступ к переменной позже в коде, вам придется изменить область действия typ_transport
на глобальную область.
Это можно сделать двумя способами.Первый - создание глобальной переменной перед запуском оператора if
typ_transport = ""
if inputvar['walk'] == True and inputvar['bike'] == False:
typ_transport = 'foot'
Второй - создание глобальной переменной внутри оператора if с использованием ключевого слова global
.Этот способ крайне не рекомендуется, поскольку легко потерять след переменных и их областей.
логика кажется правильной, но когда я изменяю значения в jsonStr (например, "walk": true на "walk": fasle), вывод не выводит правильный вывод
Помимо орфографических ошибок, которые вы получили, логические значения Python хранятся в True
и False
(без одинарных кавычек, первая буква заглавная).Когда вы используете модуль JSON, он должен анализироваться правильно, но всегда рекомендуется дважды проверить.
Наконец, вы используете класс, но он не организован.Давайте попробуем сделать так, чтобы это выглядело немного более аккуратно.
class transport:
def __init__(self,typ_transport): #utilizing global variable we created
if typ_transport == 'foot':
velocity = 80
self.typ_transport = self.typ_transport
self.velocity = velocity
elif typ_transport == 'bicycle':
......
Теперь, чтобы получить скорость, когда typ_transport = 'foot'
passenger = transport(typ_transport) #creating passenger object
velocity = passenger.velocity