我是初学者编码员,我想感谢您的帮助。我可能犯了一些菜鸟错误,但这就是我在这里学习的原因。我无法弄清楚出了什么问题,但我可以说我插入一个字符串(50,K,C)它应该将50开尔文转换为摄氏温度,但我的代码什么都不做
def temperature_converter(value, scale_from, scale_to):
if scale_from == "F" and scale_to == "C":
(value -32)* 5 / 9 for F to C
return
elif scale_from == "F" and scale_to == "K":
(value * 5 / 9) + 273 for F to K
return
elif scale_from == "C" and scale_to == "F":
value * (9 / 5) + 32 for C to F
return
elif scale_from == "C" and scale_to == "K":
(value + 273) for C to K
return
elif scale_from == "K" and scale_to == "F":
9/5 * (value - 273) + 32 for K to F
return
elif scale_from == "K" and scale_to == "C":
value - 273 for K to F
return
答案 0 :(得分:2)
好的,让我们一点一点地抓住它:
for F to C
以及您在代码中使用的其他类似“语句”都不是有效的python。另外,它们似乎没有用处,所以我已将它们删除。(value -32)* 5 / 9
时,必须将结果存储在某处。 value
始终保持不变,除非您为其指定值。return
时,您必须返回某些内容。仅使用return
关键字就无法执行任何操作。以下是您的代码的修订版。我故意将第一和第二个案例(F到C,F到K)更详细地说明第2点:
def temperature_converter(value, scale_from, scale_to):
if scale_from == "F" and scale_to == "C":
a = (value -32)* 5 / 9 #Assign the modified value to a variable
return a
elif scale_from == "F" and scale_to == "K":
value = (value * 5 / 9) + 273 #The value variable can be reused
return value
elif scale_from == "C" and scale_to == "F":
return value * (9 / 5) + 32 #Always return something. Don't have just the keyword
elif scale_from == "C" and scale_to == "K":
return value + 273
elif scale_from == "K" and scale_to == "F":
return 9/5 * (value - 273) + 32
elif scale_from == "K" and scale_to == "C":
return value - 273
一些额外的观点:
"f"
。最终代码为:
def temperature_converter(value, scale_from, scale_to):
scale_from = scale_from.upper() #Make all arguments upper case
scale_to = scale_to.upper()
if scale_from == "F": #Group cases together
if scale_to == "C":
return (value -32)* 5 / 9
elif scale_to == "K":
return (value * 5 / 9) + 273
elif scale_from == "C":
if scale_to == "F":
return value * (9 / 5) + 32
elif scale_to == "K":
return value + 273
elif scale_from == "K":
if scale_to == "F":
return 9/5 * (value - 273) + 32
elif scale_to == "K":
return value - 273
raise ValueError("Invalid argument") #Have predictable behavior if invalid input is given
答案 1 :(得分:0)
当你在这里时,我们不妨给出正确的转换公式
def temperature_converter(value, scale_from, scale_to) :
if scale_from == "F" and scale_to == "C" :
return (value - 32.0) * 5 / 9 #for F to C
elif scale_from == "F" and scale_to == "K":
return (value + 459.67) * 5 / 9 #for F to K
elif scale_from == "C" and scale_to == "F":
return value * (9.0 / 5.0) + 32 #for C to F
elif scale_from == "C" and scale_to == "K":
return value + 273.15 #for C to K
elif scale_from == "K" and scale_to == "F":
return ((value - 273.15) * 1.8) + 32 #for K to F
elif scale_from == "K" and scale_to == "C":
return value - 273.15 #for K to C
然后像这样称呼它
result = temperature_converter(50, "F", "C")
或者
result = temperature_converter(50, 'F', 'C')
我认为你可能也错误地调用了这个函数。
有一件非常重要的事情你可能不知道,这里没有人告诉你。它可能会让你头疼,试图找出你为什么得到错误的值。
有整数和浮点数字(或浮点数)。简单来说,整数是整数,但浮点数可以使用小数和小数值。
如果仅使用整数,则会将值四舍五入为整数。我在很大程度上注意到了Celsius到Fahrenheit的转换。当我使用9/5而不是9.0 / 5.0时,它对该值进行了大量舍入,而我的回答却很明显。这是因为它将9/5舍入为整数,而不是9/5 = 1.8。
所以记住这一点。确保你的Python解释器以你期望的方式使用浮动(十进制值),并且它按照你想要的方式进行数学运算。
我在所有公式中都包含小数点,因此Python使用浮点数进行数学计算。 (至少我的Python解释器是。)
另外,仔细检查公式。
编辑:
别忘了打印你的答案
print(result)