Другие ответы отлично, как к тому, что является неправильным синтаксически с кодом, но, возможно, я также рекомендую иметь только один оператор возврата. В целом считается, что в большинстве языков программирования плохая практика имеет более одного возврата. Также делать это следующим образом, предотвращает неправильное поведение во время работы, то есть, что произойдет, если вы передадите символ, кроме 'c' или 'f'. Это допустимый прецедент, особенно потому, что переданное значение происходит от ввода пользователем, и предварительных проверок для недопустимых значений нет.
def convert_temp(source_temp, scale):
final_temp = 0
if scale == 'c':
final_temp = (source_temp - 32.0) * (5.0/9.0)
elif scale == 'f':
final_temp = (source_temp * (9.0/5.0)) + 32
else:
raise Exception('Bad Temperature Scale')
return final_temp
temp_input = int(input('Key in temp:'))
scale_input = input('(c) or (f)?')
y = convert_temp(temp_input, scale_input)
print(tmp, 'in ', scale,"='s", y)
на основе ошибок сделали это заставляет меня задаться вопросом, если дальнейшее объяснение необходимо в реальные механизмы на работе здесь. Поскольку у вас изначально было несоответствие вызова функции, а также параметров. Я подозреваю, что вы понимаете, какие переменные: символы, которые относятся к значению. source_temp и scale в вашей функции convert_temp являются переменными, локальными для функции, они не существуют вне функции, но они делают внутри. Эта концепция называется «областью». Когда функция называется, эти локальные переменные получают значение параметров в вашем вызове:
<return_variable> = convert_temp(<temp_arg>, <scale_arg>)
.
Это приводит к следующему пункту: поскольку функция convert_temp является глобальной, возможно, не лучше использовать те же имена переменных для вашего пользовательского ввода, что и аргументы, определенные в вашей функции. Хотя это и не обязательно неправильно, его больше предосторожности, чем угодно.
Что касается имени самой функции convert_temp
, это имя, с которым вы называете свою функцию. Подобно тому, как переменные являются ссылками на значения, функции являются своего рода ссылками на поведение. Следовательно, когда вы вызываете функцию, вам нужно использовать тот же символ, с которым вы его определили.
Редактировать включить отслеживающий в теле вопроса. – shuttle87
9.0/5/0 даст ZerodivisionError – Hackaholic
у вас есть несоответствие parens 'source_temp = int (input) 'Key in temp:'))' – Victory