Форум сайта python.su
Здравствуйте!
У меня есть набор предложений. Например, Маша ела кашу и суп. Я хочу сделать возможным следующее, записать предложение в виде:
Маша 11 243 и 243
Тогда программа дойдя до 11 и 243 обратилась бы к базе данных, а там было бы:
таблица глаголов
id word
11 ела
11 кушала
11 лопала
таблица существительных
id word
243 кашу
243 гречку
243 суп
243 котлету
243 рис
И было выбрано по одному слову из каждого списка, т.е.
“Маша лопала суп и котлету” или “Маша ела котлету и рис”.
Мне подсказали такое решение и наверное оно должно работать. Беда только в том, что мне нужен сайт, одна страничка и там две кнопки: “получить новое предложение” и “изменить слова в этом”. Кто-нибудь может это сделать, python начала учить, но пока не понимаю, как это все работает. База данных мной написана на MySQL
Если это стоит денег, то я готова заплатить. Спасибо!
void Main()
{
Console.WriteLine(Replace(“Маша {11} {243} и {243}.”));
}
Dictionary<int,string> Replaces = new Dictionary<int,string> {
{ 11, new string {“ела”, “кушала”, “лопала”} },
{ 243, new string {“кашу”, “гречку”, “суп”, “котлету”, “рис”} },
};
string Replace(string input)
{
Dictionary<int, int> wordsCounts = new Dictionary<int, int>();
Regex regex = new Regex(@"\{\d+", RegexOptions.IgnoreCase);
return regex.Replace(input, delegate(Match match)
{
string value = match.ToString();
value = value.Substring(1, value.Length - 2);
int id = int.Parse(value);
string arr = Replaces;
int count;
if(!wordsCounts.TryGetValue(id, out count))
count = 0;
wordsCounts = count + 1;
return Shuffle(arr, count);
});
}
Random rnd = new Random();
string Shuffle(string arr, int i)
{
int j = rnd.Next(i, arr.Length);
string temp = arr;
arr = arr;
arr = temp;
return arr;
}
Офлайн
не совсем понятно, куда вы тут сайт прикрутите?
В смысле - вам свой браузер нужен или просто окно с кнопками?
Офлайн
Страница с кнопками, конечно.
Офлайн
как-то так
# -*- coding:utf8 -*- from PyQt4 import Qt import random def btnIn_click(): s = u'Маша' +' '+ word0[0] +' '+ word1[0] edit.setText(s) def btnOut_click(): index1 = random.randint(0,2) index2 = random.randint(0,2) #print index1,index2 s = u'Маша' +' '+ word0[index1] +' '+ word1[index2] edit.setText(s) app = Qt.QApplication([]) word0 = [u'ела',u'кушала',u'лопала'] word1 = [u'суп',u'кашу',u'рыбу'] w = Qt.QWidget() edit = Qt.QLineEdit(w) btnIn = Qt.QPushButton(u'Получить',w) btnIn.clicked.connect(btnIn_click) btnOut = Qt.QPushButton(u'Изменить',w) btnOut.clicked.connect(btnOut_click) grid = Qt.QGridLayout(w) grid.addWidget(edit,0,0,1,2) grid.addWidget(btnIn,1,0) grid.addWidget(btnOut,1,1) w.move(0,0) w.show() app.exec_()
Отредактировано vic57 (Март 4, 2016 14:43:44)
Офлайн
ElenaTomsk_Это нужно входную строку проанализировать на лексемы. А потом в соответствии с лексемами уже выбирать, что с ними делать и в какой таблице какие из них смотреть.
Я хочу сделать возможным следующее, записать предложение в виде:Тогда программа дойдя до 11 и 243 обратилась бы к базе данныхМаша 11 243 и 243
Офлайн
Здравствуйте, vic57!
Большое спасибо вам за ответ, репутацию подняла, но видите ли, у меня там все сложней.
Есть база данных, есть таблица со списком приложений, есть таблица со словами на замену, есть дополнительные ограничения по тому, где и как могут слова использоваться.
Если у вас уже есть интерес, я бы вам рассказала подробности, там в общем-то несложно, в базе я все сделала и через нее работает (примерно 10 таблиц, процедуры уже созданы), но надо сделать именно веб-страницу.
Скажите, пожалуйста, сколько бы это могло стоить? Я считаю, каждая работа должна быть оплачена. Еще раз спасибо вам.
Офлайн
py.user.next
Офлайн
ElenaTomsk_
Ценю ваш деловой подход, два года - это вам не вату из пупа выковыривать. Каждое слово - в свою группу, каждое предложение - в свою таблицу, написано какого типа - взять и сделать бл@дь!
Офлайн
я не совсем понимаю, зачем вам веб нужен - лишний тормоз будет
простейший интерфейс к базе данных.
import sys from PyQt4.QtCore import * from PyQt4.QtGui import * from PyQt4.QtSql import * dbname = None def btn_connect(): # DB type, host, user, password... db = QSqlDatabase.addDatabase("QMYSQL"); db.setHostName("localhost") db.setDatabaseName("test") db.setUserName("root") db.setPassword("") ok = db.open() # True if connected if ok: text.insertHtml('Connected to MySQL<br />') btnQuery.setEnabled(True) global dbname dbname = db else: text.insertHtml('ERROR connecting to MySQL<br />') btnQuery.setEnabled(False) def btn_query(dbname): # do a query "on" a DB connection query = QSqlQuery(dbname) if query.exec_("SHOW TABLES"): text.insertHtml('<br />') while query.next(): table = query.value(0).toString() text.insertHtml('%s<br />' % table) text.insertHtml('<br />') text.insertHtml('TOTAL %s TABLES' % query.size()) app = QApplication([]) w = QWidget() text = QTextBrowser(w) btnConnect = QPushButton("Connect",w) btnConnect.clicked.connect(btn_connect) btnQuery = QPushButton("Query",w) btnQuery.clicked.connect(btn_query) btnQuery.setEnabled(False) grid = QGridLayout(w) grid.setMargin(0) grid.addWidget(text,0,0,1,3) grid.addWidget(btnConnect,1,0) grid.addWidget(btnQuery,1,1) w.move(0,0) w.show() sys.exit(app.exec_())
Отредактировано vic57 (Март 5, 2016 01:35:38)
Офлайн
ElenaTomsk_
https://habrahabr.ru/post/128836/
http://pyqt.sourceforge.net/Docs/PyQt4/qsqldatabase.html#details
здесь почитайте…
Офлайн