我正在尝试学习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
有人可以解释为什么这不起作用?我绝对可以设置里程功能来打印转换句子,但我不想这样做。
答案 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