我目前停留在第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行失败。
如果我没有输入英里或公里。然后,我希望它能打印出“重试”。
答案 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