Класс «Цифровой счетчик»
Создать класс цифрового счетчика. В классе реализовать методы:
установка максимального значения счетчика,
установка минимального значения счетчика
установка начального значения счётчика
метод увеличения счетчика на 1. Метод можно вызывать до тех пор, пока значение не достигнет максимума. Потом — выкинуть (raise) исключение ValueError, с описанием, что достигнут максимум
уменьшения счетчика на 1. Метод можно вызывать до тех пор, пока значение не достигнет минимума. Потом — выкинуть (raise) исключение ValueError, с описанием, что достигнут минимум
возвращения текущего значения счётчика
Начальное, минимальное и максимальное значения счетчика, также могут быть добавлены в метод инициализации экземпляра класса.
Приблизительный каркас для класса и варианты проверки. Вам нужно дописать необходимое вместо pass
def __init__(self, current=1, min_value=0, max_value=10):
self.current = current
self.min_value = min_value
self.max_value = max_value
def set_current(self, start):
self.current = start
def set_max(self, max_max):
pass
def set_min(self, min_min):
pass
def step_up(self):
pass
def step_down(self):
pass
def get_current(self):
return self.current
counter = Counter()
counter.set_current(7)
counter.step_up()
counter.step_up()
print(counter.get_current()) # 9
counter.step_up() # ValueError
counter.set_min(7)
counter.step_down()
counter.step_down() # ValueError
print(counter.get_current()) # 8[PYTHON]
Увеличение счетчика по нажатию клавиши
Увеличение и уменьшение трех предметов по нажатию клавиши
Помогите пожалуйста написать программу увеличения и уменьшения трех предметов (окружность, квадрат.

Добавление текстбоксов по нажатию клавиши и удаление по нажатию другой кнопки
Всем доброго времени суток. Хотел попросить помощи в написании следующего кода. Кое что набросал.
Включать курсор при нажатии левой клавиши, а выключать по нажатию правой клавиши мыши
Нужно: Включать курсор при нажатии левой клавиши, а выключать по нажатию правой клавиши мыши.
Включать курсор при нажатии левой клавиши, а выключать по нажатию правой клавиши мыши
Добрый день. Подскажите, пожалуйста, что можно еще добавить в код, что работали функции скрытия и.
Написать программу, которая по нажатию мыши создает потоки: по нажатию правой клавиши – поток, производящий вы
Написать программу, которая по нажатию мыши создает потоки: по нажатию правой клавиши – поток.
![]()
4902 / 2772 / 851
Регистрация: 04.10.2012
Сообщений: 10,101

Сообщение было отмечено RamPG как решение
Решение
RamPG, так должно работать. Проверяйте
1 2 3 4 5 6 7 8 9 10 11 12
from tkinter import * root = Tk() root.geometry('20x50') global n n = 1 def Click(): global n n += 1 button1.config(text = n) button1 = Button(text = n, command = Click, width = 10, height = 3) button1.pack() root.mainloop()
Регистрация: 20.02.2018
Сообщений: 50
Спасибо за помощь, разобрался. Появился вопрос: А как можно сделать это все через bind?
1 2 3 4 5 6 7 8 9 10 11 12 13
from tkinter import * root = Tk() root.geometry('20x50') global n n = 1 def Click(): global n n += 1 button1.config(text = n) button1 = Button(text = n, width = 10, height = 3) button1.bind("", Click) button1.pack() root.mainloop()
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Увеличение счетчика ajax
Всем привет. есть кнопка "Лайк" при клике которой счетчик должен увеличиваться на 1. ID на сервер.
Увеличение счётчика NumericUpDown на 01
Доброго времени суток! Использую значение NumericUpDown в маске файла gtmmddnn.d1, nn =.
Увеличение некоторого счетчика на единицу
Привет всем! Помогите пожалуйста разобраться, пытаюсь увеличить счетчик на +1, не хочет увеличивать.
Увеличение некоторого счетчика на единицу
Привет всем! Помогите пожалуйста разобраться, пытаюсь увеличить счетчик на +1, не хочет увеличивать.
Увеличение счетчика при просмотре трёхзначных чисел
Не пойму в чем ошибка,не все результаты соответствуют действительности. Прошу кого-нибудь из.
Накручивая счетчик посещений сайта
Функциональность бота должна быть следующей: мы говорим сколько «человек» (на самом деле ботов) сколько посещений сделают за какое количество времени на каком сайте. В отдельном файле указываем список прокси-серверов (не с одного же IP будем сидеть) и запускаем.
Например, 100 «человек» в течение часа должны сделать 500 посещений на сайте example.com.
Бот должен рандомно распределить сколько посещений сделает каждый «человек» и сколько времени потратит на каждое посещение. Посещение — это переход по сайту. Ну и, соответственно, реализовать эти посещения. Также он рандомно должен распределить с какого браузера делается посещение. Но при этом логично, что посещений с Internet Explorer не должно быть больше остальных.
Как делать?
Реализовывал бота на Питоне. С использованием очень классной библиотеки mechanize. С ней я работаю уже не первый день. По сути, она эмулирует браузер без javascript, умеет автоматически работать с куки, сабмитить формы и, наверное, что-то еще умеет, но мне и этого хватает.
Была лишь одна вещь, которую я не знал: как реализовать подключение через прокси. Но на stackoverflow.com быстро нашелся ответ. Он до смешного прост, всего одна строка.
И вот я приступил к написанию. Бот должен уметь искать ссылки на странице сайта, чтобы переходить по ним. Для этого использовался модуль под названием BeautifulSoup. Он умеет парсить страницы, находить, например, все ссылки. Это и нужно. На хабре этот модуль ругают за глючность, но меня он пока не подводил.
Самым сложным в написании бота было «разумный рандом». Нужно рандомно, но разумно распределить все параметры «человека», который посещает сайт (браузер, количество посещений, рандомное время на каждое посещение) таким образом, чтобы это не было похоже на бота.
Работает!
Через несколько часов бот был готов. И я такой весь на радостях запустил его. А он… работает! Довольный собой, решил поставить у себя на сайте счетчик посещаемости от яндекса. Поставил. Запустил бота. Бот успешно выполняется, но счетчик не растет. Зашел на сайт через браузер — счетчик сработал. А на бота не действует. Что такое?
Не работает
И тут я понял то, что следовало бы понять еще в самом начале. Любой счетчик — это javascript. Нет javascript ‘а — счетчик не сработает. А, как я уже говорил, mechanize — это браузер без javascript, а значит писать такого бота на нем — глупость.
Что же делать?
Эмуляторов бразуера с javascript не существует. Ну это и логично, во-первых, чтобы эмулировать браузер, придется реализовать javascript на Питоне, а во-вторых, даже если предположить, что мы реализовали javascript, мы получим полноценный браузер. Тогда не проще ли использовать уже существующий браузер? И вот когда эта фраза прозвучала у меня в голове, я открыл новую вкладку и написал «python bindings google chrome». Первой строчкой google выдал мне CEF Python. Как оказалось, это движок chromium (на основе которого написан google chrome) с биндингами к Питону. То есть по сути это браузер, в котором мы можем управлять не мышкой и клавиатурой, а скриптами на Питоне. «Вау!» — подумал я — «То, что нужно.»
Но как-то лень уже было качать, настраивать, разбираться. Подумал: «Ну ладно, просто скачаю пока, потом разберусь». И знаете, я скачал, запустил готовый пример с сайта, мне открылось окошко в котором был браузер. Все работало. Никаких настроек. Никаких ошибок. Это был полноценный браузер. Последовало еще одно «вау» и появилось желание разбираться. Сделал поиск по документации. Узнал, что можно менять user-agent’а (говорить сайтам, что мы с разных браузеров сидим). Отлично. Автоматически переходить по нужным ссылкам. Отлично. Даже выполнять произвольный javascript на странице открытого сайта. Отлично. Потестировал на своем сайте, счетчик растет. Еще одно «вау». Осталось объединить CEF Python с моим уже написанным ботом и будет готов новый бот, бот с javascript, бот, которого видят счетчики.
Есть лишь одна проблема. Прокси. В документации к CEF Python о нем ничего не сказано. Зато на stackoverflow подсказывают, что есть библиотека _winreg, которая работает с Windows-реестром, а в нем можно указать прокси. У меня пока ничего не получается, но, думаю, истина где-то рядом. Если у меня получится написать такого бота — отпишусь.
Python: Цикл While
Программы, которые мы пишем на курсе, становятся сложнее и объемнее. Они еще далеки от реальных программ, хотя уже заставляют напрячься.
В этом уроке мы переходим к одной из самых сложных базовых тем в программировании — циклам.
Прикладные программы помогают управлять сотрудниками, финансами и могут развлекать. Несмотря на различия, они выполняют заложенные в них алгоритмы, которые похожи. Алгоритм — это последовательность действий, которая приводит к ожидаемому результату.
Представим, что у нас есть книга, и мы хотим найти в ней конкретную фразу. Саму фразу мы помним, но не знаем, на какой она странице. Нам придется последовательно просматривать страницы до тех пор, пока не найдем нужную. Этот процесс и называется алгоритмом.
Алгоритм включает логические проверки и перебор страниц. Количество страниц, которое придется посмотреть, заранее неизвестно. Но сам процесс просмотра повторяется одинаковым образом. Чтобы выполнять повторяющиеся действия, нужны циклы. Каждый повтор называется итерацией.
Напишем функцию с простым циклом, который будет n раз выводить на экран строку ‘Hello!’ :
def print_hello(n): counter = 0 while counter < n: print('Hello!') counter = counter + 1 print_hello(2) # =>Hello! # => Hello!
Теперь проанализируем пример функции с циклом, который выводит на экран числа от одного до числа-аргумента:
print_numbers(3) # => 1 # => 2 # => 3
Эту функцию невозможно реализовать уже изученными средствами, так как количество выводов на экран заранее неизвестно. А с циклами проблем не будет:
def print_numbers(last_number): # i сокращение от index (порядковый номер) # используется по общему соглашению во множестве языков # как счетчик цикла i = 1 while i 1 # => 2 # => 3 # => finished!
Цикл while состоит из трех элементов:
- Ключевое слово while
- Предикат — условие, которое указывается после while и вычисляется на каждой итерации
- Блок кода — тело цикла
Каждое выполнение тела называется итерацией. В примере выше print_numbers(3) вызвал три итерации, на каждой из которых была выведена на экран переменная i . Конструкция читается так: «делать то, что указано в теле цикла, пока истинно условие i
Разберем работу этого кода для вызова print_numbers(3) :
# Инициализируется i i = 1 # Предикат возвращает true, поэтому выполняется тело цикла while 1
Процесс, который порождает цикл, должен остановиться. За это отвечает программист.
Обычно задача сводится к введению переменной — счетчику цикла. Сначала он инициализируется — ему задается начальное значение. В нашем примере это строчка i = 1 . Затем в условии цикла проверяется, не достиг ли счетчик своего предельного значения.
Предельное значение в примере определяется аргументом функции. Если условие цикла не выполнено, то тело не выполняется и интерпретатор двигается дальше — работает с инструкциями после цикла.
Если условие цикла истинно, то выполняется тело, в котором находится элемент остановки — изменение счетчика. Обычно его делают в конце тела, и это изменение — место, где нельзя обойтись без переменной. В примере выше за изменение отвечает строчка i = i + 1 .
На этом моменте новички много ошибаются. Например, можно забыть увеличить счетчик или неправильно проверить его в предикате. Это приведет к зацикливанию — цикл будет работать бесконечно и программа никогда не остановится. В таком случае ее нужно завершить принудительно.
def print_numbers(last_number): i = 1 # Этот цикл никогда не остановится # и будет печатать всегда одно значение while i
В некоторых случаях бесконечные циклы полезны. Мы не будем рассматривать такие ситуации, но покажем, как выглядит этот код:
while True: # Что-то делаем
Без циклов невозможно обойтись, когда алгоритм решения задачи требует повторения каких-то действий и количество этих операций заранее неизвестно.
Задание
Модифицируйте функцию print_numbers() так, чтобы она выводила числа в обратном порядке. Для этого нужно идти от верхней границы к нижней. То есть счётчик должен быть инициализирован максимальным значением, а в теле цикла его нужно уменьшать до нижней границы.
Пример вызова и вывода:
print_numbers(4)
4
3
2
1
finished!
Упражнение не проходит проверку — что делать?
Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:
- Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.
В моей среде код работает, а здесь нет
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Мой код отличается от решения учителя
Это нормально , в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.
В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Прочитал урок — ничего не понятно
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.
Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.
Полезное
Определения
- Цикл While — инструкция для повторения кода, пока удовлетворяется какое-то условие.
