Python摄氏转华氏度

时间:2018-12-19 07:14:57

标签: python

运行代码时出现错误消息。

这是我的代码:

def celsius_to_fahrenheit(celsius):
    fahrenheit = celsius * 9/5 + 32

print(celsius_to_fahrenheit(-280))

if celsius < -273.15:
    return "That's impossible"
else:
    fahrenheit = celsius * 9/5+32
    return fahrenheit
print(celsius_to_fahrenheit(-273.4))

这是错误消息:

File "./exercise1.py", line 7
    return "That's impossible"
    ^
SyntaxError: 'return' outside function

感谢您的帮助!

6 个答案:

答案 0 :(得分:1)

使用适当的缩进量

def celsius_to_fahrenheit(celsius):
    fahrenheit = celsius * 9/5 + 32



    if celsius < -273.15:
        return "That's impossible"
    else:
        fahrenheit = celsius * 9/5+32
        return fahrenheit
print(celsius_to_fahrenheit(-273.4))

答案 1 :(得分:0)

我的答案纠正了nishant给出的答案(改善了压痕),

尝试这个:

def celsius_to_fahrenheit(celsius):
    fahrenheit = celsius * 9/5 + 32

    if celsius < -273.15:
        return "That's impossible"
    else:
        fahrenheit = celsius * 9/5+32
        return fahrenheit
print(celsius_to_fahrenheit(-273.4))
print(celsius_to_fahrenheit(-280))

让我知道它是如何工作的

答案 2 :(得分:0)

缩进在Python中很重要。由于您的第一个print语句的缩进与您的'def'相同,因此Python假定您的函数已经结束。因此,请确保函数中应包含的所有内容均已正确缩进。

实际上,第一个打印语句似乎不属于该位置。对函数本身进行这种调用会导致所有循环。另外:

  • 无需检查else。如果检查绝对零点是否通过,则无论如何都将在该点退出函数。
  • 无需两次计算。
  • 至少在2.x版本中,Python在执行整数算术运算时不会自动切换为浮点型。因此,例如输入11会得出与某些版本11.0不同的结果。如果您将9替换为9.0,或者只是将9/5替换为1.8,则可以强制Python使用浮点数。

这是一个可行的简短版本:

def celsius_to_fahrenheit(celsius):    
    if celsius < -273.15:
        return "That's impossible"    
    return celsius * 9.0/5 + 32

print(celsius_to_fahrenheit(-50))

答案 3 :(得分:0)

发布后,您的函数包含一行代码,其余代码将立即执行。

就像错误消息所言,当您不在函数内部时,不能return

可能是您的意思是大部分(但不是全部)代码都是该函数的一部分。这是一个带有推测性的重构,带有注释。

def celsius_to_fahrenheit(celsius):
    # Don't perform this calculation twice
    # fahrenheit = celsius * 9/5 + 32
    # Don't attempt to call the function from within its own definition
    if celsius < -273.15:
        # raise an error instead of returning a bogus value
        raise ValueError("Temperature below absolute zero")
    else:
        fahrenheit = celsius * 9/5+32
        return fahrenheit

# We are now outside the function definition.
# Call the function twice to see that it works.    
print(celsius_to_fahrenheit(-273.4))

# Should throw an error:
print(celsius_to_fahrenheit(-280))

答案 4 :(得分:0)

要分解代码中的某些错误:

1:没有return语句

def celsius_to_fahrenheit(celsius):
    fahrenheit = celsius * 9/5 + 32

print(celsius_to_fahrenheit(-280))

在此块中,您需要包含一个return函数

def celsius_to_fahrenheit(celsius):
    fahrenheit = celsius * 9/5 + 32
    return fahrenheit

print(celsius_to_fahrenheit(-280))

2:缩进不正确或未定义函数

if celsius < -273.15:
    return "That's impossible"
else:
    fahrenheit = celsius * 9/5+32
    return fahrenheit

对于此代码块,因为您未正确缩进,因此不会作为函数调用的一部分执行。错误的原因是因为您试图return某个函数中不存在的东西。

答案 5 :(得分:0)

不需要冗余代码。修复缩进,您可以使用:

def celsius_to_fahrenheit(celsius):
    if celsius < -273.15:
        return "That's impossible"
    else:
        return celsius * 9/5+32
print(celsius_to_fahrenheit(-273.4))