我编写了一些代码将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请随时向我提供任何提示/建议/替代方法。
答案 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(温度)