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

Материал из PTHSWiki
(Различия между версиями)
Перейти к: навигация, поиск
(Находим скрытый текст (10.03.2021))
 
(не показаны 34 промежуточные версии 1 участника)
Строка 63: Строка 63:
 
|-
 
|-
 
| [http://prog.school.ioffe.ru/python_as_2nd/12-files.pdf Файлы] || [https://prog.school.ioffe.ru/cgi-bin/new-client?contest_id=213 Вход в тестирующую систему (контест 213)] || любые 7 задач
 
| [http://prog.school.ioffe.ru/python_as_2nd/12-files.pdf Файлы] || [https://prog.school.ioffe.ru/cgi-bin/new-client?contest_id=213 Вход в тестирующую систему (контест 213)] || любые 7 задач
 +
 +
|-
 +
| [http://prog.school.ioffe.ru/python_as_2nd/13-numpy.pdf Numpy] || [https://prog.school.ioffe.ru/cgi-bin/new-client?contest_id=214 Вход в тестирующую систему (контест 214)] || Решите штук 10 первых задач и смотрите в конец листка на задачи с изображениями.
 +
  
 
|}
 
|}
Строка 285: Строка 289:
  
 
</source>
 
</source>
 +
 +
=== Находим скрытый текст (10.03.2021) ===
 +
 +
Вам дан текст (text.txt), который был написан одним писателем вскоре после Великой Отечественной войны. Обстоятельства написания книги были довольно сложные, даже драматические. Дело в том, что книгу заставил его написать рецидивист, чтобы затем присвоить авторство книги себе. Автору пришлось скрыть в тексте книги один "секрет", чтобы потом доказать, что именно он её написал.
 +
 +
Секрет устроен так: начиная с какого-то места в этом тексте надо смотреть на первые буквы каждого N-го слова. Число N при этом нам неизвестно. Если угадать место и число N, то всё получится.
 +
 +
Вам дан словарь слов русского языка, в котором есть все те слова (all_words.txt), которые содержатся в секретном послании писателя.
 +
 +
[http://prog.school.ioffe.ru/python_as_2nd/text.txt Текст книги]
 +
[http://prog.school.ioffe.ru/python_as_2nd/all_words.txt Словарик с большим количеством слов, для справки.]
 +
 +
=== Обрабатываем изображения (numpy, PIL) 31.03.2021 ===
 +
 +
Чтобы работали все примеры, надо, чтобы были установлены следующие библиотеки: numpy, pillow, scikit-image, matplotlib.
 +
 +
Ниже приведены ссылки на программы, с которыми можно немного поиграться. Тут же есть и изображение, но можете использовать любое своё.
 +
 +
Подумайте, как сделать зеркало относительно горизонтальной оси (поменять верх/низ). Если непонятно, найдите и почитайте документацию на метод, который использован в коде.
 +
 +
В другом файле показывается, как можно работать с отдельными каналами (выкинуть красный, например).
 +
 +
[http://prog.school.ioffe.ru/python_as_2nd/mirror.py Зеркало]
 +
[http://prog.school.ioffe.ru/python_as_2nd/remove_red.py Убираем красный]
 +
 +
[http://prog.school.ioffe.ru/python_as_2nd/test_img.jpg Картинка]
 +
 +
 +
Более сложные примеры: нормализация изображения (правим экспозицию) и баланс белого.
 +
 +
[http://prog.school.ioffe.ru/python_as_2nd/img_process/normalize.py Экспозиция]
 +
[http://prog.school.ioffe.ru/python_as_2nd/img_process/while_bal.py Баланс белого]
 +
 +
[http://prog.school.ioffe.ru/python_as_2nd/img_process/c1.jpg Экспозиция, тест картинка 1]
 +
 +
[http://prog.school.ioffe.ru/python_as_2nd/img_process/c2.jpg Экспозиция, тест картинка 2]
 +
 +
 +
[http://prog.school.ioffe.ru/python_as_2nd/img_process/d1.jpg Баланс белого, тест картинка 1]
 +
 +
[http://prog.school.ioffe.ru/python_as_2nd/img_process/d2.jpg Баланс белого, тест картинка 2]
 +
 +
=== Ещё про изображения — размытие (14.04.2021) ===
 +
 +
[http://prog.school.ioffe.ru/python_as_2nd/img_process/blurring.py Размытие (простой алгоритм &mdash; усреднение по соседям)]
 +
 +
[http://prog.school.ioffe.ru/python_as_2nd/img_process/nat_pic.jpg Тестовая картинка]
 +
 +
=== Работа с API (urllib.request, JSON, Pandas) (14.04.2021) ===
 +
 +
[http://prog.school.ioffe.ru/python_as_2nd/api/earthquakes.py Сбор статистики землетрясений]
 +
 +
=== Классы и модули в Python (28.04.2021) ===
 +
 +
Наверное, ничего лучше, чем чтение [https://docs.python.org/3/tutorial/modules.html Python tutorial] я не могу посоветовать. Для начала — ровно то, что нужно.
 +
 +
[http://prog.school.ioffe.ru/python_as_2nd/fraction_example.py Пример] описания класса Fraction.

Текущая версия на 13:21, 28 июня 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 задач
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

    Ещё про изображения — размытие (14.04.2021)

    Размытие (простой алгоритм — усреднение по соседям)

    Тестовая картинка

    Работа с API (urllib.request, JSON, Pandas) (14.04.2021)

    Сбор статистики землетрясений

    Классы и модули в Python (28.04.2021)

    Наверное, ничего лучше, чем чтение Python tutorial я не могу посоветовать. Для начала — ровно то, что нужно.

    Пример описания класса Fraction.
Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты