Форум сайта python.su
Мне нужно чтобы длина числа(строки) при вводе в переменные (a, b, c) была не больше 5. Т.е. если пользователь вводит больше 5 символов писало “Слишком большое значение, повторите ввод”.
print ('Добро пожаловать в программу для решения квадратных уравнений') print ('\n') import math def discriminant(a, b, c): return b**2 - 4*a*c def correct_input(): while True: try: a = int(input('Введите a: ')) b = int(input('Введите b: ')) c = int(input('Введите c: ')) return a, b, c except ValueError: print("Введите число") while(True): a, b, c = correct_input() D = discriminant(a, b, c) print('D = ', D) if a == 0 and b == 0 and c == 0: print ('Перменные могут принимать любое значение') elif a == 0 and b == 0: print ('Некорректное значение данных ') elif a == 0: print ('x=',(c/b)) if D < 0: print('Дискриминант отрицательный и не имеет корней') elif D == 0: root = (-b) / (2 * a) print('Это уравнение имеет только один корень' ,root,) else: discRoot = math.sqrt(D) root1 = round((-b + discRoot) / (2 * a), 2) root2 = round((-b - discRoot) / (2 * a), 2) print('Это уравнение имеет 2 корня' ,root1, 'и' ,root2) if input("Решить уравнение еще раз?(y/n) - ") != 'y': break
Офлайн
переменные (a, b, c) перевести в строку, найти длину и сравнить с 5
In [1]: a, b = 11, 111111111 In [2]: len(str(a)) > 5 Out[2]: False In [3]: len(str(b)) > 5 Out[3]: True
Офлайн
Чет не понял… Можно по подробнее или в моей коде измени пожалуйста.
Офлайн
Мой пример довольно прост, что именно в нем не понятно? Не понятно что делает len, str?
Офлайн
def correct_input(): result = [] for var in 'abc': query = 'Введите {0} :'.format(var) while True: try: x = int(input(query)) assert abs(x) <= 99999 result.append(x) break except ValueError: query = 'Нужно число. Введите {0} :'.format(var) except AssertionError: query = 'Слишком много разрядов. Введите {0} :'.format(var) return result
Отредактировано dimy44 (Окт. 6, 2014 21:18:01)
Офлайн
dimy44Всё отлично работает. Но теперь если любую переменную переменную вести ноль, то выходит ошибка
Офлайн
destik123, тебя научить пользоваться гугл-транслейтом?
Офлайн
Мне важнее исправить эту проблемму
Офлайн
Ну не любую, а только “а”. Похоже, код не ваш, раз вы такие вопросы задаёте… Да ну ладно
def correct_input(): result = [] for var in 'abc': query = 'Введите {0} :'.format(var) while True: try: x = int(input(query)) if var == 'a' and x == 0: query = 'Переменная a не может быть равна нулю. Введите ещё раз a :' elif abs(x) > 99999: query = 'Слишком много разрядов, можно не более пяти. Введите ещё раз {0} :'.format(var) else: result.append(x) break except ValueError: query = 'Нужно число. Введите ещё раз {0} :'.format(var) return result
Отредактировано dimy44 (Окт. 7, 2014 16:33:04)
Офлайн