Застрял в "если", и он не будет проходить мимо - PullRequest
0 голосов
/ 11 февраля 2019

В настоящее время я застрял на линии 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 км, это означает, что нужно ввести elif distance[key] == distance['km'], а не просто потерпеть неудачу на линии 22.

, если я не сделал этого.не набирай ни миль, ни км.Тогда я ожидаю, что он напечатает «попробуйте еще раз».

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Вам не нужно усложнять вещи, просто 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
0 голосов
/ 11 февраля 2019

Вы определенно потерялись с логикой потока здесь.Чтобы устранить проблему, попробуйте напечатать переменную distance перед оператором if/else, и вы увидите, что с ней не так.

Если вам нужно проверить единицы измерения, просто выполните

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