-1

我一直在搜索,但找不到帮助我纠正此问题的信息。

为了练习 Python 编程,我正在编写用于家庭自动化的控制代码。我从温度转换计算器开始,效果很好。然后我把它放在另一个“if”中,让它具有改变温度和读取当前温度的功能。这将我的转换器“if”作为我的控制“if”的子项。该程序打开良好,但只进入转换器的行。它不适用于作为一般控制一部分的“elif”语句。以下:

while True:

    task = (raw_input("What would you like to do? "))

    if task == 'Convert' or 'convert':
        ask = raw_input("C to get Celsius, F to get Fahrenheit: ")

        if ask == 'F':
            Cconvert = float(raw_input("Temp in C: "))
            F = Cconvert * 9 / 5 + 32
            print F, 'F'

        elif ask == 'C':
            Fconvert = float(raw_input("Temp in F: "))
            C = ((Fconvert - 32) * 5) / 9
            print C, 'C'

        else:
            print "That is not a temperature measurement I understand."

    elif task == "ChangeTemp":
        temptype = raw_input("Celsius or Fahrenheit? ")
        if temptype == "Celcius" or "celsius":
            temp = float(raw_input("New Temp: ")), str(temptype)
        elif temptype == "Fahrenheit" or "fahrenheit":
            temp = float(raw_input("New Temp: ")), str(temptype)
        else:
            print "That is not a temperature measurement I understand."

    elif task == "SetTemp":
        print temp

    else:
        print "I do not know what you are asking."

如果在其他地方回答了这个问题而我根本找不到它,请链接。

4

3 回答 3

3
if task == 'Convert' or 'convert':

该行将始终成功,因为它相当于

if (task == 'Convert') or ('convert'):

'convert'单独作为布尔表达式将导致True. 正确的写法是这样的:

if task == 'Convert' or task == 'convert':

您也可以执行以下操作之一:

if task in ('Convert', 'convert'):

if task.lower() == 'convert':
于 2013-03-24T18:41:51.757 回答
0

这不是你想要的:

if task == 'Convert' or 'convert':

即使taskis not Convertconvert也始终是 true 值。所以你永远不会到达那个elif部分。

你必须这样做:

if task == 'Convert' or task == 'convert':

(考虑到上下文,忽略更好的方法)

于 2013-03-24T18:42:07.190 回答
0

错误在这行代码中:

if task == 'Convert' or 'convert':

用这行代码替换它:

if task == 'Convert' or task == 'convert':

或者更好的是,使用str的lower()方法:

if task.lower() == 'convert'
于 2013-03-24T18:43:19.077 回答