В вашем коде есть несколько ошибок:
- Две определенные вами функции
convert_f
и convert_c
не могут использовать градусы Фаренгейта или Цельсия, потому что вы их нигде не определяли.Я думаю, вы хотите предоставить эти значения в качестве параметров.
def convert_f(fahrenheit):
f = float(fahrenheit)
f = (f*9/5)+32
return(f)
def convert_c(celsius):
c = float(celsius)
c = (c-32)*5/9
return(c)
В последних нескольких строках вы используете имена возвращаемых значений
convert_f
и
convert_c
.Они никогда не создаются, потому что вы никогда не вызываете функции, и даже если они были вызваны, доступ к ним невозможен.Имя возвращаемого значения теряет все значение вне функции.Что вы можете сделать, это что-то вроде этого:
temp = float(temp)
if recentLoc == ger and location == us:
print("Temperature for tomorrow is {:.2f} Celsius or {:.2f} Fahrenheit".format(temp, convert_f(temp)))
elif recentLoc == us and location == ger:
print("Temperature for tomorrow is {:.2f} Fahrenheit or {:.2f} Celsius".format(temp, convert_c(temp)))
elif recentLoc == us and location == us:
print("Temperature for tomorrow is {:.2f} Fahrenheit".format(temp))
elif recentLoc == ger and location == ger:
print("Temperature for tomorrow is {:.2f} Celsius".format(temp))
else:
# Technicaly this is printed when either recentLoc or location are neither ger or us
print("Please type in a number")
Я использую temp
и вывод либо convert_f
и convert_c
, чтобы напечатать вывод.Кроме того, вы не можете добавить строку и число с плавающей точкой.Вы можете преобразовать число с плавающей точкой в строку через str()
, например: "This is a float " + str(float(5)) + "!"
.Это немного хакерский и не считается отличным кодом.В приведенном выше коде я использовал функцию format()
, которая не только дает вам более четкий, более читаемый код, но и может выполнять некоторое форматирование, например, в приведенном выше коде для каждого числа с плавающей запятой даются только 2 точки точности, а не всерассчитывается.
Вопросы в начале кода немного разбиты.Вы правильно проверяете, введены ли данные в Германии или США, и выводите сообщение об ошибке, если это не так, но впоследствии вы не повторяете свой вопрос.Я предлагаю использовать простой цикл while и использовать break, когда вы получите правильный ответ.
location = ""
while location != us and location != ger:
location = input("Where are you from?")
if location == ger:
print("You are from Germany")
break
elif location == us:
print("You are from the USA")
break
else:
print("Enter the country Germany or USA")
recentLoc = ""
while recentLoc != us and recentLoc != ger:
recentLoc = input("What is your location right now?")
if recentLoc == ger:
print("You are in Germany right now")
break
elif recentLoc == us:
print("You are in the USA right now")
break
else:
print("Please enter the country Germany or the USA")
while 1:
try:
temp = input("What is the temperature outdoor tomorrow?")
temp = float(temp)
break
except ValueError:
print("That's not a number!")
Надеюсь, это вам немного поможет ...