2

我正在尝试学习 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

有人可以解释为什么这不起作用吗?我绝对可以设置 mile 函数来打印带有转换的句子,但我不想这样做。

4

3 回答 3

10

您的函数需要返回结果。

def mile(x):
    z = x * 1.609344
    return z
于 2012-05-20T17:09:19.427 回答
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

于 2012-05-20T18:46:17.690 回答
1

作为一种解释:

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

以前,您在函数中打印值,而不返回任何内容,这导致z被分配None,这就是为什么底部的打印不起作用。

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

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

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

你会得到你期望的结果。(请注意@Aaron Dufour 指出的正确格式,当您打印结果时,您将在小数点后得到 2 个数字)顺便说一句,您的第一个print语句是正确的,只有第二个语句缺少完整的格式指令。

于 2012-05-20T17:24:15.560 回答