ElenaTomsk_
Март 4, 2016 13:15:20
Здравствуйте!
У меня есть набор предложений. Например, Маша ела кашу и суп. Я хочу сделать возможным следующее, записать предложение в виде:
Маша 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;
}
vic57
Март 4, 2016 13:51:13
не совсем понятно, куда вы тут сайт прикрутите?
В смысле - вам свой браузер нужен или просто окно с кнопками?
ElenaTomsk_
Март 4, 2016 14:01:23
Страница с кнопками, конечно.
py.user.next
Март 4, 2016 14:54:51
ElenaTomsk_
Я хочу сделать возможным следующее, записать предложение в виде:
Тогда программа дойдя до 11 и 243 обратилась бы к базе данных
Это нужно входную строку проанализировать на лексемы. А потом в соответствии с лексемами уже выбирать, что с ними делать и в какой таблице какие из них смотреть.
ElenaTomsk_
Март 4, 2016 18:02:55
Здравствуйте, vic57!
Большое спасибо вам за ответ, репутацию подняла, но видите ли, у меня там все сложней.
Есть база данных, есть таблица со списком приложений, есть таблица со словами на замену, есть дополнительные ограничения по тому, где и как могут слова использоваться.
Если у вас уже есть интерес, я бы вам рассказала подробности, там в общем-то несложно, в базе я все сделала и через нее работает (примерно 10 таблиц, процедуры уже созданы), но надо сделать именно веб-страницу.
Скажите, пожалуйста, сколько бы это могло стоить? Я считаю, каждая работа должна быть оплачена. Еще раз спасибо вам.
ElenaTomsk_
Март 4, 2016 18:09:58
py.user.next
Все есть уже. Есть таблица с предложениями: tbl_template, где собственно предложение.
Есть tbl_template_detail, где оно записано как
id_template id_word
1 1
1 243
1 45
1 243
так же на каждое слово написано какого оно типа, в какую группу и т.п. Я этим два года занимаюсь. Просто не совсем была уверенна, что мне тут помогут, а так готова расписать все заинтересованным лицам по полной, у меня и техническое задание имеется.
FishHook
Март 4, 2016 18:18:06
ElenaTomsk_
Ценю ваш деловой подход, два года - это вам не вату из пупа выковыривать. Каждое слово - в свою группу, каждое предложение - в свою таблицу, написано какого типа - взять и сделать бл@дь!
vic57
Март 4, 2016 21:30:48
я не совсем понимаю, зачем вам веб нужен - лишний тормоз будет
простейший интерфейс к базе данных.
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_())