我正在尝试创建一个包含input()的英里至公里转换器。
def miles_to_km_converter (ans):
ans = input('please enter amount of miles you wish to convert:')
print (('you have entered:') + str(ans) + ' miles')
return int(ans)*1.6
m == ans
a = miles_to_km_converter(m)
print ("The conversion equals:")
print (str(a) + ' km')
我收到一个错误:m not defined
。我不明白怎么了,我将m
定义为等于原始输入ans
。
谢谢
答案 0 :(得分:1)
m
仅在函数中定义,因此外部不可用。
我认为您混淆了哪些代码应该是功能的一部分,哪些应该是主程序的一部分。
考虑一下:
def miles_to_km_converter (m):
return float(m)*1.6
ans = input('please enter amount of miles you wish to convert: ')
a = miles_to_km_converter(ans)
print ('The conversion equals: ', str(round(a, 3)) + ' km')
编辑:
如果您希望用户提示成为该功能的一部分:
def miles_to_km_converter():
m = input('please enter amount of miles you wish to convert: ')
return float(m)*1.6
a = miles_to_km_converter()
print ('The conversion equals: ', str(round(a, 3)) + ' km')
答案 1 :(得分:0)
在您的职能中-
def miles_to_km_converter (ans):
ans = input('please enter amount of miles you wish to convert:')
print (('you have entered:') + str(ans) + ' miles')
return int(ans)*1.6
m == ans # let's call this line 1
在第 1 行之前,您进行了返回呼叫。该调用将停止执行,返回您要返回的内容并退出该函数。 返回后,将不会执行任何操作。参见here
此外,在第 1 行上,我们正在将 m 与 ans 进行比较。这说-
check if ans is equal to a
请参见python comparison operators
我想你想要的就是这样-
def miles_to_km_converter():
ans = input('please enter amount of miles you wish to convert:')
print (('you have entered:') + str(ans) + ' miles')
return int(ans)*1.6
a = miles_to_km_converter()
print ('The conversion equals: ', str(round(a, 3)) + ' km')
为什么我们不需要将参数传递给此函数?
我们的函数miles_to_km_converter
不需要从函数的其余部分传递给它的变量。我们功能的目的是
take input -> convert it -> return it
但是,如果我们想将变量从脚本其余部分传递给函数,则需要一个参数。 Read here
例如-
def miles_to_km_converter (ans):
print (('you have entered:') + str(ans) + ' miles')
return int(ans)*1.6
ans = input('please enter amount of miles you wish to convert:')
# Now our variable `ans` is not accessible to the function
# We need to explicitly pass it like -
a = miles_to_km_converter (ans)
# And then we'll print it
print ('The conversion equals: ', str(round(a, 3)) + ' km')
我希望这能回答您的问题