Форум сайта python.su
Здравствуйте! Нужна помощь с организацией построчного считывания комплексных чисел из тестового файла.
Идея программы такая: программа должна открыть текстовый файл с комплексными числами (чисел может быть и несколько сотен), выполнить построчное чтение этих чисел, следовательно преобразовать строки в сами числа и выполнить расчёты.
Расчёты с комплексными числами с вводом с клавиатуры работают, построчное чтение с дальнейшим выполнением программы удаётся с натуральными числами.
Помогите, пожалуйста, разобраться, как организовать вывод и преобразование именно комплексных чисел. Заранее спасибо за помощь!
Офлайн
.
Отредактировано J.R. (Фев. 27, 2016 15:58:27)
Офлайн
Nameless95
считываете строку из файла, передаете ее встроенной функции complex() :
>>> s = '1+2j' >>> c = complex(s) >>> type(c) <type 'complex'> >>> c (1+2j)
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.
Отредактировано JOHN_16 (Авг. 3, 2015 00:12:45)
Офлайн
>>> 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) >>>
Офлайн