将英里转换为公里时出错

时间:2012-05-20 17:07:21

标签: python

我正在尝试学习python,并尝试创建一个简单的公式,将里程转换为公里并返回一些带有转换的文本。

这就是我所拥有的:

def mile(x):
    z = x * 1.609344
    print "%.2f" % z

x = float(raw_input("How many miles are you traveling? "))  

z = mile(x)

print "That's about % kilometers." % z

有人可以解释为什么这不起作用?我绝对可以设置里程功能来打印转换句子,但我不想这样做。

3 个答案:

答案 0 :(得分:10)

您的功能需要返回结果。

def mile(x):
    z = x * 1.609344
    return z

答案 1 :(得分:1)

作为解释的方式:

您需要从函数返回计算/转换的值,以便将结果分配给变量z。您可以然后将其打印出来。

之前,您在函数中打印了值,而没有返回任何内容,这导致z被分配None这就是为什么你的打印在底部没有不行。

一般来说,最好在函数内部进行工作/计算,然后返回一个可以决定如何使用的值。

@wim显示该函数的正确代码。如果你现在做

z = mile(x)
print "That's about %.2f kilometers." % z

你会得到你期待的结果。 (注意@Aaron Dufour指出的正确格式,打印结果时,你会在小数点后面得到2个数字)顺便提一下,你的第一个print语句是正确的,只有第二个语句错过了完整的格式化指令。

答案 2 :(得分:1)

你有几个问题。第一个是你的函数没有返回值。运行第z = mile(x)行后,mile(x)部分将被mile返回的内容替换。你想要的代码是:

def mile(x):
    z = x * 1.609344
    return z

请注意,与此分配的变量无关;它不必匹配正在返回的变量。例如,y = mile(x)z = mile(x)都会正确地分配给定变量。

其次,您的字符串格式不起作用。这是看起来像"That's about % kilometers." % z的部分。字符串格式化用给定变量替换%<identifier>,其中<identifier>告诉变量是什么类型(可能还有一些关于如何显示变量的信息)。您需要标识符f,或者与之前的打印语句一样,.2f,提供"That's about %.2f kilometers." % z