Как выбрать функцию в операторе if - PullRequest
0 голосов
/ 15 февраля 2019

Мне нужна помощь, чтобы пользователь мог выбрать значение и соответственно вызвать функцию.

weight = input('Enter K for kilos  or P for pounds : ')

unit = weight

if unit == "K":

    def metricTopound(kilograms):

        pounds = kilograms * 2.2
        ounces = pounds * 16

        return int(pounds), ounces % 16

        kilograms = float(input("How many Kilos ? "))
        lb, o = metricTopound(kilograms)
        print('The amount of pounds you entered is {}. '\
        'This is {} pounds and {} ounces.'.format(kilograms, lb, o))

elif unit == " P ":

    def poundsToMetric(pounds):
        kilograms = pounds / 2.2
        grams = kilograms * 1000

        return int(kilograms), grams % 1000

        pounds = float(input("How many Pounds? "))
        kg, g = poundsToMetric(pounds)
        print('The amount of pounds you entered is {}. '\
        'This is {} kilograms and {} grams.'.format(pounds, kg, g))

Пользователь должен иметь возможность выбрать P, чтобы получить вес в килограммах или K, чтобыполучить вес в фунтах.

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019
  1. Вы не принимаете ввод в правильном типе, и вы должны определить выше или в отдельном файле, а затем вызвать , функция
  2. Строки ниже return оператор никогда не будет выполнен
  3. Вы передаете " P " для сравнения, поэтому пользователю необходимо добавить пробел, затем P и завершающий пробел.

Фиксированный код

def metricTopound(kilograms):

        pounds = kilograms * 2.2
        ounces = pounds * 16

        return int(pounds), ounces % 16


def poundsToMetric(pounds):
        kilograms = pounds / 2.2
        grams = kilograms * 1000

        return int(kilograms), grams % 1000


unit = raw_input('Enter K for kilos  or P for pounds : ') #get as string

weight= input("Ener Weight") #get as integer

if unit == "K":
       metricTopound(weight)
       kilograms = float(input("How many Kilos ? "))
       lb, o = metricTopound(kilograms)
       print('The amount of pounds you entered is {}. '\
       'This is {} pounds and {} ounces.'.format(kilograms, lb, o))



elif unit == "P":
         poundsToMetric(weight)
         pounds = float(input("How many Pounds? "))
         kg, g = poundsToMetric(pounds)
         print('The amount of pounds you entered is {}. '\
         'This is {} kilograms and {} grams.'.format(pounds, kg, g))
0 голосов
/ 15 февраля 2019

Возможно, вы хотите определить функции заранее:

def metricTopound(kilograms):
    pounds = kilograms * 2.2
    ounces = pounds * 16

    return int(pounds), ounces % 16

def poundsToMetric(pounds):
    kilograms = pounds / 2.2
    grams = kilograms * 1000

    return int(kilograms), grams % 1000

weight = input('Enter K for kilos  or P for pounds : ')

unit = weight

if unit == "K":
    kilograms = float(input("How many Kilos ? "))
    lb, o = metricTopound(kilograms)
    print('The amount of kilograms you entered is {}. '\
    'This is {} pounds and {} ounces.'.format(kilograms, lb, o))
elif unit == "P":
    pounds = float(input("How many Pounds? "))
    kg, g = poundsToMetric(pounds)
    print('The amount of pounds you entered is {}. '\
    'This is {} kilograms and {} grams.'.format(pounds, kg, g))
...