Нужна помощь в создании программы «python» — Как мне заставить мое меню выбора запускать разные преобразования, когда я ввожу ввод (1 или 2)

#python

#python

Вопрос:

Я работал над этим преобразователем температуры, но у меня возникли проблемы с объединением двух программ (от Цельсия до Фаренгейта) и (от Фаренгейта до Цельсия), я могу вывести меню отображения на печать, но не могу понять, как выбрать конвертер.

 # Tempeture Converter
def convert():
    print 'Conversions Menu';
    print '(1) Celsius to Fahrenheit';
    print '(2) Fahrenheit to Celsius';

def select():
    convert();
    choice = input ('Enter Choice Number:')
    if (input == '1'):
        C2F();
    elif (input == '2'):
        F2C();

def F2C():
    Fahrenheit = input('enter degrees in Fahrenheit: ');
    Celsius    = ( 5.0 / 9.0) * (Fahrenheit -32); 
    print Fahrenheit, 'Fahrenheit =', Celsius, 'Celsius';

def C2F():
    Celsius    = input('enter degrees in Celsius: ');
    Fahrenheit = (9.0 / 5.0) * Celsius  32;
    print Celsius, 'Celsius =', Fahrenheit, 'Fahrenheit';
  

* Исправление *

 # Tempeture Converter
def convert():
    print 'Conversions Menu';
    print '(1) Celsius to Fahrenheit';
    print '(2) Fahrenheit to Celsius';

def select():
    convert();
    choice = input ('Enter Choice Number:')
    if (choice == '1'):
        C2F();
    elif (choice == '2'):
        F2C();

def F2C():
    Fahrenheit = input('enter degrees in Fahrenheit: ');
    Celsius    = ( 5.0 / 9.0) * (Fahrenheit -32); 
    print Fahrenheit, 'Fahrenheit =', Celsius, 'Celsius';

def C2F():
    Celsius    = input('enter degrees in Celsius: ');
    Fahrenheit = (9.0 / 5.0) * Celsius  32;
    print Celsius, 'Celsius =', Fahrenheit, 'Fahrenheit';
  

Ответ №1:

В select функции у вас есть

 choice = input('...')
  

но затем вы проверяете

 if (input == '1'):
    ...
  

эта секунда input должна быть choice . То же самое относится и к elif(input == '2'): оператору. Снова input должен быть заменен на выбор. Или, в качестве альтернативы, вы можете использовать raw_input с '1' и '2' , как предложил J.F. .

Кроме input того, функция автоматически преобразует 1 и 2 в целые числа, поэтому вам действительно следует проверить if (choice == 1) и аналогично для 2 .

Наконец, вам понадобится какая-то форма, которая фактически запускает select() функцию, например

 if __name__ == '__main__':
    select()
  

Комментарии:

1. Я отредактировал свой ответ (преобразовать '1' в 1 и ввести, если имя .. форма), теперь он должен работать так, как вы намереваетесь.

Ответ №2:

Вы должны использовать raw_input вместо input , input попытается обернуть все, что вы вводите, eval чтобы преобразовать его в код Python, поэтому, когда вы вводите «1» или «2», оно будет преобразовано в целое число, но вы все еще пытаетесь сравнить со строками.

Объедините это с тем, о чем упоминал Пол choice , вместо input , и у вас должно быть рабочее решение.

Кроме того, удалите все точки с запятой и круглые скобки в ваших условных обозначениях, они не нужны в Python:

 def select():
    convert()
    choice = raw_input('Enter Choice Number:')
    if choice == '1':
        C2F()
    elif choice == '2':
        F2C()
  

Комментарии:

1. Есть ли способ перезапустить программу после использования конвертера… итак, как только я конвертирую F2C, я снова получаю меню?

2. @enrique2334 Если вы нашли правильное решение, вы должны принять ответ. Кроме того, вам придется использовать цикл while, чтобы иметь возможность выполнить другое преобразование после первоначального.

Ответ №3:

Есть ли способ перезапустить программу после использования конвертера… итак, как только я конвертирую F2C, я снова получаю меню?

Самый простой способ — обернуть select() функцию в цикл:

 if __name__ == '__main__':
    while True:
      select()
  

А затем в select() функции, возможно, добавьте опцию выхода:

 elif choice == '3':
  exit()
  

Комментарии:

1. Рад помочь. Вы должны принять один из полученных вами ответов (но не мой, потому что другие были более полезными), нажав на галочку рядом с ответом.