Взаимодействие: alert, prompt, confirm
Так как мы будем использовать браузер как демо-среду, нам нужно познакомиться с несколькими функциями его интерфейса, а именно: alert , prompt и confirm .
alert
С этой функцией мы уже знакомы. Она показывает сообщение и ждёт, пока пользователь нажмёт кнопку «ОК».
alert("Hello");
Это небольшое окно с сообщением называется модальным окном. Понятие модальное означает, что пользователь не может взаимодействовать с интерфейсом остальной части страницы, нажимать на другие кнопки и т.д. до тех пор, пока взаимодействует с окном. В данном случае – пока не будет нажата кнопка «OK».
prompt
Функция prompt принимает два аргумента:
result = prompt(title, [default]);
Этот код отобразит модальное окно с текстом, полем для ввода текста и кнопками OK/Отмена.
title Текст для отображения в окне. default Необязательный второй параметр, который устанавливает начальное значение в поле для текста в окне.
Квадратные скобки в синтаксисе [. ]
Квадратные скобки вокруг default в описанном выше синтаксисе означают, что параметр факультативный, необязательный.
Пользователь может напечатать что-либо в поле ввода и нажать OK. Введённый текст будет присвоен переменной result . Пользователь также может отменить ввод нажатием на кнопку «Отмена» или нажав на клавишу Esc . В этом случае значением result станет null .
Вызов prompt возвращает текст, указанный в поле для ввода, или null , если ввод отменён пользователем.
let age = prompt('Сколько тебе лет?', 100); alert(`Тебе $ лет!`); // Тебе 100 лет!
Для IE: всегда устанавливайте значение по умолчанию
Второй параметр является необязательным, но если не указать его, то Internet Explorer вставит строку «undefined» в поле для ввода.
Запустите код в Internet Explorer и посмотрите на результат:
let test = prompt("Test");
Чтобы prompt хорошо выглядел в IE, рекомендуется всегда указывать второй параметр:
let test = prompt("Test", ''); //
confirm
result = confirm(question);
Функция confirm отображает модальное окно с текстом вопроса question и двумя кнопками: OK и Отмена.
Результат – true , если нажата кнопка OK. В других случаях – false .
let isBoss = confirm("Ты здесь главный?"); alert( isBoss ); // true, если нажата OK
Итого
Мы рассмотрели 3 функции браузера для взаимодействия с пользователем:
alert показывает сообщение. prompt показывает сообщение и запрашивает ввод текста от пользователя. Возвращает напечатанный в поле ввода текст или null , если была нажата кнопка «Отмена» или Esc с клавиатуры. confirm показывает сообщение и ждёт, пока пользователь нажмёт OK или Отмена. Возвращает true , если нажата OK, и false , если нажата кнопка «Отмена» или Esc с клавиатуры.
Все эти методы являются модальными: останавливают выполнение скриптов и не позволяют пользователю взаимодействовать с остальной частью страницы до тех пор, пока окно не будет закрыто.
На все указанные методы распространяются два ограничения:
- Расположение окон определяется браузером. Обычно окна находятся в центре.
- Визуальное отображение окон зависит от браузера, и мы не можем изменить их вид.
Такова цена простоты. Есть другие способы показать более приятные глазу окна с богатой функциональностью для взаимодействия с пользователем, но если «навороты» не имеют значения, то данные методы работают отлично.
Напишите программу, которая просит пользователя ввести фамилию.
Напишите программу, которая просит пользователя ввести фамилию, имя и год рождения. После чего приветствует пользователя и сообщает ему сколько лет он прожил.
Голосование за лучший ответ
name = input("Ваша фамилия: ")
name1 = input("Ваше имя: ")
name2 = input("Год вашего рождения: ")
print("Ваша фамилия,",name)
print("Ваше имя,",name1)
print("Вы родились,",name2)
Дима ГолубецЗнаток (274) 2 года назад
лучший код, который я видел за эту жизнь
Похожие вопросы
Ваш браузер устарел
Мы постоянно добавляем новый функционал в основной интерфейс проекта. К сожалению, старые браузеры не в состоянии качественно работать с современными программными продуктами. Для корректной работы используйте последние версии браузеров Chrome, Mozilla Firefox, Opera, Microsoft Edge или установите браузер Atom.
Запросить у пользователя его имя и возраст, резюмировать и вывести на экран
Напиши программу, которая запрашивает у пользователя его имя (Антон), запрашивает возраст (27), резюмирует информацию и предлагает дружить.
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Запросить у пользователя имя, фамилию и возраст. После чего вывести: “Здравствуйте [Имя] [Фамилия]”.
Здравствуйте и снова я обращаюсь за помощью задали задание: Написать код на JavaScript который.
Запросить имя пользователя, поздоровается с ним с указанием имени и вывести на экран детскую загадку
Составьте программу, которая запрашивает имя пользователя, здоровается с ним с указанием имени и.
Запросить у пользователя его возраст и определить, к какой возрастной категории он относится
Нужна помощь в построении функции. надо: Запросить у пользователя его возраст и определить, кем.
Запросить фамилию, имя и отчество пользователя, и вывести его фамилию и инициалы
Вот задание:Написать программу, которая запрашивает фамилию, имя и отчество, а выводит фамилию и.
скоро будут просить написать Hello World. 🙁
Меню пользователя @ Vigi |
Просто Лис
5761 / 3553 / 1063
Регистрация: 17.05.2012
Сообщений: 10,400
Записей в блоге: 9
1 2 3 4 5 6
name = input('Введи своё имя: ') print('''Приятно познакомиться, <>! А меня зовут Пинки Пай! Давай дружить! Будет весело-весело-весело. '''.format(name))
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
1 2 3 4 5 6 7 8
def namer(mstr, age): print('привет,' + mstr + str(age) + 'лет' + ',' + 'давай дружить') # ' if __name__ == '__main__': mstr = input("введите имя") age = float(input("возраст")) namer(mstr, age)
Просто Лис
5761 / 3553 / 1063
Регистрация: 17.05.2012
Сообщений: 10,400
Записей в блоге: 9
Сообщение от Dax
mstr + str(age) + 'лет' + ','
Не надо так. Почитай: https://pyformat.info/
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
Рыжий Лис, я знаю,что формат круче, с удовольствием прочту), но, судя по теме, писал лицеист, а это значит:
1) Надо максимально просто, готовое
2) Не объяснять, ибо объяснение осилить надо
3) Язык проходится очень медленно, про format могли и вовсе не рассказать, а за задачу надо)
Вот, обозлился, сделал, чтоб ему стыдно было)
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
1 2 3 4 5 6
name = input('Введи своё имя: ') print(f'Приятно познакомиться, ! ' f'А меня зовут Пинки Пай!' f'Давай дружить!' f'Будет весело-весело-весело. ')
Регистрация: 09.01.2020
Сообщений: 4
С похожей задачей мне помог друже Damenikx, для тебя код будет выгладеть примерно как:
1 2 3
name = input('Привет, как тебя зовут?\n') age = input('Сколько тебе лет?\n') print(f'Значит, тебя зовут и тебе лет. Давай дружить?')
Просто Лис
5761 / 3553 / 1063
Регистрация: 17.05.2012
Сообщений: 10,400
Записей в блоге: 9
Сообщение от Dax
1) Надо максимально просто, готовое
Тогда и без функций можно обойтись И без if __name__ == '__main__':
Регистрация: 09.01.2020
Сообщений: 4
А есть ли вообще возможность использовать format в строке с двумя input? Или только через f-строку?
Просто Лис
5761 / 3553 / 1063
Регистрация: 17.05.2012
Сообщений: 10,400
Записей в блоге: 9
Не понял вопроса, но да, можно.
Регистрация: 09.01.2020
Сообщений: 4
Я имел в виду по сути тот же код:
1 2 3
name = input('Привет, как тебя зовут?\n') age = input('Сколько тебе лет?\n') print(f'Значит, тебя зовут и тебе лет. Давай дружить?')
Но, если не использовать f-строку, то значения
Просто Лис
5761 / 3553 / 1063
Регистрация: 17.05.2012
Сообщений: 10,400
Записей в блоге: 9
print('Значит, тебя зовут и тебе лет. Давай дружить?'.format(name=name, age=age))
print('Значит, тебя зовут <> и тебе <> лет. Давай дружить?'.format(name, age))
print('Значит, тебя зовут %s и тебе %d лет. Давай дружить?' % (name, age))
Am I evil? Yes, I am!
17594 / 10343 / 2826
Регистрация: 21.10.2017
Сообщений: 22,418
И тут становится всё колом. © Ш.Каретный
print(f'Значит, тебя зовут и тебе лет. Давай дружить?')
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Запросить у пользователя ввести возраст и вывести сообщение в зависимости от ответа
Необходимо запросить у пользователя ввести возраст (метод prompt()). Вызывать функцию, которая.
Запросить у пользователя его имя и сохранить в файле
Пытаюсь написать код к задаче: Напишите программу, которая запрашивает у пользователя его имя.
Спросить у пользователя его имя и вывести на экран
нужно написать программу которая будем спрашивать у пользователью его имя и выводить на экран
Запросить имя человека и вывести на экран это имя с приветствием
Нужно написать код на языке C# Тема: Обработка строк в Microsoft Visual Studio в WFA Составьте.
Запросить у пользователя имя, фамилию, а затем вывести строку вида "фамилия, имя"
С. Прата, "Язык программирования С++", 4 глава, задача 3. Напишите программу, которая запрашивает.
Спросить имя пользователя и вывести его на экран P раз,указывая порядковый номер вывода
Спросить имя пользователя и вывести его на экран P раз,указывая порядковый номер вывода
Или воспользуйтесь поиском по форуму:
Простой Telegram-бот на Python за 30 минут
На Хабре, да и не только, про ботов рассказано уже так много, что даже слишком. Но заинтересовавшись пару недель назад данной темой, найти нормальный материал у меня так и не вышло: все статьи были либо для совсем чайников и ограничивались отправкой сообщения в ответ на сообщение пользователя, либо были неактуальны. Это и подтолкнуло меня на написание статьи, которая бы объяснила такому же новичку, как я, как написать и запустить более-менее осмысленного бота (с возможностью расширения функциональности).
Часть 1: Регистрация бота
Самая простая и описанная часть. Очень коротко: нужно найти бота @BotFather, написать ему /start, или /newbot, заполнить поля, которые он спросит (название бота и его короткое имя), и получить сообщение с токеном бота и ссылкой на документацию. Токен нужно сохранить, желательно надёжно, так как это единственный ключ для авторизации бота и взаимодействия с ним.
Часть 2: Подготовка к написанию кода
Как уже было сказано в заголовке, писать бота мы будем на Python'е. В данной статье будет описана работа с библиотекой PyTelegramBotAPI (Telebot). Если у вас не установлен Python, то сперва нужно сделать это: в терминале Linux нужно ввести
sudo apt-get install python python-pip
Если же вы пользуетесь Windows, то нужно скачать Python с официального сайта .
После, в терминале Linux, или командной строке Windows вводим
pip install pytelegrambotapi
Теперь все готово для написания кода.
Часть 3: Получаем сообщения и говорим «Привет»
Небольшое отступление. Телеграмм умеет сообщать боту о действиях пользователя двумя способами: через ответ на запрос сервера (Long Poll), и через Webhook, когда сервер Телеграмма сам присылает сообщение о том, что кто-то написал боту. Второй способ явно выглядит лучше, но требует выделенного IP-адреса, и установленного SSL на сервере. В этой статье я хочу рассказать о написании бота, а не настройке сервера, поэтому пользоваться мы будем Long Poll'ом.
Открывайте ваш любимый текстовый редактор, и давайте писать код бота!
Первое, что нужно сделать это импортировать нашу библиотеку и подключить токен бота:
import telebot; bot = telebot.TeleBot('%ваш токен%');
Теперь объявим метод для получения текстовых сообщений:
@bot.message_handler(content_types=['text']) def get_text_messages(message):
В этом участке кода мы объявили слушателя для текстовых сообщений и метод их обработки. Поле content_types может принимать разные значения, и не только одно, например
@bot.message_handler(content_types=['text', 'document', 'audio'])
Будет реагировать на текстовые сообщения, документы и аудио. Более подробно можно почитать в официальной документации
Теперь добавим в наш метод немного функционала: если пользователь напишет нам «Привет», то скажем ему «Привет, чем я могу помочь?», а если нам напишут команду «/help», то скажем пользователю написать «Привет»:
if message.text == "Привет": bot.send_message(message.from_user.id, "Привет, чем я могу тебе помочь?") elif message.text == "/help": bot.send_message(message.from_user.id, "Напиши привет") else: bot.send_message(message.from_user.id, "Я тебя не понимаю. Напиши /help.")
Данный участок кода не требует комментариев, как мне кажется. Теперь нужно добавить в наш код только одну строчку (вне всех методов).
bot.polling(none_stop=True, interval=0)
Теперь наш бот будет постоянно спрашивать у сервера Телеграмма «Мне кто-нибудь написал?», и если мы напишем нашему боту, то Телеграмм передаст ему наше сообщение. Сохраняем весь файл, и пишем в консоли
python bot.py
Где bot.py – имя нашего файла.
Теперь можно написать боту и посмотреть на результат:
Часть 4: Кнопки и ветки сообщений
Отправлять сообщения это несомненно весело, но ещё веселее вести с пользователем диалог: задавать ему вопросы и получать на них ответы. Допустим, теперь наш бот будет спрашивать у пользователя по очереди его имя, фамилию и возраст. Для этого мы будем использовать метод register_next_step_handler бота:
name = ''; surname = ''; age = 0; @bot.message_handler(content_types=['text']) def start(message): if message.text == '/reg': bot.send_message(message.from_user.id, "Как тебя зовут?"); bot.register_next_step_handler(message, get_name); #следующий шаг – функция get_name else: bot.send_message(message.from_user.id, 'Напиши /reg'); def get_name(message): #получаем фамилию global name; name = message.text; bot.send_message(message.from_user.id, 'Какая у тебя фамилия?'); bot.register_next_step_handler(message, get_surnme); def get_surname(message): global surname; surname = message.text; bot.send_message('Сколько тебе лет?'); bot.register_next_step_handler(message, get_age); def get_age(message): global age; while age == 0: #проверяем что возраст изменился try: age = int(message.text) #проверяем, что возраст введен корректно except Exception: bot.send_message(message.from_user.id, 'Цифрами, пожалуйста'); bot.send_message(message.from_user.id, 'Тебе '+str(age)+' лет, тебя зовут '+name+' '+surname+'?')
И так, данные пользователя мы записали. В этом примере показан очень упрощённый пример, по хорошему, хранить промежуточные данные и состояния пользователя нужно в БД, но мы сегодня работаем с ботом, а не с базами данных. Последний штрих – запросим у пользователей подтверждение того, что все введено верно, да не просто так, а с кнопками! Для этого немного отредактируем код метода get_age
def get_age(message): global age; while age == 0: #проверяем что возраст изменился try: age = int(message.text) #проверяем, что возраст введен корректно except Exception: bot.send_message(message.from_user.id, 'Цифрами, пожалуйста'); keyboard = types.InlineKeyboardMarkup(); #наша клавиатура key_yes = types.InlineKeyboardButton(text='Да', callback_data='yes'); #кнопка «Да» keyboard.add(key_yes); #добавляем кнопку в клавиатуру key_no= types.InlineKeyboardButton(text='Нет', callback_data='no'); keyboard.add(key_no); question = 'Тебе '+str(age)+' лет, тебя зовут '+name+' '+surname+'?'; bot.send_message(message.from_user.id, text=question, reply_markup=keyboard)
И теперь наш бот отправляет клавиатуру, но если на нее нажать, то ничего не произойдёт. Потому что мы не написали метод-обработчик. Давайте напишем:
@bot.callback_query_handler(func=lambda call: True) def callback_worker(call): if call.data == "yes": #call.data это callback_data, которую мы указали при объявлении кнопки . #код сохранения данных, или их обработки bot.send_message(call.message.chat.id, 'Запомню : )'); elif call.data == "no": . #переспрашиваем
Остаётся только дописать в начало файла одну строку:
from telebot import types
Вот и всё, сохраняем и запускаем нашего бота: