Решение квадратного уравнения, коэффициенты читаются из файла, результат сохраняется в файл (python)
print('Решаем уравнение a•x²+b•x+c=0')
with open('file.txt') as file:
x = int(file.readline())
y = int(file.readline())
z = int(file.readline())
a=int(x)
b=int(y)
c=int(z)
discriminant = b**2 - 4*a*c
print('Дискриминант = ' + str(discriminant))
if discriminant < 0:
print('Корней нет')
elif discriminant == 0:
x = -b / (2 * a)
print('x = ' + str(x))
else:
x1 = (-b + discriminant ** 0.5) / (2 * a)
x2 = (-b - discriminant ** 0.5) / (2 * a)
print('x₁ = ' + str(x1))
print('x₂ = ' + str(x2))
Код такой, как дальше не знаю, не работает чтение из файла(файл лежит в папке вместе с кодом) Выдает ошибку:
x = int(file.readline()) ValueError: invalid literal for int() with base 10: '5 2 3'
В текстовом файле написано строчно: 5 2 3
Ответы (2 шт):
Методом file.readline() вы считываете всю строку (5 2 3) и пытаетесь все эти три числа преобразовать в одно вызовом int()
Запишите числа так, чтобы в каждой строке было лишь одно число, либо используйте:
x, y, z = map(int, file.readline().split())
Можете еще помочь, как сохранить результат в другой файл?
Для этого вам нужно открыть файл в режиме записи (w) и использовать метод write().
Например:
with open('file2.txt', 'w', encoding='utf-8') as file:
file.write('x₁ = ' + str(x1))
file.write('\n') # перенос строки
file.write('x₂ = ' + str(x2))
Указание кодировки (encoding="utf-8") нужно для правильного отображения символов вроде "₁".
Итак, как сохранить в другой файл (ответ на комментарий @Илья):
Просто добавьте следующие строчки кода:
open_file = open('write.txt', 'w')
open_file.write(*map(str, [x, y, z]))
open_file.close()
Разберём строку 2.
- Делаем список из
x,yиz(в коде[x, y, z] - Переводим элементы списка в тип
intс помощью функцииmap - Функцией
*выводим файл все элементы (стандарт*- через пробел)
Помог ответ?