Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 09.11.2019
Сообщений: 17

Значения х берутся из файла, как сделать так чтобы х брался из файла построчно? (Подробнее в описании)

09.11.2019, 09:50. Показов 2489. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется заранее подготовленный файл со значениями х от -8 до 12, например:
х=-8
х=-7
...
х=12
Значения записаны построчно.
Нужно чтобы значение х (всего их 21) бралось из файла и подставлялось в функцию:
https://imageup.ru/img217/3504566/23.png
Затем после каждой подстановки значений х выводилось значение у в файл с текстом "При х = ... значение у = ..." тоже построчно.
Как это все записать в коде?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.11.2019, 09:50
Ответы с готовыми решениями:

Как сделать так, чтобы кусок "карты" брался из файла? (SFML, tilemap)
Имеется "карта" в виде массива: const int H = 12; const int W = 40; String TileMap = { ...

Как сделать так чтобы переменная в описании одной функции была доступна в описании другой?
Как сделать так чтобы переменная в описании одной функции была доступна в описании другой? Заранее спасибо.

Как сделать обработчик отслеживания изменения значения атрибута в html теге. Подробнее в описании
Как сделать обработчик отслеживания изменения значения атрибута в html теге? Есть форма в поле input с атрибутом value, мне нужен...

12
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
09.11.2019, 17:19
Sottufficiale, а как вы из файла считываете значения? и что там в файле просто цифры в каждой строке или как вы описали строки в которых присутствуют цифры ?
х=-8
х=-7
0
0 / 0 / 0
Регистрация: 09.11.2019
Сообщений: 17
09.11.2019, 17:31  [ТС]
Semen-Semenich, там именно так и записано:
x=-8
x=-7
x=-6
...
x=9
x=10
x=11
x=12
Надо вывести число из каждой строки и чтобы оно подставилось в функцию. У меня получалось только список выводить, т.е. весь список как он есть, а не значение х (цифру). Вот условие: Список значений x, подготавливается заранее в текстовом файле abc.txt
Текстовый файл с исходными данными должен содержать исходную информацию (как указано выше (интервал от -8 до 12).
Вот код, который использовал для открытия файла и чтения:
Кликните здесь для просмотра всего текста

s_file = open("source_data.txt", "r", encoding="utf8")
line = s_file.read().strip()
print(line)
s_file.close()
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
09.11.2019, 18:03
Sottufficiale, то есть у вас в файле строки. вам нужно считывать файл построчно а не весь за раз или за раз но разделить по символу конца строки
Python
1
2
s_file = open("source_data.txt", "r", encoding="utf8")
line = s_file.readlines()
или лучше сразу так
Python
1
2
s_file = open("source_data.txt", "r", encoding="utf8")
line = s_file.read().splinline()
тогда у вас в line будет список строк. ну а дальше в цикле берем строку из списка НО так как там строки нам нужно убрать лишнее и получить число. вот вам расширенный пример. но все делается 1 строкой
Python
1
2
3
4
5
6
>>> line = 'x=-8'
>>> line, number = line.split('=')
>>> number = int(number)
>>> number
-8
>>>
1
0 / 0 / 0
Регистрация: 09.11.2019
Сообщений: 17
09.11.2019, 18:15  [ТС]
Semen-Semenich, с одним разобрались. Как теперь сделать чтобы каждое значение читалось по очереди и подставлялось в функцию? Код самой функции
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from math import sqrt
if -2 > x:
    a = int((43*x**4-31*x**2+28)**4-83*x**3)
    b = int((42*x**8+x**3)**7+(6*x**2-71)**4)
    y = a / b
    print (y)
else: print("Нет решения")
if -2 <= x <3:
    c = int(sqrt((65*x**4+47*x**2+14)**5)-66*x**3)
    d = int((9*x**6+x**2)**5+(71*x**2-57)**5)
    y = c / d
    print(y)
else: print("Нет решения")
if x >= 3:
    e = int((46*x**7+39*x**2+16)**8-91*x**5)
    f = int((27*x**8-x**3)**3+sqrt((51*x-13)**3))
    y = e / f
    print(y)
else: print("Нет решения")
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
09.11.2019, 18:35
Лучший ответ Сообщение было отмечено Sottufficiale как решение

Решение

проще написать чем объяснять

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from math import sqrt
 
def main_func(x):
    if -2 > x:
        a = int((43*x**4-31*x**2+28)**4-83*x**3)
        b = int((42*x**8+x**3)**7+(6*x**2-71)**4)
        return a / b
        
    elif -2 <= x <3:
        c = int(sqrt((65*x**4+47*x**2+14)**5)-66*x**3)
        d = int((9*x**6+x**2)**5+(71*x**2-57)**5)
        return c / d
       
    elif x >= 3:
        e = int((46*x**7+39*x**2+16)**8-91*x**5)
        f = int((27*x**8-x**3)**3+sqrt((51*x-13)**3))
        return e / f
        
    return "Нет решения"
    
with open("source_data.txt") as file_in, open('fileout.txt','w') as f_out:
    for line in file_in.read().splitlines():
        number = int(line.split('=')[1])
        f_out.write(f'При x = {number} значение y = {main_func(number)}\n')
1
0 / 0 / 0
Регистрация: 09.11.2019
Сообщений: 17
09.11.2019, 18:46  [ТС]
Semen-Semenich, Спасибо большок, возник еще один вопрос, как сделать чтобы результат у округлялся до 3 знаков после запятой?
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
09.11.2019, 18:58
Python
1
2
3
4
5
6
7
8
9
10
>>> def toFixed(numObj, digits=0):
        return f"{numObj:.{digits}f}"
 
    
>>> numObj = 12345.6789
>>> toFixed(numObj, 3)
'12345.679'
>>> toFixed(numObj, 2)
'12345.68'
>>>
Округление чисел и его особенности
0
0 / 0 / 0
Регистрация: 09.11.2019
Сообщений: 17
09.11.2019, 19:22  [ТС]
Semen-Semenich, не получается...
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from math import sqrt
def main_func(x):
    if -2 > x:
        a = int((43*x**4-31*x**2+28)**4-83*x**3)
        b = int((42*x**8+x**3)**7+(6*x**2-71)**4)
        return a / b
 
    elif -2 <= x <3:
        c = int(sqrt((65*x**4+47*x**2+14)**5)-66*x**3)
        d = int((9*x**6+x**2)**5+(71*x**2-57)**5)
        return c / d
 
    elif x >= 3:
        e = int((46*x**7+39*x**2+16)**8-91*x**5)
        f = int((27*x**8-x**3)**3+sqrt((51*x-13)**3))
        return e / f
 
    return "Нет решения"
 
 
with open("source_data.txt") as file_in, open('fileout.txt','w') as f_out:
    for line in file_in.read().splitlines():
        number = int(line.split('=')[1])
        def toFixed(numObj, digits=0):
         return f"{numObj:.{digits}f}"
        numObj = main_func(number)
        toFixed(numObj, 3)
        f_out.write(f'При x = {number} значение y = {main_func(number)}\n')
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
09.11.2019, 19:32
во первых ну не нужно функцию в цикл загонять на то она и функция создается один раз и используется сколь угодно а у вас каждый раз создается в цикле и там же раз используется.
Цитата Сообщение от Sottufficiale Посмотреть сообщение
не получается...
а что вы хотели если вы записываете результат main_func(number) а не результат с округлением
Python
1
2
3
4
5
6
7
8
def toFixed(numObj, digits=0):
         return f"{numObj:.{digits}f}"
        
with open("source_data.txt") as file_in, open('fileout.txt','w') as f_out:
    for line in file_in.read().splitlines():
        number = int(line.split('=')[1])
        num = main_func(number)
        f_out.write(f'При x = {number} значение y = {toFixed(num, 3)}\n')
0
0 / 0 / 0
Регистрация: 09.11.2019
Сообщений: 17
09.11.2019, 19:41  [ТС]
Semen-Semenich, выводит так:
Кликните здесь для просмотра всего текста

...
При x = -3 значение y = 0.000
При x = -2 значение y = 0.000
...
При x = 3 значение y = 1944024032686535335739392.000
При x = 4 значение y = 18918527317209053224337670144.000
...

До округления были другие числа:
Кликните здесь для просмотра всего текста

...
При x = -3 значение y = 9.049987845730281e-25
При x = -2 значение y = 8.207261353053614e-07
...
При x = 3 значение y = 1.9440240326865353e+24
При x = 4 значение y = 1.8918527317209053e+28
...

Это какая-то ошибка или так должно быть?
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
09.11.2019, 19:55
Sottufficiale, не могу сказать не вникал. поищите округление числа с мантиссой 9.049987845730281e-25 может так и получается

Добавлено через 7 минут
При x = -3 значение y = 9.049987845730281e-25
При x = -2 значение y = 8.207261353053614e-07
это очень маленькие числа типа
0.000012345 и поэтому при округлении дают 0
а вторые очень большие (там+ после е) вот вам и результат
1
0 / 0 / 0
Регистрация: 09.11.2019
Сообщений: 17
09.11.2019, 20:04  [ТС]
Semen-Semenich, Спасибо большое за помощь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.11.2019, 20:04
Помогаю со студенческими работами здесь

Как сделать так, чтобы при создании файла с существующим именем нумерация добавлялась к имени файла?
Как сделать функцию, которая будет добавлять в имя файла нумерацию при каждом сохранении файла с существующим именем нумерацию в название...

как сделать так, чтобы текст брался из memo и при нажатии button текст отправлялся?
Всем привет. Долго не могу доделать свой спамер. Мне нужно сделать так чтобы почты брались из одной колонки, текст из другой и заголовок...

Сделать, так, чтобы путь файла из текстбота был указан в AddAttachment для отправки файла
Как сделать, так, что бы путь файла из текстбота был указан в .AddAttachment. для отправки файла? Заранее спасибо.

Как сделать так, чтобы PrintWriter не удалял содержимое файла
static PrintWriter pw; pw = new PrintWriter(new FileOutputStream(new File(&quot;mmm.txt&quot;))); Как сделать так, чтобы PrintWriter не удалял...

Как сделать так, чтобы перед запуском файла запрашивался пароль?
Как сделать так, чтобы перед запуском файла запрашивался пароль? То есть. Имеется bat-файл со следующим содержимым: @ECHO OFF CLS ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru