Python中的温度函数问题

时间:2017-08-09 17:35:47

标签: python python-2.7 function

我编写了一些代码将Celsius转换为Fahrenheit(反之亦然),允许用户在输入要转换的值之前选择转换方式。

当我选择选项1(从F到C)时程序似乎工作正常 - 但是当我选择选项2(C到F)时它会将我还原为选项1.

我显然做错了(我怀疑这可能与我的条件真或假步骤有关。)

这是我的代码:

def instructions():
    print('This is a program to convert from F to C or C to F')

def chooser():
    choice = input('Choose:\n1 for Fahrenheit to Celsius\nor\n2 for Celsius to Fahrenheit\n--> ')
    if choice is 1:
        return True
    else:
        return False

def F_userInput():
    fahrenheit = input('Please enter the temperature in Fahrenheit: ')
    return float(fahrenheit)

def f2c(temperature):
    celsius = (temperature - 32) * 5/9
    return celsius

def C_userInput():
    celsius = input('Please enter the temperature in Celsius: ')
    return float(celsius)

def c2f(temperature):
    fht = (temperature * 9/5) + 32
    return fht

def output(result):
    print 'Your coverted temperature is', result

def main():
    instructions()
    chooser()
    if True:
        temperature = F_userInput()
        result = f2c(temperature)
    else:
        temperature = C_userInput()
        result = c2f(temperature)
    output(result)

main()

请注意 - 我已经设法编写了一个更简单的程序来进行这种转换 - 但我正在使用函数来帮助我更好地理解它们(以及如何调用某些函数而不是其他函数)。

PS请随时向我提供任何提示/建议/替代方法。

2 个答案:

答案 0 :(得分:0)

在您的主要功能中,您的if语句只有

if True: 
    do_stuff()

没有引用变量。 试试这个主要方法,也许会有帮助吗?

def main():
    instructions()
    some_var_name = chooser()
    if some_var_name == True:
        temperature = F_userInput()
        result = f2c(temperature)
    else:
        temperature = C_userInput()
        result = c2f(temperature)
    output(result)

我想你写的时候

if True:
    do_stuff()

此语句将始终执行。它绝不可能是假的。如果您希望有一个选择,请根据布尔变量评估if语句,该布尔变量可能是真或假,基于之前程序中发生的事情。 希望能解决它=)

答案 1 :(得分:0)

主块中的代码不存储返回值 选择器()。因此,即使从chooser()返回的值为false,它也不会在if块中使用         的选择器()         如果为真:#条件总是如此             temperature = F_userInput()             结果= f2c(温度)         否则:#从未执行过             temperature = C_userInput()             结果= c2f(温度)