Python, как второй язык программирования

(Различия между версиями)
Перейти к: навигация, поиск
(Как писать telegram-bot (17.02.2021))
Строка 228: Строка 228:
 
<li> Сделать себе токен, пообщавшись в Botfather. И никому его не показывать.<br>
 
<li> Сделать себе токен, пообщавшись в Botfather. И никому его не показывать.<br>
 
<li> Написать бота, который только стартует. Можно поменять строку приветствия, это хотите.
 
<li> Написать бота, который только стартует. Можно поменять строку приветствия, это хотите.
 +
 +
=== Пример минимального бота и обработка URL-запросов (24.02.2021) ===
 +
 +
<source lang="python">
 +
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
 +
# import logging
 +
 +
 +
def start(update, context):
 +
    context.bot.send_message(chat_id=update.effective_chat.id, text="I'm a bot, please talk to me!")
 +
 +
 +
def help_(update, context):
 +
    msg = '''This simple bot written just to check the basic environment'''
 +
    context.bot.send_message(chat_id=update.effective_chat.id, text=msg)
 +
 +
 +
def test_(update, context):
 +
    msg = '''test message'''
 +
    context.bot.send_message(chat_id=update.effective_chat.id, text=msg)
 +
 +
 +
def unknown(update, context):
 +
    context.bot.send_message(chat_id=update.effective_chat.id, text="Sorry, I didn't understand that command.")
 +
 +
# тут вместо многоточия надо вставить ваш токен, который вы получили, пообщавшись с FatherBot
 +
updater = Updater(token='...', use_context=True)
 +
 +
dispatcher = updater.dispatcher
 +
 +
start_handler = CommandHandler('start', start)
 +
dispatcher.add_handler(start_handler)
 +
 +
help_handler = CommandHandler('help', help_)
 +
dispatcher.add_handler(help_handler)
 +
 +
test_handler = CommandHandler('test', test_)
 +
dispatcher.add_handler(test_handler)
 +
 +
unknown_handler = MessageHandler(Filters.command, unknown)
 +
dispatcher.add_handler(unknown_handler)
 +
 +
updater.start_polling()
 +
 +
</source>
 +
 +
 +
<source lang="python">
 +
 +
import urllib.request
 +
 +
url = "https://ocw.mit.edu/courses/most-visited-courses/"
 +
response = urllib.request.urlopen(url)
 +
x = response.read().decode().split('\n')[:20]
 +
print(x)
 +
 +
</source>

Версия 17:18, 24 февраля 2021

Содержание

Здесь будут необходимые ссылки (установка, настройка, книжки)

Где брать инсталлятор Python
Официальная документация Python3
Справочник по Python3
Среда программирования на Python
Вердикты тестирующей системы и их описание
Python: стандартный PEP-8 (Python Enhancement Proposal) официальная страница (англ.), один из урезанных переводов, если англ. совсем никак


Сдать тренировочные задачи

Тема Ссылка для входа Критерии оценивания и замечания


Целочисленная арифметика Вход в тестирующую систему (контест 203) любые 7 задач
Условия Вход в тестирующую систему (контест 204) любые 7 задач
Цикл for Вход в тестирующую систему (контест 205) любые 7 задач
Цикл while Вход в тестирующую систему (контест 206) любые 7 задач
Строки, срезы и некоторые методы работы со строками Вход в тестирующую систему (контест 207) любые 7 задач
Строки и циклы Вход в тестирующую систему (контест 208) любые 7 задач
Массивы Вход в тестирующую систему (контест 209) любые 7 задач
Функции и рекурсия Вход в тестирующую систему (контест 210) любые 7 задач
Множества Вход в тестирующую систему (контест 211) любые 7 задач
Словари Вход в тестирующую систему (контест 212) любые 7 задач
Файлы Вход в тестирующую систему (контест 213) любые 7 задач

Материалы некоторых занятий

Начало — бегло про python (27.01.2021)

a = 34
b = 5
print(a + b, a - b, a * b, a // b, a / b, a % b, a ** b)

a = 15.8
b = 3.7
print(a // b, a % b)

a = int(input())
b = int(input())
print(f'a = {a}, b = {b}, a + b = {a + b:10}')

a = True
b = False

x = int(input())
d = 2
while d * d <= x:
    if x % d == 0:
        print('composite')
        break
    d += 1
else:
    print('prime')

for k in range(5):
    print(k, end = ' ')
    # print('Hello!')

print()

s = "dlkjh gqerg!$"
for ch in s:
    print(ch.upper(), end = ' ')

s = "Ax" * 0
print(s)

s = 'R'
print(ord(s), chr(109))

s1 = input()
s2 = input()
print(s1 > s2)
s[0] = '4'   # так нельзя

t = list()
x = []
x = [4444, 3, 4, 5, 99]
print(x)
a = x.pop()
print(a, x)
x.append(3546)
print(x)
x.sort()
print(x)

t = tuple()
x = (4, 5, 6, 7)
y = (67, )

x = set()
x = {4, 6, 2, 5, 8, 9}
for elem in x:
    print(elem)
print(x)

mutable
immutable
d = {'Vova': 5, 'Anya': 5, 'Roma': 2}
print(d)
d['Vova'] = 4
print(d)
d['Masha'] = 4
print(d)
print(d['Vasya'])


name = input()
surname = input()
print(name + ' ' + surname)

def factorial(n):
    if n <= 1:
        return 1
    return n * factorial(n - 1)

print(factorial(0))

Работа с файлами (10.02.2021)

# читаем файл целиком (в строку)
with open('input_data.in') as f_in, open('input_data.copy', 'w') as f_out:
    # f_out.write(f_in.read())
    print(f_in.read(), file=f_out)


# читаем файл целиком (в массив строк)
with open('input_data.in') as f_in, open('input_data.copy', 'w') as f_out:
    x = f_in.readlines()
    print(x)
    for line in f_in.readlines():
        print(sum(map(int, line.split())), file=f_out)

# читаем файл построчно — 1 вариант
with open('input_data.in') as f_in, open('input_data.copy', 'w') as f_out:
    for line in f_in:
        print(sum(map(int, line.split())), file=f_out)

# читаем файл построчно — 2 вариант
with open('input_data.in') as f_in:
    line = f_in.readline()
    line_num = 1
    s = sum(map(int, line.split()))
    print(s, line_num)
    while line != '' and s < 4000:
        line_num += 1
        s += sum(map(int, line.split()))
        print(s, line_num)
        line = f_in.readline()

# читаем файл посимвольно
char_2_search = input()
with open('pg5396.txt') as f_in:
    found = False
    ch = f_in.read(2)
    while ch != '':
        if ch == char_2_search:
            found = True
            break
        ch = f_in.read(1)

print('YES' if found else 'NO')

# последовательно читаем разными методами
with open('partly_read.txt') as f_in:
    s = f_in.read(5)
    # print(f_in.readline())
    # for row in f_in:
    #     print(row)
    #     break
    print(f_in.readlines())
    # print(f_in.read())

Как писать telegram-bot (17.02.2021)

Документация telegram — что такое bot, как он устроен и что нужно сделать, чтобы его написать
API для написания telegram-bot на Python (telegram.ext)
Домашка:

  • Сделать себе токен, пообщавшись в Botfather. И никому его не показывать.
  • Написать бота, который только стартует. Можно поменять строку приветствия, это хотите.

    Пример минимального бота и обработка URL-запросов (24.02.2021)

    from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
    # import logging


    def start(update, context):
        context.bot.send_message(chat_id=update.effective_chat.id, text="I'm a bot, please talk to me!")


    def help_(update, context):
        msg = '''This simple bot written just to check the basic environment'''
        context.bot.send_message(chat_id=update.effective_chat.id, text=msg)


    def test_(update, context):
        msg = '''test message'''
        context.bot.send_message(chat_id=update.effective_chat.id, text=msg)


    def unknown(update, context):
        context.bot.send_message(chat_id=update.effective_chat.id, text="Sorry, I didn't understand that command.")

    # тут вместо многоточия надо вставить ваш токен, который вы получили, пообщавшись с FatherBot
    updater = Updater(token='...', use_context=True)

    dispatcher = updater.dispatcher

    start_handler = CommandHandler('start', start)
    dispatcher.add_handler(start_handler)

    help_handler = CommandHandler('help', help_)
    dispatcher.add_handler(help_handler)

    test_handler = CommandHandler('test', test_)
    dispatcher.add_handler(test_handler)

    unknown_handler = MessageHandler(Filters.command, unknown)
    dispatcher.add_handler(unknown_handler)

    updater.start_polling()


    import urllib.request

    url = "https://ocw.mit.edu/courses/most-visited-courses/"
    response = urllib.request.urlopen(url)
    x = response.read().decode().split('\n')[:20]
    print(x)
Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты