比较来自raw_input的单词和想要的字符串

时间:2018-07-20 08:21:39

标签: python

我正在尝试创建一个包含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。 谢谢

2 个答案:

答案 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')

我希望这能回答您的问题