Составить алгоритм как тебя зовут

Тест

Данные Результат
Имя = «Тимур» «Привет, Тимур!»

Школьный АЯ
алг Знакомство (арг лит Имя, резлит t) 
нач
  вывод «Как тебя зовут ?»
  ввод Имя
  t := «Привет, » + Имя + «!»   | «+» — операция сцепки
  вывод t
кон
 
Turbo Pascal

Program Hello;
Var Name: String;  {Описание переменной Name строкового типа}
BEGIN 
  Write(‘Как тебя зовут ? ‘); {Вывод на экран текста вопроса}
  ReadLn(Name); {Ввод c клавиатуры имени}
  WriteLn(‘Привет, ‘, Name, ‘!’); {Вывод на экран приветствия}
  ReadLn
END.
 
Здесь последний оператор ReadLn позволяет видеть на экране результаты

работы программы, пока не будет нажата клавиша <Enter>.
 
Результаты работы Pascal-программы

 

Как тебя зовут ? Тимур   <Enter>
Привет, Тимур ! 


QBasic
CLS
INPUT «Как тебя зовут ? «, Name$
PRINT «Привет, «; Name$; «!»
END

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая
книга

Рассылка

Благодарности

Об авторе



Пример 1.1.
Простейший алгоритм, запрашивающий имя и
затем приветствующий его обладателя.
  Тест
 

Данные Результат
Имя = «Тимур» «Привет, Тимур!»


  Демонстрация

 Школьный АЯ

алг Знакомство (арг лит Имя, рез лит t) 
нач
  вывод "Как тебя зовут ?"
  ввод Имя
  t := "Привет, " + Имя + "!"    | "+" - операция сцепки
  вывод t
кон


 
Turbo Pascal

Program Hello;
Var Name: String;  {Описание переменной Name строкового типа}
BEGIN 
  Write('Как тебя зовут ? '); {Вывод на экран текста вопроса}
  ReadLn(Name);               {Ввод c клавиатуры имени}
  WriteLn('Привет, ', Name, '!'); {Вывод на экран приветствия}
  ReadLn
END.


Здесь последний оператор ReadLn позволяет
видеть на экране результаты работы
программы, пока не будет нажата клавиша <Enter>.
  Результаты
работы Pascal-программы
 

Как тебя зовут ? Тимур  
<Enter>

Привет, Тимур ! 


 

Размещено 3 года назад по предмету
Информатика
от айдонтнидтохелп

Составьте программу, которая будет сначала спрашивать ваше имя, а
когда вы его введёте, с восклицанием приветствовать вас. Последовательность следующая:
Программа: Как тебя зовут?
Вы: Коля
Программа: Привет, Коля!
Обратите внимание на то, чтобы при выводе приветствия были правильно расставлены пробелы (после запятой — перед именем — есть, а перед восклицательным знаком нет). Каждая реплика должна выводиться/вводиться с новой строки.

  1. Ответ на вопрос

    Ответ на вопрос дан
    SaidR

    Ответ:

    print («Как Вас зовут?»)

    x= input ()

    print («Приветствую вас,»+x+»!»)

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

10 / 10 / 2

Регистрация: 01.02.2010

Сообщений: 317

1

Алгоритм работы чат-бота

14.02.2010, 22:11. Показов 32061. Ответов 53


Студворк — интернет-сервис помощи студентам

Задумал создать чат бота.
Кюрю доки и хотелось юы услышать советы умных людей.
Пока я сдел альфу альфа.
и недоволен результатом совсем.
у меня сейчас только одна таблица. аля
——————
привет | прив/ку/хай | приветствие
как тя звать?/ты кто?| я бот | Знакомство
——————
последний столбец тема разговора.

тоесть поддержка синонимов не более.
читал что мона искать сначала по всех фразе потом по частям фразы…
еще хочется чтоб бот тему держал.
пример юзер сказал слово про компы .бот узнал из базы что слова это относиться к компам и будет говриь про компы с юзером…

но все ранво получается что юзер спршивает — бот отвечате и все…
или может парсить строку на наличие ? еслинет значти юзер чтото сказал — смотрим в бд к каой теме относиться это и спрпшивае юзера чтонить про эту тему или тож фразу говрим.

кактотак)



0



Автор FAQ

3685 / 962 / 114

Регистрация: 10.01.2010

Сообщений: 2,550

14.02.2010, 22:29

2

Эпичная тема, честное слово. Ничего типа искуственного интелекта у вас не получится конечно, но более менее сносного болтуна можно создать… По теме:
Поиск нужно производить по маске, т.е. анализировать строки. Для привета достаточно маски «прив.*» т.е прив и может быть ещё что то дальше.
Ещё интересная идея — допустим боту пишут «Привет! Как дела!» Он анализирует строку и находит соот-ие по «прив.*», но на как дела он не ответит, а можно бы.
Теоретически можно улавливать какую то фразу не по целой фразе а по составу. Допустим если боту говорят ту же «Привет бот как твои дела» то «как дела» уже не сработает, поэтому стоит делать список слов наличие который в фразе дает боту право ответить. Т.е. проверяем по списку и видим что из этого списка 100% слов были найдены (и «как» и «дела») значит нужно «прикрепить» этот ответ к конечной серии ответов. Конечно 100% можно регулировать. Задать порог в 80% например.
Так же стоит ввести «настроение», т.е. сделать фразы которые понижаютповышают настроение, может из за этого он будет выбирать разные фразы.
Насчет поддержки темы разговора — наврятли, это слишком тяжело… надо подумать



1



Эксперт С++

3188 / 869 / 39

Регистрация: 29.12.2008

Сообщений: 952

14.02.2010, 22:34

3

Krist_ALL, посмотри, вот тут я отвечал уже, несколько ссылок полезных нашел. Если цель написать простенького бота, то очень неплохие там алгоритмы приводятся, а, главное, простые для понимания и реализации. Начать с них, а дальше усложнять по возможности.
https://www.cyberforum.ru/deve… post293766



1



10 / 10 / 2

Регистрация: 01.02.2010

Сообщений: 317

14.02.2010, 22:51

 [ТС]

4

Phantom, я уже читал этот ман) Все равно спасибо!.
просто получается что либо человек спрагивает — бот отвечает либо наоборот.
и даже пусть будет мега словарь — всеравно фигня будет.

по поводу поддержки темы….
пример:
Я:я люблю машины.
Бот:какая у тя машинга?
или у меня машина бмв.
тоесть спрашивает или тоже фразу утвердительную говорит.
поэтому и есть колонка тема.
+ можно вести учет того что юзер уже спрашивал и если он снова спросит то сказать ему об этом. а то все боты реагируют тока на повтор прямой тоесть када друг за другом фразы. напримр а а — они говрят типа повтор а 2 раза привет говорю или спрашиваю чтото им пофиг

+ можно еще у юзера спрашивать инфу об нем и помнить . а во время разговора вставлять данные его. напримр узнаем снаачала имя а потом обращаемся по имени и иногда чтоб было человекоподобнее.



0



Автор FAQ

3685 / 962 / 114

Регистрация: 10.01.2010

Сообщений: 2,550

14.02.2010, 23:09

5

ну а в чем проблема? юзер скорее напишет свое имя с Большой буквы, вот его и запишем, к томуже можно подключить словарь имен и пробежаться по совподениям.
насчет повторов введи счетчик, вообще тут конечно надо хранить данные в памяти
а ещё можно учесть такое… если бот раз за разом по какой то логике отвечает одинаково, после какого то раза фраза вообще вылетает…

ps. Идей много можно напридумывать, каждая по своему сложна, код распухнет и будет давать сбои. Тут надо базу основательно продумать а то тяжело будет потом новые «фишки» внедрять



1



Krist_ALL

10 / 10 / 2

Регистрация: 01.02.2010

Сообщений: 317

15.02.2010, 12:32

 [ТС]

6

Вообщем я думаю сделать так:

Человек:привет бот!

SQL
1
SELECT replica FROM dictionary WHERE frase LIKE '%привет бот%'
PHP
1
Полного совпадения нет, пробуем по первому слову
SQL
1
SELECT ...... LIKE %привет%
PHP
1
Ага, наши в бд привет и слово это относиться к теме знакомство. Значит установим тему разговора знакомство

Бот:Приветствую!
Человек:погода хорошая сегодня.

PHP
1
про погоду бот ничего не знает и реплика была утвердительной. тогда бот спрашивает человека вопрос по теме разговора. берем из базы вопрос наприме как тя зовут и говорим человеку

БОт:как тя зовут?

PHP
1
ВОт тут хз как сделать потому что наверно надо будет ввести специальные вопросы, ответы на которые бот  будет помнить во время разговора.

Человек:кристалл

PHP
1
Дальше хз как

Как вам такой алгоритм?

+ незнаю как сделать чтоб когда бот например говорит привет и сразу мог спрасить. напирмер привет. как у тя дела?
вмеет хранить реплику с вопросом как то тупо наверное. вобще сама идея чтоб бот был активном в разговоре а не как остальные боты тока слушать могут и поодакивать типа как интересно! итд.



0



Автор FAQ

3685 / 962 / 114

Регистрация: 10.01.2010

Сообщений: 2,550

15.02.2010, 15:00

7

Так если вопрос идет о PHP тут и нельзя сделать чтобы бот сам реагировал, т.к. само PHP же не может реагировать оно только формирует страницу. Хотя можно с Ajax’ом поработать. С другой стороны вы можете отправлять фразу бота после ответа бота. Забейте базу разных вопросов бота и они имею разный приоритет, допустим приоритет «как тебя зовут?» высокий, т.к. это важная часть беседы, а чтобы бот спросил «какая у тебя машина?» это надо чтобы так выпало (скажем шанс 10%). Опять надо хранить «таблцу пользователя» в которой хранятся кому что бот отвечал (чтобы не задавал повторные вопросы и не отвечал повторно). Так же стоит ввести с десяток фраз которые могут как бы невзначай перевести разговор например «да ладно фиг с ним, давай лучше о погоде?» такие фразы будут использоваться когда бот не знает что сказать. И конечно они тоже не должны повторно вызываться.



1



10 / 10 / 2

Регистрация: 01.02.2010

Сообщений: 317

18.02.2010, 15:32

 [ТС]

8

Еще несколько вопросов..

Как обучать бота?
логи то он будет вести но хзапоминать все что вводит юзер тоже не выход.
или нет фразы в бд и он спрашивает что это такое тоже бред…
и главное бот может поглупеть от запоминания фраз..

и еще такой момент. юзер вводит:
windows — хорошая вещь
бот найдет ‘хорошая вешь’ а о винде забудет.
как отличать самые важные слова во фразе?

и еще
вдруг так полчиться
чел:привет
бот:привет
чел:как тебя зовут?
бот:меня зовут БОТ. какачя хорошая погода.

тоесть вторая фраза не втему совсем.
и что хранить отделбьно вопросы отделбно фразы..както вот не пойму..



0



Автор FAQ

3685 / 962 / 114

Регистрация: 10.01.2010

Сообщений: 2,550

18.02.2010, 15:42

9

Цитата
Сообщение от Krist_ALL
Посмотреть сообщение

Как обучать бота?
логи то он будет вести но хзапоминать все что вводит юзер тоже не выход.

Нужно запоминать фразу а слова из неё (как я писал выше — список слов — и есть фраза) и причем эти слова укорачивать: «ты тупой и глупый бот» -> «ты», «туп*», «и», «глуп*», «бот». В результате реакция будет и на «ты тупое и глупое существо». Ну а в обучении… да, фразу юзера надо будет полностью записывать, а вот то что сказал бот урокачивать по таком принципу как я выше описал. Чтобы не сложилась ситуация когда бот начинат человеку говорить «бот» можно заменять это слово в ответах на «человек» допустим

как отличать самые важные слова во фразе?

«windows — хорошая вещь» — создает связь между «windows» и «хорош*», т.е. мы связываемся по прилагательному



1



10 / 10 / 2

Регистрация: 01.02.2010

Сообщений: 317

18.02.2010, 16:13

 [ТС]

10

«windows — хорошая вещь» — создает связь между «windows» и «хорош*», т.е. мы связываемся по прилагательному

и как же отичать прилагательные?ты так говоришь а как я это накодю — этж нереально отличать слова по части речи.а словарь грузить ппц

ты тупой и глупый бот» -> «ты», «туп*», «и», «глуп*», «бот».

а как узнат у какого слова укарачивать а у какова нет?
предположим мы укарачиваем 2 буквы тогла ‘ты’ совсем укаратится — мона длинну слвоа проверять
например:
человек: ты тупой бот
скрипт:
——————
ты — длинна <= 3(2) не укарачиваем
тупой — длинна норм -> туп*
бот — длинна <=3(2) не укарачиваем
——————
ищем в бд
ты туп% бот — есть
а если
ты тупое существо — нету в бд 100 процентного совпадения
то тогда
ищем по певым 2м словам
ты туп% есть (ты тупой бот)

так?
ты тупое существо



0



Автор FAQ

3685 / 962 / 114

Регистрация: 10.01.2010

Сообщений: 2,550

18.02.2010, 16:28

11

Цитата
Сообщение от Krist_ALL
Посмотреть сообщение

и как же отичать прилагательные?ты так говоришь а как я это накодю — этж нереально отличать слова по части речи.а словарь грузить ппц

Может по окончаниям? «хороший«, «хорошая«, «хорошее«, «красивый«, «красивое«, «красивее«. Несомненно работа с языком задача сложная, однако все поисковые системы укорчивают слова для поиска таким образом и ищут по основам слов (по крайне мере это так выглядит). Короче мб нужно срезать какие то заданные буквы в конце слова, «ий», «ая», «ее», «ый», «ое», «ее» и т.д.



1



10 / 10 / 2

Регистрация: 01.02.2010

Сообщений: 317

18.02.2010, 16:53

 [ТС]

12

А если вот так:
как твои дела?
как у тебя дела?
тут отрезанием окончаний необойжешься..(

+ мона педлоги нах вырезать например у в на

и какая база должна быть?
вопрос — ответ?
твое имя — бот
тебе лет -10

такая?
а как же бот тогдабудет спрашивать чтото у человека при такой структу ре бд?
отдельно ворпсы хранить или как непойму.



0



Автор FAQ

3685 / 962 / 114

Регистрация: 10.01.2010

Сообщений: 2,550

18.02.2010, 16:59

13

Цитата
Сообщение от Krist_ALL
Посмотреть сообщение

тут отрезанием окончаний необойжешься..(

а зачем они тут? все что вы привели попадает под набор { «как», «дела» } просто процен для первой фразы равен 66% а для второй меньше — 50%, составляется список возможных ответов (допустим все фразы — триггеры >= 50% совпадений) и выбирается рандомом

Цитата
Сообщение от Krist_ALL
Посмотреть сообщение

и какая база должна быть?

{ «как», «дела» } = { «нормально», «да поживаю потихоньку», «а тебе какое дело?» }
Вообще это ваше дело… вам проект лучше виднеется чем мне))тут стоит все продумать, а чужие советы по архитектуре приложения только помешают имхо

Цитата
Сообщение от Krist_ALL
Посмотреть сообщение

+ мона педлоги нах вырезать например у в на

Пожалуй да Все равно толку от них не много для бота… хотя… ну тогда когда составляете триггерные списки учтите это и не пишите в БД предлогов



1



10 / 10 / 2

Регистрация: 01.02.2010

Сообщений: 317

18.02.2010, 17:06

 [ТС]

14

а когда тогда окончания отрезать?

мона искать по целой фразе — если false то по все слова -1
или мона искать ‘как’ + ‘твои’ + ‘дела’
или как твои дела, как твои, как тв%
непойму(



0



insideone

Автор FAQ

3685 / 962 / 114

Регистрация: 10.01.2010

Сообщений: 2,550

18.02.2010, 17:16

15

в PHP есть такая фишка

PHP
1
2
3
4
5
6
7
$слова_юзера = explode(" ", $фраза_юзера);
foreach ($слова_юзера as $слово)
{
   // если $слово оказалось предлогом - удалить его
   // тут надо обрезать $слово от лишних символов слева и справа (например запятыхтабуляций)
   // тут надо обрезать окончания слов
}

на выходе получаем массив слов — триггер

Как дальше с БД я что то щас не могу придумать, т.к давно этим не занимался
Но смысл в том что нужно посчитать процент соответствия триггер (массива слов) триггеру из БД
например для фразы
«привет бот» выходной триггер будет { «привет», «бот» }
если в БД есть тригер { «привет» } то процент соответствия будет 50%
а если есть триггер { «привет», «бот» } то 100%
Потом составив список возможных ответов по триггерам из БД можно выбрать максимальное совпадение или рандомно выбрать

ps. PHP тоже давно не трогал, за кривокод не ругать



1



10 / 10 / 2

Регистрация: 01.02.2010

Сообщений: 317

18.02.2010, 18:56

 [ТС]

16

а если юзер ввел типа
какая твоя лбимая книга?
а бо тне знает о своей любимой книге ничего.
что тогда делать?

хочется прост овсе продумать заранее чтобы потом не переделывать большой оьъем работы .



0



Автор FAQ

3685 / 962 / 114

Регистрация: 10.01.2010

Сообщений: 2,550

18.02.2010, 19:04

17

Цитата
Сообщение от Krist_ALL
Посмотреть сообщение

а бо тне знает о своей любимой книге ничего.

{«как*», «твоя», «любим*»} = { «у меня нет любимой %cut%» }
Т.к. в списке есть «как*», «твоя», «любим*» из фразы вырезается выделенное
какая твоя любимая книга
Остается книга, в ответе она заменяется на %cut%

гм… только что делать с окончанием книги, нужно как то заменить «книга» на «книги»
мб так
{«как*», «твоя», «любим*»} = { «у меня нет любимой %cut%и» }
а вырезаться будет из оставшегося слова тоже всякие окончания и т.д.



1



10 / 10 / 2

Регистрация: 01.02.2010

Сообщений: 317

18.02.2010, 19:50

 [ТС]

18

а сам бот будет спрашивать только если в ответной реплике будет вопрос.
еще мона сделать в бд колонку типа.ответ на этов ворпос запомнить и занести втакуюту переменную



0



Автор FAQ

3685 / 962 / 114

Регистрация: 10.01.2010

Сообщений: 2,550

18.02.2010, 20:52

19

Не совсем понял…
Типа
ЮЗЕР: Какая книга тебе больше всего понравилась?
-> Вопрос который бот не знает
-> Ответить вопросом
-> Приготовиться к добавлению в БД новых данных
БОТ: Я пока не решил, а тебе?
ЮЗЕР: Мне понравилась книга «Война и мир»
-> ADD
-> { «как*», «книг*», «теб*», «больше», «всего», «понравил*» } == { «Одна из моих любимых, это — %cut%» }



0



10 / 10 / 2

Регистрация: 01.02.2010

Сообщений: 317

20.02.2010, 20:45

 [ТС]

20

Начал приступать к кодингу.
вопрос: как разделять фразу на слова?
пробел?а если запятая или точка, а может запятая и точка.
человек:привет, бот
как быть?



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

20.02.2010, 20:45

20

Как ввести имя в Python — учимся вводить данные по запросу

Попрактикуемся в решении простых но интересных задач:

  • Узнаем, как ввести имя в Python;
  • Научимся выводить полученное имя на экран;

Как ввести имя в Python

1. Выведем запрос на получение имени

Чтобы пользователь не пребывал в растерянности при виде пустой строки, давайте попросим его ввести имя. Для этого вызовем функцию print(), которой передадим в качестве аргумента нашу просьбу:

print("Привет! Давай знакомиться! Как тебя зовут?")

Python послушно вывел нашу просьбу на экран:

Привет! Давай знакомиться! Как тебя зовут?

2. Реализуем ввод имени

Теперь нам нужно разрешить пользователю вводить данные в программе. Поэтому предлагаю воспользоваться функцией input(). При вызове функции input(), программный поток останавливается до того момента, пока пользователь не введет данные через клавиатуру. Это то, что нам нужно! А чтобы была возможность использовать в дальнейшем полученные от пользователя данные, сразу же после получении имени, сохраним его в какой-нибудь переменной, например, в переменной user_name:

print("Привет! Давай знакомиться! Как тебя зовут?")
user_name = input()

В среде разработки Anaconda результат работы этих двух строк выглядит так:

В вашей среде разработки окно для ввода информации может выглядеть иначе. Например, при работе в консоли, ожидание пользовательского ввода помечено мигающим прямоугольником. Однако, вид строки ввода не так важен, важно то, что программа перешла в режим ожидания ответа от пользователя!

Таким образом, мы справились с заданием и сохранили введенные пользователем данные в переменной user_name. Давайте теперь выведем имя пользователя на экран в контексте диалога:

print("Привет! Давай знакомиться! Как тебя зовут?")
user_name = input()
print("Приятно познакомиться, " +  user_name + "!")

Результат работы кода

Теперь при вводе имени «Великий Программист», на экран выводится строка:

Приятно познакомиться, Великий Программист!

Однако, в этом коде есть маленькая недоработка

Давайте проверим, что произойдет, если не вводить ничего, или же — ввести пробел вместо имени, и нажать «Enter»? В таком случае на экране появится некорректное приветствие:

Приятно познакомиться, ! 

Как это исправить?

Нам нужно добавить проверку на число введенных пользователем символов, предварительно удалив крайние пробелы. То есть нам нужно добавить условие:

Пока длина имени без пробелов будет меньше единицы:
    запрашиваем у пользователя осуществить ввод имени.  

Для этого мы воспользуемся циклом while (который означает «пока..» ), и конструкцией len(user_name.split()), которая возвращает длину строки без пробелов. Подробнее о работе функций split() и len() я расскажу чуть ниже, под кодом. А сейчас переведем сформулированное выше условие на язык Python:

user_name=''
# Пока длина имени без пробелов будет меньше единицы: 
while len(user_name.strip())<1:
    print("Привет! Давай знакомиться! Как тебя зовут?")
    user_name = input()
print("Приятно познакомиться, " +  user_name + "!")

Обратите внимание, что перед циклом while появилось объявление переменной user_name. Так как в цикле нам нужно посчитать длину строки user_name еще до того, как пользователь осуществит ввод, то создадим пустую строку user_name до вызова цикла. Так как длина этой строки равна нулю, то функция print() выведет на экран предложение познакомиться, и у пользователя появится шанс изменить длину user_name.

У нас появился Telegram-канал для изучающих Python! Подписывайтесь по ссылке: «Кодим на Python! Вместе «питонить» веселее! 😉

Подробнее о функциях split() и len():

Функция split() — удаляет пробелы в начале и в конце строки. Вызов функции split() для строки user_name осуществляется следующим образом:

user_name.split()

Функция len() является специалистом по измерению длин в мире Python. Если мы передадим функции len() в качестве аргумента строку, оставшуюся после удаления пробелов, то узнаем длину этой строки:

  # длина строки user_name  len(user_name.split())  

Итоговый код: запрашиваем у пользователя имя и выводим его на экран:

user_name=''
while len(user_name.strip())<1:
    print("Привет! Давай знакомиться! Как тебя зовут?")
    user_name = input()
print("Приятно познакомиться, " +  user_name + "!")

Понравилась статья? Поделить с друзьями:
  • Как джуниору найти работу
  • Как найти третью сторону в тупоугольном треугольнике
  • Как найти потенциальную энергию пружинного маятника
  • Как составить жалоба на соседку
  • Второй закон ньютона как найти время