卡在“如果”,它不会继续过去

时间:2019-02-11 10:27:57

标签: python keyerror

我目前停留在第22行,如果我输入15公里而不是15英里,它将不会继续执行elif语句,该语句将15公里转换为英里。

我尝试过切换键和值,并试图弄清楚代码在逻辑上是如何工作的。

distance = {}
km_miles = input("Type distasnce and unit (miles or km)\n>>>")
value, key = km_miles.split(" ")
distance[key] = float(value)

if distance[key] == distance['miles']:
    print("Printing from miles to kilometers")
    print(miles_to_km(distance[key]))

elif distance[key] == distance['km']:
    print("Printing from kilometers to miles")
    print(km_to_miles(distance[key]))

else:
print("try again")

我期望它能够执行的操作是,如果我键入15 km,它的意思是输入elif distance[key] == distance['km']而不只是在第22行失败。

如果我没有输入英里或公里。然后,我希望它能打印出“重试”。

2 个答案:

答案 0 :(得分:1)

您肯定在这里迷失了逻辑流程。要调试您的问题,请尝试在distance语句之前打印if/else变量,您会发现问题所在。

如果需要检查单位,只需执行

value, unit = km_miles.split(" ")
if unit == 'miles':
    ...
elif unit == 'km':
    ...

答案 1 :(得分:1)

您不需要使事情复杂化,只需split()即可获得值,然后它们就成为关键,即单位(公里或英里):

def km_to_miles(x):
    print("{} km to miles method".format(x))

def miles_to_km(x):
    print("{} miles to km method".format(x))

distance = {}
km_miles = input("Type distasnce and unit (miles or km)\n>>>")
value, key = km_miles.split(" ")

if key == 'km' or key == 'miles':    
    if key == 'miles':
        print("Printing from miles to kilometers")
        print(miles_to_km(value))

    elif key == 'km':
        print("Printing from kilometers to miles")
        print(km_to_miles(value))

    else:
        print("try again")
else:
    print("Error: Invalid unit, Please try again") 
  

注意:我还添加了一个检查以确保单位在km中   或miles

输出:

Type distasnce and unit (miles or km)
>>>15 km
Printing from kilometers to miles
15 km to miles method
None