Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Программирование на Python

  Все выпуски  

RFpro.ru: Программирование на Python


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Хватов Сергей
Статус: Профессор
Рейтинг: 615
∙ повысить рейтинг »
Абельхарисов Руслан/Marked One
Статус: Профессионал
Рейтинг: 99
∙ повысить рейтинг »
mihlyandij
Статус: 3-й класс
Рейтинг: 77
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Python

Номер выпуска:25
Дата выхода:08.11.2011, 01:00
Администратор рассылки:Калашников О.А. (Руководитель)
Подписчиков / экспертов:36 / 16
Вопросов / ответов:1 / 1

Консультация # 184367: Здраствуйте, уважаемые эксперты! Помогите c заданием: создать модуль, аргументом которого есть тьюпл, который представляет вектор разложения неизвестного числа в цепную дробь. Результат: Словарь из двухкомпонентных тьюплов, в котором каждый тьюпл состоит из числителя p_n и знаменателя q_n n-й аппроксимирующей дроби, : p_n = a_n *...


Консультация # 184367:

Здраствуйте, уважаемые эксперты!
Помогите c заданием:
создать модуль, аргументом которого есть тьюпл, который представляет вектор разложения неизвестного числа в цепную дробь.
Результат: Словарь из двухкомпонентных тьюплов, в котором каждый тьюпл состоит из числителя p_n и знаменателя q_n n-й аппроксимирующей дроби, :
p_n = a_n * p_{n-1} + p_{n-2}, p_{-1}=1, p_{-2}=0
q_n=a_n * q_{n-1} + q_{n-2}, q_{-1}=0, q{-2}=1
В качестве ключа к каждому тьюпла использовать его номер n , начиная с нуля.

Заранее огромное спасибо!!!

Дата отправки: 03.11.2011, 00:29
Вопрос задал: Посетитель - 384525 (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Хватов Сергей (Профессор):

Здравствуйте, Посетитель - 384525!
Вот полный код:

Код :
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
создать модуль, аргументом которого есть тьюпл,
который представляет вектор разложения неизвестного числа
в цепную дробь.

Результат: Словарь из двухкомпонентных тьюплов,
в котором каждый тьюпл состоит из числителя p_n
и знаменателя q_n n-й аппроксимирующей дроби, :
p_n = a_n * p_{n-1} + p_{n-2}, p_{-1}=1, p_{-2}=0
q_n=a_n * q_{n-1} + q_{n-2}, q_{-1}=0, q{-2}=1

В качестве ключа к каждому тьюпла использовать его номер n,
начиная с нуля.
"""

import sys

def rq184367(args):
    """То, что задано

    Правда это функция, а не модуль

    Возвращает два "лишних" элемента - с ключами -1 и -2    
    """
    res = dict()
    res[-1] = (1,0)
    res[-2] = (0,1)
    n = 0
    for a in args:
        res[n] = (a * res[n-1][0] + res[n-2][0],
                  a * res[n-1][1] + res[n-2][1])
        n += 1
    return res

def main(args):
    """Main script routine - не делает ничего интересного

    Выводит исходные двнные, вызывает функцию и выводит результат.
    Выводит без каких-либо "украшений"
    """
    print args
    ids = rq184367(args)
    print ids 

if __name__ == '__main__':
    """Вызов
    Аргументы передаются через параметры вызова
    """
    main(map(int, sys.argv[1:]))
и результат:
Код :
$ ./main.py 1 2 3 4 5 6 7 8 9
[1, 2, 3, 4, 5, 6, 7, 8, 9]
{0: (1, 1), 1: (3, 2), 2: (10, 7), 3: (43, 30), 4: (225, 157), 5: (1393, 972), 6: (9976, 6961), 7: (81201, 56660), 8: (740785, 516901), -1: (1, 0), -2: (0, 1)}

Версия Python: 2.7.1, ОС: Linux Fedora 15

Консультировал: Хватов Сергей (Профессор)
Дата отправки: 04.11.2011, 16:02
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!



В избранное