在坚持“如果”,它不会继续过去吧

问题描述 投票:0回答:2

我目前停留在第22行,如果我输入15公里不是15英里就不会继续朝这是精神疾病在15公里转换为英里elif声明。

我曾尝试切换键和值,并一直试图找出代码是如何工作的逻辑。

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公里,距离它的意思进入elif distance[key] == distance['km']不只是失败的线22。

如果我不输入任一英里或公里。然后,我希望它打印出“再试一次”。

python keyerror
2个回答
1
投票

你的逻辑流程在这里肯定丢失。要调试您的问题,请尝试打印distance语句之前if/else变量,你会看到有什么不妥的地方。

如果您需要检查的单位,只是做

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

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") 

注:我还添加了检查,以确保单位是无论是在kmmiles

OUTPUT:

Type distasnce and unit (miles or km)
>>>15 km
Printing from kilometers to miles
15 km to miles method
None
© www.soinside.com 2019 - 2024. All rights reserved.