Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 2, 2015 17:45:34

Nameless95
Зарегистрирован: 2014-11-28
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Помощь с выводом комплексных чисел из текстового файла

Здравствуйте! Нужна помощь с организацией построчного считывания комплексных чисел из тестового файла.
Идея программы такая: программа должна открыть текстовый файл с комплексными числами (чисел может быть и несколько сотен), выполнить построчное чтение этих чисел, следовательно преобразовать строки в сами числа и выполнить расчёты.
Расчёты с комплексными числами с вводом с клавиатуры работают, построчное чтение с дальнейшим выполнением программы удаётся с натуральными числами.
Помогите, пожалуйста, разобраться, как организовать вывод и преобразование именно комплексных чисел. Заранее спасибо за помощь!

Офлайн

#2 Авг. 2, 2015 17:54:49

J.R.
Зарегистрирован: 2015-07-18
Сообщения: 147
Репутация: +  16  -
Профиль  

Помощь с выводом комплексных чисел из текстового файла

.

Отредактировано J.R. (Фев. 27, 2016 15:58:27)

Офлайн

#3 Авг. 3, 2015 00:08:17

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Помощь с выводом комплексных чисел из текстового файла

Nameless95
считываете строку из файла, передаете ее встроенной функции complex() :

>>> s = '1+2j'
>>> c = complex(s)
>>> type(c)
<type 'complex'>
>>> c
(1+2j)
J.R.
за такое решение вам оценка 2.
Во первых применение eval для внешних входных данных даже не то что дурной той, а прямая угроза безопасности. Попадется вам строчка import os; os.remove() и будет весело.
Во вторых, читать нужно документацию.
complex([real])
Create a complex number with the value real + imag*j or convert a string or number to a complex number. If the first parameter is a string, it will be interpreted as a complex number and the function must be called without a second parameter.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Отредактировано JOHN_16 (Авг. 3, 2015 00:12:45)

Офлайн

#4 Авг. 3, 2015 04:42:58

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Помощь с выводом комплексных чисел из текстового файла

>>> import re
>>> 
>>> def getk(s):
...     pat = r"""
...       (           # действительная часть
...         [-+]?     # может быть знак
...         \d+       # целая часть
...         (?:.\d+)? # может быть дробным
...       )
...       (           # мнимая часть
...         [-+]      # должен быть знак
...         \d+       # целая часть
...         (?:.\d+)? # может быть дробным
...       )
...       i           # мнимая единица
...     """
...     match = re.search(pat, s, re.X)
...     if match:
...         return tuple(map(float, match.groups()))
... 
>>> def norm(s):
...     return re.sub(r'\s+', '', s)
... 
>>> def str_to_cmplx(s):
...     return complex(*getk(norm(s)))
... 
>>> str_to_cmplx('-1 + 3 i')
(-1+3j)
>>> str_to_cmplx('-1.5 + 3.8 i')
(-1.5+3.8j)
>>>

Сначала строка чистится, затем преобразуется в коэффициенты, затем коэффициенты передаются в конструктор комплексного числа.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version