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

Материал из PTHSWiki
Перейти к: навигация, поиск

Содержание

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

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



Уважаемые коллеги, мы остаёмся в онлайне.

31 марта — онлайн-занятие в обычное время, 16:30.


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

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


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


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

Начало — бегло про 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)

    Находим скрытый текст (10.03.2021)

    Вам дан текст (text.txt), который был написан одним писателем вскоре после Великой Отечественной войны. Обстоятельства написания книги были довольно сложные, даже драматические. Дело в том, что книгу заставил его написать рецидивист, чтобы присвоить книгу себе. Автору пришлось скрыть в тексте книги один "секрет", чтобы потом доказать, что именно он её написал.

    Секрет устроен так: начиная с какого-то места в этом тексте надо смотреть на первые буквы каждого N-го слова. Число N при этом нам неизвестно. Если угадать место и число N, то всё получится.

    Для справки вам дан словарь слов русского языка, в котором есть все те слова (all_words.txt), которые содержатся в секретном послании писателя.

    Текст книги Словарик с большим количеством слов, для справки.


    Обрабатываем изображения (numpy, PIL) 31.03.2021

    Чтобы работали все примеры, надо, чтобы были установлены следующие библиотеки: numpy, pillow, scikit-image, matplotlib.

    Ниже приведены ссылки на программы, с которыми можно немного поиграться. Тут же есть и изображение, но можете использовать любое своё.

    Подумайте, как сделать зеркало относительно горизонтальной оси (поменять верх/низ). Если непонятно, найдите и почитайте документацию на метод, который использован в коде.

    В другом файле показывается, как можно работать с отдельными каналами (выкинуть красный, например).

    Зеркало Убираем красный

    Картинка


    Более сложные примеры: нормализация изображения (правим экспозицию) и баланс белого.

    Экспозиция Баланс белого

    Экспозиция, тест картинка 1

    Экспозиция, тест картинка 2


    Баланс белого, тест картинка 1

    Баланс белого, тест картинка 2
Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты