Форум сайта python.su
0
Всем здравствуйте. Я только начинаю изучать программирование и выбрал для себя пайтон. Решил написать небольшую программку
print('''========================= ОКРАСКА ========================= \nДобро пожаловать в программу по расчету площади окраски! Вы можете выбрать один из вариантов расчета: ''') def var(): #Выбор варианта расчета print(''' \nНажмите 1, если знаете наружный диаметр и длину. \nНажмите 2, если знаете наружный диаметр, толщину стенки и общий вес. \nНажмите 3, если передумали считать и хотите выйти из программы.''') variant=input('\n Введите номер варианта расчета: ') print('='*60) if variant=='1': po_dline() elif variant=='2': po_vesu() elif variant=='3': print('До Свидания!') exit else: print('Только 1, 2 или 3') var() def po_dline(): print('''\n Расчитаем площадь окрашиваемой поверхности зная наружный диаметр и длину.''') print('\nВнимание!! Диаметр вводим в миллиметрах, а длину трубы - в метрах.') print('='*60) while 1: #Проверка введенных данных. try: dim=float(input('Введите наружный диаметр трубы: ')) break except ValueError: print('Введите число!!') print('='*60) while 1: #Проверка введенных данных. try: dlina=float(input('Введите длину трубы: ')) break except ValueError: print('Введите число!!') sq=3.14159*dim*dlina*0.001 print('='*60) print('Площадь окрашиваемой поверхности %s м2' % round(float(sq), 2)) print('='*60) vihod() def vihod(): ex=input('\nЕще будем считать? Д/Н ') if ex=='l' or ex=='д': var() elif ex=='y' or ex=='н': print('Пока!!') exit() else: print('\nТолько Д (Да, будем считать) или Н (Нет, не будем).') vihod() def po_vesu(): print('''\n Расчитаем площадь окрашиваемой поверхности зная наружный диаметр, толщину стенки и вес.''') print('\nВнимание!! Диаметр и толщину стенки вводим в миллиметрах, вес - в килограммах.') print('='*60) while 1: #Проверка введенных данных. try: dim=float(input('\n Введите наружный диаметр трубы: ')) break except ValueError: print('='*60) print('\n Введите число!!') while 1: #Проверка введенных данных. try: s=float(input('\n Введите толщину стенки: ')) break except ValueError: print('\n Введите число!!') while 1: #Проверка введенных данных. try: ves=float(input('\n Введите общий вес трубы: ')) break except ValueError: print('\n Введите число!!') dim_vn=dim-2*s s_sec1=(3.14*dim**2)/4 s_sec2=(3.14*dim_vn**2)/4 s_sec=s_sec1-s_sec2 dlina=ves/(s_sec*7.85) s_pov=3.14159*dim*dlina print('\n Площадь окрашиваемой поверхности %s м2' % round(float(s_pov), 2)) vihod() var()
x='Введите наружный диаметр трубы: ' def proverka(x): dim=input(x) while 1: try: dim1=float(dim) break except ValueError: print('Введите число!!') print('='*40) return dim print (proverka(1200)) # здесь - только для проверки работы функции
Офлайн
26
isinstance() - проверка типов
В пример с input'ом наверно только ловить исключения
def proverka(): try: print input('Введите число:') except: proverka() proverka()
Отредактировано ajib6ept (Апрель 23, 2014 17:47:40)
Офлайн
0
Вот мне и не понятно как получить значение
x='Введите наружный диаметр трубы: ' # задана переменная - заведомо str def proverka(x): while 1: try: float(input(x)) #преобразую строку в дробь, но как мне вернуть эту дробь? break except ValueError: # Эта часть вроде работает... print('Введите число!!') print('='*40) a=proverka(x) print(a)
Офлайн
26
как получить значение
x='Введите наружный диаметр трубы: ' # задана переменная - заведомо str def proverka(x): while 1: try: return float(input(x)) #преобразую строку в дробь, но как мне вернуть эту дробь? break except: # Эта часть вроде работает... print('Введите число!!') print('='*40) a=proverka(x) print(a)
Офлайн
26
У меня тоже вопрос, в этом примере, почему если я сперва введу букву, а затем число мне возвращает None?
def proverka(): try: return input('Введите число:') except: proverka() print proverka()
Отредактировано ajib6ept (Апрель 23, 2014 18:51:58)
Офлайн
0
В твоем примере у меня всё работает… Мне не ясно только откуда там возникнуть исключению и что обрабатывать? А за return спасибо!! Теперь всё ясно!!
Офлайн
857
ajib6eptпотому там нет второго return
почему если я сперва введу букву, а затем число мне возвращает None?
StainlessCat
Пробовал такой вариант
>>> def proverka(x): ... print(x) ... dim = None ... while True: ... try: ... dim = float(input('-> ')) ... break ... except ValueError: ... print('Введите число!!') ... print('=' * 40) ... return dim ... >>> x = 'Введите наружный диаметр трубы: ' >>> print(proverka(x)) Введите наружный диаметр трубы: -> abc Введите число!! ======================================== -> abc Введите число!! ======================================== -> 123 123.0 >>>
Отредактировано py.user.next (Апрель 23, 2014 22:34:14)
Офлайн