#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. Рад помочь. Вы должны принять один из полученных вами ответов (но не мой, потому что другие были более полезными), нажав на галочку рядом с ответом.