如何在使用重新分配Python 3中的参数的函数中重新分配变量

如何在使用重新分配Python 3中的参数的函数中重新分配变量,python,python-3.x,Python,Python 3.x,我一直在开发一个简单的程序,可以将华氏温度转换成开尔文温度再转换成摄氏温度 它是一个三路转换器(这对我来说意味着:它可以转换f-c、c-k、f-k等) 问题:无论传递给函数的是什么,输入值始终为0.0 我相信这和变量的重新分配有关,但它可能是任何东西。请帮忙 def temp_con(x, y, z): con_product = 0.0 if x == 'f' or x == 'fahrenheit': if y == 'c' or y == 'celsiu

我一直在开发一个简单的程序,可以将华氏温度转换成开尔文温度再转换成摄氏温度

它是一个三路转换器(这对我来说意味着:它可以转换f-c、c-k、f-k等)

问题:无论传递给函数的是什么,输入值始终为0.0

我相信这和变量的重新分配有关,但它可能是任何东西。请帮忙

def temp_con(x, y, z):

    con_product = 0.0

    if x == 'f' or x == 'fahrenheit':
        if y == 'c' or y == 'celsius':
            con_product += (z - 32.0)/1.8
        elif y == 'k' or y == 'kelvin':
            con_product += (z + 459.67)/1.8
    elif x == 'c' or x == 'celsius':
        if y == 'f' or y == 'fahrenheit':
            con_product += z * 1.8 + 32.0
        elif y == 'k' or y == 'kelvin':  
            con_product += z + 273.15
    elif x == 'k' or x == 'kelvin':
        if y == 'c' or y == 'celsius':
            con_product += z - 273.15
        elif y == 'f' or y == 'fahrenheit':
            con_product += z * 1.8 - 459.67
    print(con_product)

print(temp_con(input('from'), input('to'), input('val')))

您的代码不会向其调用者返回任何内容。将最后一行从

print(con_product)

…在调用此函数的代码中:

print(temp_con(input('from'), input('to'), input('val')))
,在调用
temp\u con()
之前,您需要将最后一个
z
参数从字符串(这是
input()
函数始终返回的)转换为
float

我可能会使代码更加明确,比如:

from = input('from')
to = input('to')
inputVal = float(input('value'))

converted = temp_con(from, to, inputVal)
print(converted)

…一旦你知道了,你可以做一些事情,比如明智地处理错误——如果有人输入
1,z,baloney
作为三个参数会怎么样?

x参数是:从y参数转换为:转换为z参数是:转换值看起来像“from”和/或“to”不包含你的想法。如果您的程序将开始计算,您将得到一个
TypeError:-:'str'和'float'的不支持的操作数类型。
。我将在哪里转换它?我不会在参数中转换它,所以我会在整个代码中输入float(z)而不是z吗?@michael2103:您可以将
z=float(z)
作为函数的第一行,这样就不必在其他任何地方转换它。当然,更好的方法是使用正确的参数调用函数。我还强烈建议为变量使用更好的名称-from、to和value比x、y、z好得多-这将使代码更具可读性。
from = input('from')
to = input('to')
inputVal = float(input('value'))

converted = temp_con(from, to, inputVal)
print(converted)