Skip to content

python-basic/sem3-t4-Rakleed

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Содержание

"""
    Автор: Моисеенко Павел, группа № 1, подгруппа № 2.

    ЛР 12. Задание: написать программу для вычисления факториала.

"""


def main():
    number = -1
    input_number = input("Введите число: ")
    try:
        number = int(input_number)
    except:
        print("Вы ввели неверное значение.")
    result = factorial(number)
    print("Факториал {} = {}.".format(input_number, result))


def factorial(number):
    if type(number) is int and number >= 0:
        fl = 1
        i = number
        if number == 0:
            return 1
        else:
            while i > 1:
                fl = fl * i
                i -= 1
        return fl
    else:
        raise ValueError("Вы ввели неверное число.")


main()

Result of lab12

Инвариативная самостоятельная работа № 4

"""
    Автор: Моисеенко Павел, группа № 1, подгруппа № 2.

    ИСР 4.1. Задание: разработать программу для считывания данных JSON-
    формата из файла и вывод их в табличном виде на экран. Организо-
    вать тестирование работоспособности программы с помощью assert,
    print.

"""

import json


def json_table(data):
    table = []
    string = '| {id:^3} | {first_name:^10} | {last_name:^15} | {email:^30} | {gender:^6} | {ip_address:^16} |'
    t_caption = '| {:^3} | {:^10} | {:^15} | {:^30} | {:^6} | {:^16} |'.format('id', 'first_name', 'last_name', 'email',
                                                                               'gender', 'ip_address')
    header = '-' * len(t_caption)

    table.append(header)
    table.append(t_caption)
    table.append(header)

    for element in range(len(data)):
        temp = data[element]
        res = string.format(**temp)
        table.append(res)
    table.append(header)
    return table


def test_function(function, arg):
    try:
        assert function(arg)[1
               ] == '| id  | first_name |    last_name    |             email              | gender |    ip_address    |'
    except:
        print('Тест провален, шапка не соответствует ожиданиям.')
    try:
        assert type(function(arg)) is tuple
    except:
        print('Тест на тип провален.', type(function(arg)))
    try:
        assert len(function(arg)) == 100
    except:
        print('Количество строк не соответствует ожиданиям —',
              len(function(arg)))


def main():
    with open('file.json') as f:
        data_dict = json.load(f)

    test_function(json_table, data_dict)


main()

Result of indepworkinvar4-1

"""
    Автор: Моисеенко Павел, группа № 1, подгруппа № 2.

    ИСР 4.2. Задание: дополнить программу задания 4.1 тестами с
    использованием библиотеки doctest.

"""

import json


def json_table():
    """
    >>> json_table()[1]
    '| id  | first_name |    last_name    |             email             | gender |    ip_address    |'
    """

    with open('file.json') as f:
        data_dict = json.load(f)
    table = []
    string = '| {id:^3} | {first_name:^10} | {last_name:^15} | {email:^30} | {gender:^6} | {ip_address:^16} |'
    t_caption = '| {:^3} | {:^10} | {:^15} | {:^30} | {:^6} | {:^16} |'.format('id', 'first_name', 'last_name', 'email',
                                                                               'gender', 'ip_address')
    header = '-' * len(t_caption)
    table.append(header)
    table.append(t_caption)
    table.append(header)
    for element in range(len(data_dict)):
        temp = data_dict[element]
        res = string.format(**temp)
        table.append(res)
    table.append(header)
    return table


def main():
    foo = json_table()


if __name__ == "__main__":
    import doctest
    doctest.testmod()

Result of indepworkinvar4-2

"""
    Автор: Моисеенко Павел, группа № 1, подгруппа № 2.

    ИСР 4.3. Задание: дополнить программу задания 4.1, 4.2 тестами с
    использованием пакета py.test.

"""

import pytest
import json


def json_table(data):
    table = []
    string = '| {id:^3} | {first_name:^10} | {last_name:^15} | {email:^30} | {gender:^6} | {ip_address:^16} |'
    t_caption = '| {:^3} | {:^10} | {:^15} | {:^30} | {:^6} | {:^16} |'.format('id', 'first_name', 'last_name', 'email',
                                                                               'gender', 'ip_address')
    header = '-' * len(t_caption)

    table.append(header)
    table.append(t_caption)
    table.append(header)

    for element in range(len(data)):
        temp = data[element]
        res = string.format(**temp)
        table.append(res)
    table.append(header)

    return table


def main():
    with open('file.json') as f:
        data_dict = json.load(f)
    foo = json_table(data_dict)


def test_json_table():
    assert json_table([{"id": 1, "first_name": "Susann", "last_name": "Wyldish", "email": "swyldish0@bing.com",
                        "gender": "Female", "ip_address": "112.109.35.15"},
                       {"id": 2, "first_name": "Oliy", "last_name": "Bruton", "email": "obruton1@forbes.com",
                        "gender": "Female", "ip_address": "166.20.188.54"},
                       {"id": 3, "first_name": "Ginelle", "last_name": "Inkpen", "email": "ginkpen2@tinypic.com",
                        "gender": "Female", "ip_address": "208.129.167.239"}]) == [
               '---------------------------------------------------------------------------------------------------',
               '| id  | first_name |    last_name    |             email              | gender |    ip_address    |',
               '---------------------------------------------------------------------------------------------------',
               '|  1  |   Susann   |     Wyldish     |       swyldish0@bing.com       | Female |  112.109.35.15   |',
               '|  2  |    Oliy    |     Bruton      |      obruton1@forbes.com       | Female |  166.20.188.54   |',
               '|  3  |  Ginelle   |     Inkpen      |      ginkpen2@tinypic.com      | Female | 208.129.167.239  |',
               '---------------------------------------------------------------------------------------------------']


if __name__ == "__main__":
    main()

Result of indepworkinvar4-3

Вариативная самостоятельная работа № 4

4.1. Сравнительный анализ библиотек для тестирования.

Результат.

"""
    Автор: Моисеенко Павел, группа № 1, подгруппа № 2.

    ВСР 4.2. Задание: разработать программу для считывания данных из
    JSON-файла и вывода их в табличном виде на экран и протестировать
    работоспособность с использованием unittest.

"""

import json


def list_to_pretty_string(list_of_lists: list) -> str:
    new_list = list()
    for each_list in list_of_lists:
        new_list.append(list(map(lambda x: str(x).center(30, ' '), each_list)))
    new_list = list(map(lambda x: '|'.join(x) + '\n' + '-' * len('|'.join(x)), new_list))
    new_list = '\n'.join(new_list)
    return new_list


def make_table(dcts: list) -> str:
    table = list()
    first_line = list(dcts[0].keys())
    table.append(first_line)
    for i in range(0, len(dcts)):
        table.append(list(dcts[i].values()))
    return list_to_pretty_string(table)


def get_from_file():
    with open('file.json') as js_file:
        dicts = json.loads(''.join(js_file.readlines()))
    return dicts


def main():
    js_dicts = get_from_file()
    table = make_table(js_dicts)
    print(table)


if __name__ == '__main__':
    main()
import unittest
import main


class TestTableMethods(unittest.TestCase):

    def test_make_table_is_str(self):
        self.assertEqual(type(main.make_table([{'a': '1'}, {'b': '2'}])), type(str()))

    def test_lst_to_str(self):
        self.assertEqual(type(main.list_to_pretty_string([[1, 2], [3, 4]])), type(str()))
        self.assertEqual(type(main.list_to_pretty_string([[1, 2], [3, '4']])), type(str()))

    def test_file_extra(self):
        self.assertEqual(type(main.get_from_file()), type(dict()))


TestTableMethods()

Result of indepworkvar4-2

About

sem3-t4-Rakleed created by GitHub Classroom

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •