Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2020, 14:43   #1
VolodyaBuzin
Пользователь
 
Регистрация: 10.11.2017
Сообщений: 56
По умолчанию Метод частотного анализа текста на Python 3.7 в Visual Studio 2019 Community

Добрый день! Я пишу алгоритм частотного анализа текста с помощью Visual Studio 2019 Community по этому видео:
https://www.youtube.com/watch?v=lGX2...ture=emb_title
И получил какую-то ошибку, хотя TXT, сохранённый в UTF-8, лежит в одной папке с py-файлом.

Исходный код:
Код:
line1 = "==============================================================="
line2 = "---------------------------------------------------------------"
 
print(line1+'''
\t\t А = 8.01% \t Б = 1.59%
\t\t В = 4.54% \t Г = 1.70%
\t\t Д = 2.98% \t Е = 8.45%
\t\t Ё = 0.04% \t Ж = 0.94%
\t\t З = 1.65% \t И = 7.35%
\t\t Й = 1.21% \t К = 3.49%
\t\t Л = 4.40% \t М = 3.21%
\t\t Н = 6.70% \t О = 10.97%
\t\t П = 2.81% \t Р = 4.73%
\t\t С = 5.47% \t Т = 6.26%
\t\t У = 2.62% \t Ф = 0.26%
\t\t Х = 0.97% \t Ц = 0.48%
\t\t Ч = 1.44% \t Ш = 0.73%
\t\t Щ = 0.36% \t Ъ = 0.04%
\t\t Ы = 1.90% \t Ь = 1.74%
\t\t Э = 0.32% \t Ю = 0.64%
\t\t Я = 2.01%
'''+line1)
 
name = input("File-name: ")
print(line2); text = ""
 
try:
    with open(name,"r") as file:
        original = file.read()
except FileNotFoundError:
    print("File is not found!")
else:
    for i in original:
        if i !=" ": 
            text += i
        else: 
            pass
 
dict = {i for i in text}
 
def check(words, char):
    k = 0
    for i in words:
        if i == char: k += 1
    return k
 
percent = 100
length = len(text) 
var = 0
print("[*] Result: ")
 
for symbol in dict:
    stat = percent * check(text,symbol) / length
    if var%2 == 0:
        print("\t\t{0} - {1}%\t".format(symbol,round(stat,2)),end=""); var += 1
    else:
        print("{0} - {1}%".format(symbol,round(stat,2))); var += 1
 
if var%2 == 0: print(line2)
else: print("\n"+line2)
Результат:
Код:
===============================================================
                 А = 8.01%       Б = 1.59%
                 В = 4.54%       Г = 1.70%
                 Д = 2.98%       Е = 8.45%
                 Ё = 0.04%       Ж = 0.94%
                 З = 1.65%       И = 7.35%
                 Й = 1.21%       К = 3.49%
                 Л = 4.40%       М = 3.21%
                 Н = 6.70%       О = 10.97%
                 П = 2.81%       Р = 4.73%
                 С = 5.47%       Т = 6.26%
                 У = 2.62%       Ф = 0.26%
                 Х = 0.97%       Ц = 0.48%
                 Ч = 1.44%       Ш = 0.73%
                 Щ = 0.36%       Ъ = 0.04%
                 Ы = 1.90%       Ь = 1.74%
                 Э = 0.32%       Ю = 0.64%
                 Я = 2.01%
===============================================================
File-name: D:\Защита информации\MyCrypt\MyCrypt\cryptOfText.TXT
---------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\debugpy\__main__.py", line 45, in <module>
    cli.main()
  File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\debugpy/..\debugpy\server\cli.py", line 430, in main
    run()
  File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\debugpy/..\debugpy\server\cli.py", line 267, in run_file
    runpy.run_path(options.target, run_name=compat.force_str("__main__"))
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\runpy.py", line 263, in run_path
    pkg_name=pkg_name, script_name=fname)
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\runpy.py", line 96, in _run_module_code
    mod_name, mod_spec, pkg_name, script_name)
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "D:\Защита информации\MyCrypt\MyCrypt\MyCrypt.py", line 31, in <module>
    except FileNotFoundError:
  File "_pydevd_bundle/pydevd_cython.pyx", line 1216, in _pydevd_bundle.pydevd_cython.SafeCallWrapper.__call__
  File "_pydevd_bundle/pydevd_cython.pyx", line 300, in _pydevd_bundle.pydevd_cython.PyDBFrame.trace_exception
  File "_pydevd_bundle/pydevd_cython.pyx", line 187, in _pydevd_bundle.pydevd_cython.is_unhandled_exception
  File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_collect_bytecode_info.py", line 167, in collect_try_except_info
    def collect_try_except_info(co, use_func_first_line=False):
IndexError: list index out of range
Press any key to continue . . .
Ранее я шифровал текст алгоритмом на C# из этого видео:
https://www.youtube.com/watch?v=N_jGR7QZG-U
И хочу с помощью кода выше получить таблицу встречаемости для исходного и зашифрованного текстов.

Алгоритм шифрования:
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace FinalProject
{
    public partial class mainForm : Form
    {
        public mainForm()
        {
            InitializeComponent();
        }
 
        private void exitToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
        }
 
        private void clearToolStripMenuItem_Click(object sender, EventArgs e)
        {
            txtIn.Text = string.Empty;
            txtOut.Text = string.Empty;
            txtKey.Text = "12";
        }
 
        private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MessageBox.Show(
                "Автор: Владимир Бузин, \nДата релиза: Ноябрь 2020 г",
                "Enigma v1.0",
                MessageBoxButtons.OK,
                MessageBoxIcon.Information
                );
        }
 
        private void btnAction_Click(object sender, EventArgs e)
        {
            int key = Convert.ToInt32(txtKey.Text);
 
            txtOut.Text = Encryption(txtIn.Text, key);
        }
 
        private string Encryption(string v1, int v2)
        {
            string temp = String.Empty;
            foreach (char c in v1)
            {
                temp = temp + Convert.ToString((char)(((int)(c) ^ v2)));
            }
            return temp;
        }
    }
}
Изображения
Тип файла: jpg программа-шифрования.jpg (103.3 Кб, 0 просмотров)
Тип файла: jpg путь-к-txt-файлу.jpg (44.3 Кб, 0 просмотров)
Вложения
Тип файла: txt cryptOfText.TXT (2.0 Кб, 0 просмотров)
VolodyaBuzin вне форума Ответить с цитированием
Старый 27.11.2020, 14:48   #2
VolodyaBuzin
Пользователь
 
Регистрация: 10.11.2017
Сообщений: 56
По умолчанию

Попробовал "Открыть с помощью" -> "Python" - открывается консоль с таблицей и предложением ввести имя файла, а потом она исчезает. Я не увидел текст ошибки. Попробовал через IDLE, а потом через первое в поиске консольное приложение Python 3.7 написать
python -version
cd D:\Защита информации\MyCrypt\MyCrypt
python MyCrypt.py
И ничего не вышло. Как пользоваться командами pip, cd и python для той версии Python, что установилась через Visual Studio, потому что через компилятор MVS я ошибку не увидел?

Исходный текст по варианту:
Код:
Для понимания процесса усложняющегося упорядочения связей во взаимодействиях и саморазвития материи важнейшее значение имеет раскрытие феномена активности материи. "В отечественной философской литературе самодвижение материи почти не исследуется. Еще меньше внимания уделяется вопросу об активности, хотя она не менее реальна, чем самодвижение" [5]. Механизм активность материи пытался объяснить В. И. Кремянский возникновением в объектах неких "внутренних напряжений": "... для того, чтобы возникла простая форма активности, необходимо и достаточно, чтобы образовалась какая-то система, имеющая внутренние напряжения... Именно с внутренних напряжений и начинается возникновение активности" .
Текст после шифрования (cryptOfText.TXT):
Код:
똓똼뙈눧똸똹똺똿똻똷똺똿뙈눧똸뙇똹뙁똲뙆뙆똷눧뙄뙆똼똹똱똺뙈뙉뙎똲똴똹뙆뙈눧뙄똸똹뙇뙈똳똹뙀똲똺똿뙈눧뙆똵뙈똰똲똾눧똵똹눧똵똰똷똿똻똹똳똲똾뙆뙅똵똿뙈뙂눧똿눧뙆똷똻똹뙇똷똰똵똿뙅똿뙈눧똻똷뙅똲뙇똿똿눧똵똷똱똺똲똾뙏똲똲눧똰똺똷뙀똲똺똿똲눧똿똻똲똲뙅눧뙇똷뙆똽뙇뙌뙅똿똲눧뙃똲똺똹똻똲똺똷눧똷똽뙅똿똵똺똹뙆뙅똿눧똻똷뙅똲뙇똿똿눩눧눥똕눧똹뙅똲뙀똲뙆뙅똵똲똺똺똹똾눧뙃똿똼똹뙆똹뙃뙆똽똹똾눧똼똿뙅똲뙇똷뙅뙄뙇똲눧뙆똷똻똹똳똵똿똱똲똺똿똲눧똻똷뙅똲뙇똿똿눧똸똹뙀뙅똿눧똺똲눧똿뙆뙆똼똲똳뙄똲뙅뙆뙈눩눧똒뙎똲눧똻똲똺뙋뙏똲눧똵똺똿똻똷똺똿뙈눧뙄똳똲똼뙈똲뙅뙆뙈눧똵똹똸뙇똹뙆뙄눧똹똶눧똷똽뙅똿똵똺똹뙆뙅똿눫눧뙂똹뙅뙈눧똹똺똷눧똺똲눧똻똲똺똲똲눧뙇똲똷똼뙋똺똷눫눧뙀똲똻눧뙆똷똻똹똳똵똿똱똲똺똿똲눥눧뉜눲뉚눩눧똛똲뙂똷똺똿똰똻눧똷똽뙅똿똵똺똹뙆뙅뙋눧똻똷뙅똲뙇똿똿눧똸뙌뙅똷똼뙆뙈눧똹똶뙍뙈뙆똺똿뙅뙋눧똕눩눧똟눩눧똝뙇똲똻뙈똺뙆똽똿똾눧똵똹똰똺똿똽똺똹똵똲똺똿똲똻눧똵눧똹똶뙍똲똽뙅똷뙂눧똺똲똽똿뙂눧눥똵똺뙄뙅뙇똲똺똺똿뙂눧똺똷똸뙇뙈똱똲똺똿똾눥눽눧눥눩눩눩눧똳똼뙈눧뙅똹똴똹눫눧뙀뙅똹똶뙌눧똵똹똰똺똿똽똼똷눧똸뙇똹뙆뙅똷뙈눧뙃똹뙇똻똷눧똷똽뙅똿똵똺똹뙆뙅똿눫눧똺똲똹똶뙂똹똳똿똻똹눧똿눧똳똹뙆뙅똷뙅똹뙀똺똹눫눧뙀뙅똹똶뙌눧똹똶뙇똷똰똹똵똷똼똷뙆뙋눧똽똷똽똷뙈눪뙅똹눧뙆똿뙆뙅똲똻똷눫눧똿똻똲뙉뙎똷뙈눧똵똺뙄뙅뙇똲똺똺똿똲눧똺똷똸뙇뙈똱똲똺똿뙈눩눩눩눧똟똻똲똺똺똹눧뙆눧똵똺뙄뙅뙇똲똺똺똿뙂눧똺똷똸뙇뙈똱똲똺똿똾눧똿눧똺똷뙀똿똺똷똲뙅뙆뙈눧똵똹똰똺똿똽똺똹똵똲똺똿똲눧똷똽뙅똿똵똺똹뙆뙅똿눥눧눩
Пришлось сохранять TXT в UTF-8, так как при ANSI система жаловалась на потерю данных.
VolodyaBuzin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Начало работы с программой visual studio 2019 Анатолий Семакин C# (си шарп) 0 15.12.2019 17:23
Visual Studio 2019 - C# где он vinniepooh C# (си шарп) 3 15.10.2019 09:03
Поддержка Visual Studio 2019 в PVS-Studio PVS-Studio C# (си шарп) 0 06.06.2019 15:01
Взломать шифр Виженера методом частотного анализа C# Nseries Помощь студентам 1 05.10.2015 20:48