问题遇到的现象和发生背景
Python自定义函数:
写一个自定义函数,根据用户输入,将英里和公里互相进行转换,转换率为1.6;如1英里=1.6公里。自定义函数名称设置为DistanceConverion(input),并将结果在自定义函数外打印。
问题相关代码
def DistanceConversion(input):
for i in range(len(input)):
if input[i] == 'm' and input[i+1]] in 'mi':
output = int(input[:-2]) * 1.6
return str(output) + 'km'
elif input[-2:] in 'km':
output = int(input[:-2]) / 1.6
return str(output) + 'mi'
input1 = input("Enter a distance (in km or mi): ")
print(f"{input1} is equal to {DistanceConversion(input1)}.")
运行结果及报错内容
`'str' object is not callable.``
我的解答思路和尝试过的方法
我一开始就想到字符串切片解决这个问题,但是最后也注意到了函数本身是字符串不能重复调用。请问这种情况下如何能够继续读取用户输入呢?或者通过别的方式来解决这个问题?
谢谢~
我想要达到的结果
Enter a distance (in km or mi): 32km
32km is equal to 20mi
循环的过程中直接判断是带有字符k 还是字符i来区分km和mi
def DistanceConversion(input):
for i in range(len(input)):
if input[i] == 'i' :
output = int(input[:-2]) * 1.6
return str(output) + 'km'
elif input[i] in 'k':
output = int(input[:-2]) / 1.6
return str(output) + 'mi'
input1 = input("Enter a distance (in km or mi): ")
print(f"{input1} is equal to {DistanceConversion(input1)}.")
第3行input[i+1]]多了个]
def DistanceConversion(input):
if input[-2:] == 'mi':
output = int(input[:-2]) * 1.6
return str(output) + 'km'
elif input[-2:] == 'km':
output = int(input[:-2]) / 1.6
return str(output) + 'mi'
input1 = input("Enter a distance (in km or mi): ")
print(f"{input1} is equal to {DistanceConversion(input1)}.")