«Программирование на Python: от начала к практике» Глава 10 Файлы и исключения
10-й файл и исключение
10-1 Примечания по изучению Python
Создайте новый файл в текстовом редакторе и напишите несколько предложений, чтобы обобщить знания Python, которые вы изучили до сих пор. Каждая строка начинается с «В Python вы можете». Назовите этот файл learning_python.txt и сохраните его в том же каталоге, что и программа, написанная для выполнения упражнений в этой главе. Напишите программу, которая читает этот файл и печатает то, что вы написали три раза: прочитать файл целиком при первой печати, обойти файловый объект для второй печати, сохранить строки в списке при печати в третий раз. , А затем распечатать их вне с блоком кода.
In python you can manipulate lists, dictionaries. In python you can create functions, classes. In python you can loop and test the code.
filename = ‘learning_python.txt’ with open(filename) as object: file = object.read() print(file) with open(filename) as object: for file in object: print(file) with open(filename) as object: files = object.readlines() for line in files: print(line.rstrip())
10-2 C для изучения языка
Пишем программу на python для вычета вашего возраста
Вы можете использовать метод replace () для замены определенного слова в строке другим словом. Вот простой пример, который демонстрирует, как заменить «собаку» на «кошку» в предложении:
>>> message = «I really like dogs.» >>> message.replace(‘dog’, ‘cat’) ‘I really like cats.’
Прочитайте каждую строку в файле learning_python.txt, который вы только что создали, и замените в нем Python именем другого языка, например C. Распечатайте измененные строки на экране.
filename = ‘learning_python.txt’ with open(filename) as object: file = object.read() file = file.replace(‘python’, ‘c’) print(file.rstrip())
10-3 посетителей
Напишите программу, которая предлагает пользователю ввести свое имя, после того как пользователь ответит, запишите его имя в файл guest.txt.
filename = ‘guest.txt’ x = input(«Please enter user name: «) with open(filename, ‘w’) as file_object: file_object.write(x.title())
10-4 Список посетителей
Напишите цикл while, который предлагает пользователю ввести его имя. После того, как пользователь вводит свое имя, на экране печатается приветствие, и запись о доступе добавляется в файл guest_book.txt. Убедитесь, что каждая запись в этом файле находится на отдельной строке.
filename = ‘guest_book.txt’ while True: x = input(«Please enter user name: «) print(«Hello, » + x.title()) with open(filename, ‘a’) as file_object: file_object.write(x.title() + » has visited.n»)
10-5 Опрос по программированию
Напишите цикл while, чтобы спросить пользователей, почему им нравится программирование. Каждый раз, когда пользователь вводит причину, он добавляется в файл, в котором хранятся все причины.
Учим python за 7 часов! Уроки Python Полный курс обучения программированию на python с нуля
filename = ‘reason.txt’ while True: x = input(«Why do you like programing?») with open(filename, ‘a’) as file_object: file_object.write(x.title() + «n»)
10-6 Дополнение
Когда пользователь предлагает ввести числовой ввод, часто возникает проблема, заключающаяся в том, что пользователь предоставляет текст, а не цифры. В этом случае при попытке преобразовать входные данные в целое число выдается исключение TypeError. Напишите программу, которая предлагает пользователю ввести два числа, затем добавить их и распечатать результат. Исключение TypeError перехватывается, когда любое введенное пользователем значение не является числом, и выводится понятное сообщение об ошибке. Протестируйте программу, которую вы написали: сначала введите два числа, затем введите текст вместо цифр.
while True: print(«nPlease enter two numbers and the machine will calculate their sum.») print(«Enter ‘q’ to quit.») try: first_number = input(«Please enter the first number: «) if first_number == ‘q’: break first = int(first_number) second_number = input(«Please enter the second number: «) if second_number == ‘q’: break second = int(second_number) except ValueError: print(«nPlease enter a numeric type.n») else: answer = first + second print(answer)
10-7 Калькулятор сложения
Поместите код, который вы написали, чтобы выполнить упражнение 10-6 в цикле while, позволяя пользователю продолжать вводить цифры после ошибок (ввод текста вместо цифр).
while True: print(«nPlease enter two numbers and the machine will calculate their sum.») print(«Enter ‘q’ to quit.») try: first_number = input(«Please enter the first number: «) if first_number == ‘q’: break first = int(first_number) second_number = input(«Please enter the second number: «) if second_number == ‘q’: break second = int(second_number) except ValueError: print(«nPlease enter a numeric type.n») else: answer = first + second print(answer)
10-8 кошек и собак
Создайте два файла cats.txt и dogs.txt, сохраните имена как минимум трех кошек в первом файле и сохраните имена как минимум трех собак во втором файле. Напишите программу, которая пытается прочитать эти файлы и распечатать их содержимое на экране. Поместите эти коды в блок кода исключения, чтобы поймать ошибки FileNotFound, когда файл не существует, и распечатать дружеское сообщение. Переместите один из файлов в другое место и убедитесь, что код в блоке кроме кода будет выполняться правильно.
filename1 = ‘cat.txt’ filename2 = ‘dog.txt’ try: with open(filename1) as f1_object: f1 = f1_object.read() with open(filename2) as f2_object: f2 = f2_object.read() except FileNotFoundError: print(«Not aligned, the file does not exist.») else: print(f1) print(f2)
10-9 Тихие кошки и собаки
Измените то, что вы написали в упражнении 10-8 except Блоки кода, которые позволяют программе ничего не говорить, когда файл не существует.
filename1 = ‘cat.txt’ filename2 = ‘dog.txt’ try: with open(filename1) as f1_object: f1 = f1_object.read() with open(filename2) as f2_object: f2 = f2_object.read() except FileNotFoundError: pass else: print(f1) print(f2)
10-10 общих слов
Посетить проект Гутенберг (http://gutenberg.org/ ) И найдите книги, которые хотите проанализировать. Загрузите текстовые файлы этих работ или скопируйте оригинальный текст в браузере в текстовый файл.
Вы можете использовать метод count (), чтобы определить, сколько раз конкретное слово или фраза появляются в строке.
Обратите внимание, что с помощью lower () для преобразования строки в нижний регистр вы можете перехватывать все вхождения слова, которое хотите найти, независимо от его регистра.
Напишите программу, которая читает файлы, полученные вами в проекте Gutenberg, и подсчитывает, сколько раз слово «the» встречается в каждом файле.
filename = ‘book.txt’ with open(filename) as file_object: contents = file_object.read() numbers = contents.lower().count(‘the’) print(str(numbers))
10-11 любимый номер
Напишите программу, которая предлагает пользователю ввести номер, который ему нравится, и использует json.dump () для сохранения номера в файле. Напишите другую программу для считывания этого значения из файла и распечатайте сообщение «Я знаю ваш любимый номер! Это _____».
import json filename = ‘numbers.json’ def get_num(): numbers = input(«What is your favorite number?») with open(filename, ‘w’) as f_obj: json.dump(numbers, f_obj) def set_num(): with open(filename) as f_obj: user = json.load(f_obj) print(«I know your favorite numbers! It’s » + user + «.») get_num() set_num()
10-12 Запомни число, которое тебе нравится
Объедините две процедуры в Упражнениях 10-11 в одну. Если число, которое нравится пользователю, сохраняется, отобразите его для пользователя, в противном случае пользователю предлагается ввести номер, который он любит, и сохранить его в файле. Запустите эту программу дважды, чтобы увидеть, работает ли она должным образом.
import json filename = ‘numbers.json’ def get_num(): numbers = input(«What is your favorite number?») with open(filename, ‘w’) as f_obj: json.dump(numbers, f_obj) def set_num(): with open(filename) as f_obj: user = json.load(f_obj) if user: print(«I know your favorite numbers! It’s » + user + «.») else: get_num() get_num() set_num()
10-13 проверять подлинность пользователей
Последняя версия Remember_me.py предполагает, что пользователь либо ввел свое имя пользователя, либо запускает программу в первый раз. Мы должны изменить эту программу, чтобы справиться с ситуацией, когда текущий и последний пользователь, который запускает программу, не тот же человек.
По этой причине перед печатью сообщения, приветствующего пользователя в greet_user (), спросите его, правильно ли его имя пользователя. Если это не правильно, вызовите get_new_username (), чтобы позволить пользователю ввести правильное имя пользователя.
import json def get_stored_username(): «» «Если имя пользователя сохранено, получите его» «» filename = ‘username.json’ try: with open(filename) as f_obj: username = json.load(f_obj) except FileNotFoundError: return None else: return username def get_new_username(): «» «Предложите пользователю ввести имя пользователя» «» username = input(«What is your name?») filename = ‘username.json’ with open(filename, ‘w’) as f_obj: json.dump(username, f_obj) return username def greet_user(): «» «Приветствие пользователя и указание его имени, вопрос о том, сам ли он, или повторное ввод имени пользователя» «» username = get_stored_username() if username: answer = input(«Is this your username?(y/n)n» + username + «n») if answer == «y»: print(«Welcome back, » + username + «!») else: username = get_new_username() print(«Welcome back, » + username + «!») else: username = get_new_username() print(«We’ll remember you when you come back, » + username + «!»)
Источник: russianblogs.com
Программа которая спрашивает имя пользователя и здоровается с ним python
Напишите программу, которая приветствует пользователя, выводя слово Hello , введенное имя и знаки препинания по образцу:
Во всех задачах считывайте входные данные через input() и выводите ответ через print() .
Войти или зарегистрироваться, чтобы отправлять решения на проверку
Тесты
Harry
Hello, Harry!
Mr. Potter
Hello, Mr. Potter!
Lord Voldemort
Hello, Lord Voldemort!
Разработка и поддержка учебника: Виталий Павленко, Владимир Соломатин (2014), команда Pythontutor (2016)
Автор первоначального текста большинства уроков, задач и тестов: Д. П. Кириенко (см. оригинальный курс)
Идея учебника: В. М. Гуровиц
Разработчик визуализатора: Philip Guo (см. сайт визуализатора)
Родилось в 2012
Источник: pythontutor.ru
Простой Telegram-бот на Python за 30 минут
На Хабре, да и не только, про ботов рассказано уже так много, что даже слишком. Но заинтересовавшись пару недель назад данной темой, найти нормальный материал у меня так и не вышло: все статьи были либо для совсем чайников и ограничивались отправкой сообщения в ответ на сообщение пользователя, либо были неактуальны. Это и подтолкнуло меня на написание статьи, которая бы объяснила такому же новичку, как я, как написать и запустить более-менее осмысленного бота (с возможностью расширения функциональности).
Часть 1: Регистрация бота
Часть 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(‘%ваш токен%’);
Теперь объявим метод для получения текстовых сообщений:
В этом участке кода мы объявили слушателя для текстовых сообщений и метод их обработки. Поле content_types может принимать разные значения, и не только одно, например
Будет реагировать на текстовые сообщения, документы и аудио. Более подробно можно почитать в официальной документации
Теперь добавим в наш метод немного функционала: если пользователь напишет нам «Привет», то скажем ему «Привет, чем я могу помочь?», а если нам напишут команду «/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.»)