Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
from text_to_num import text2num from collections import Counter from tkinter import * window = Tk() window.title("Добро пожаловать в приложение PythonRu") window.geometry('700x750') lbl = Label(window, text="Введите число:") lbl.grid(column=0, row=0) txt = Entry(window, width=10) txt.grid(column=1, row=0) # Перевести на французский!!! # --------------------- g_lang = "en" # --------------------- # Не смотри на эту функцию - она большой костыль, потому что мне было лень думать # А вообще эта функция фильтрует слова, которые не подхоят text_to_num # Благодаря этой функции эта прога подходит ко всем языкам. def func_find_word_num(list_words): list_words_checker = [] for word in list_words: # Костыль для английского языка. Почему - то эта библиотека не понимает слово million итд, но вот слово # thousand, например, она может понять. Странно :ъ if 'illion' in word and g_lang == "en": list_words_checker.append(word) continue try: text2num(word, lang=g_lang) except: continue else: list_words_checker.append(word) return list_words_checker # Эта функция переводит арабские цифры в римские. def func_check_io(n): result = '' for arabic, roman in zip((1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1), 'M CM D CD C XC L XL X IX V IV I'.split()): result += n // arabic * roman n %= arabic return result # Эта функция просто считает сколько раз то или иное слово встретилось в списке def func_count_numbers_in_list(list_words): return dict(Counter(list_words)) # Эта функция просто считает сколько раз повторилось слово, которое не должно было повторяться. def func_count_repeat_numbers_in_list(list_words): list_words_repeat = [] for index in range(1, len(list_words)): if list_words[index - 1] == list_words[index]: list_words_repeat.append(list_words[index]) else: continue return dict(Counter(list_words_repeat)) # Эта функция генерирует список слов, которые являются цифрой так или иначе. def func_split_str_numbers(line): list_words = line.split() list_word_result = [] for word in list_words: for word_check in set(func_find_word_num(list_words)): if word == word_check: list_word_result.append(word) else: continue return list_word_result def clear(): list_ = window.grid_slaves() for l in list_: if l is txt or l is btn: continue l.destroy() # Главная функция def main(): clear() window.title("Добро пожаловать в приложение PythonRu") window.geometry('700x750') lbl = Label(window, text="Введите число:") lbl.grid(column=0, row=0) # txt = Entry(window, width=10) # txt.grid(column=1, row=0) # while True: # number = input('\nВведите число: ').lower() number = txt.get().lower() # if number == 'stop': # break try: lbl1 = Label(window, text="Arabic = " + str(text2num(number, lang=g_lang))) lbl1.grid(column=1, row=1) lbl2 = Label(window, text="Roman = " + str(func_check_io(text2num(number, lang=g_lang)))) lbl2.grid(column=1, row=2) # lbl1 += str(text2num(number, lang=g_lang)) # lbl2 += str(func_check_io(text2num(number, lang=g_lang))) except Exception as e: length = len(str(repr(e))) print('-' * length, '\nОшибка!\n') dict_repeat_num = func_count_repeat_numbers_in_list(func_split_str_numbers(number)) dict_num = func_count_numbers_in_list(func_split_str_numbers(number)) set_incorrect_words = set(number.split()) set_repeat_num = set(dict_num.keys()) set_incorrect_words -= set_repeat_num def fabric(name: str) -> '(x: Any)': return lambda row, key_, dict_repeat_num_, : Label(window, text=name. format(key_, dict_repeat_num_[key_])).grid(column=1, row=row + 2) label = fabric('* {} повторяется {} лишний(их) раз') for offset, key in enumerate(dict_repeat_num): label(offset, key, dict_repeat_num) if set_incorrect_words != set(): lbl4 = Label(window, text=f'Некорректные слова:{set_incorrect_words}') lbl4.grid(column=1, row=3) lbl5 = Label(window, text=f'Подробнее: {repr(e)}') lbl5.grid(column=1, row=4) # print() # Точка входа в программу if __name__ == '__main__': btn = Button(window, text="Конвертировать!", command=main) btn.grid(column=2, row=0) window.mainloop()
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)