Здесь есть несколько вещей, поэтому позвольте мне опубликовать правку в вашем коде и пройти через них вместе с вами:)
def snowed_in(temperature, weather, cels=True):
if weather =="snowy":
return True
elif weather=="sunny":
if not cels:
if temperature<32:
return True
elif cels:
if temperature<0:
print ('ad')
return True
else:
return False
Логические выражения
Вы вводите is_celsius
как логическое значение, но оцениваете его как строку, которая более чем немного странна.
Вместо того, чтобы пытаться сопоставить определенную строку c, т.е. 'is_celsius = True' in cels:
, вы можете просто проверить состояние логического 'cels' ie if cels:
Аргументы по умолчанию
Если вызов функции не предоставляет значение для is_celsius, предположим, что это имеет значение True. ... python аргументы функции могут иметь значения по умолчанию.
Поэтому использование cels=True
предпочтительнее **cels
для желаемого поведения.
Теперь, cels=True
будет передано в функцию, если cels
не указано в вызове функции.
Синтаксис
Если вы новичок в Python проверьте PEP8 . Дело в том, что вы должны стараться не иметь пробелов между именем переменной и ее значением в аргументах функции, т.е. cels=True
не cels = True
.
Отступ
Я предполагаю, что это было артефактом того, что вы скопировали и вставили свой код. Но! Обратите внимание, что отступ в python очень важен. Обратите внимание на разницу между вашим кодом и моим примером выше ... это хорошая практика, чтобы ваш код имел правильный отступ, если вы копируете вставку его в переполнение стека / где-то еще. Облегчает чтение другим!
Удачи вам!