Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -121,3 +121,4 @@ dmypy.json

# Pyre type checker
.pyre/
settings.py
26 changes: 22 additions & 4 deletions 1_if1.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,40 @@

Условный оператор: Возраст

* Попросить пользователя ввести возраст при помощи input и положить
* Попросить пользователя ввести возраст при помощи input и положить
результат в переменную
* Написать функцию, которая по возрасту определит, чем должен заниматься пользователь:
* Написать функцию, которая по возрасту определит, чем должен заниматься пользователь:
учиться в детском саду, школе, ВУЗе или работать
* Вызвать функцию, передав ей возраст пользователя и положить результат
* Вызвать функцию, передав ей возраст пользователя и положить результат
работы функции в переменную
* Вывести содержимое переменной на экран

"""


def main():
"""
Эта функция вызывается автоматически при запуске скрипта в консоли
В ней надо заменить pass на ваш код
"""
pass
age = int(input('Введите Ваш возраст: '))
while True:
if age >= 100 or age <= 0:
print('Вы ввели некорретный возраст, введите еще раз')
age = int(input('Введите Ваш возраст: '))
elif 0 < age < 7:
result = 'Вы детсадовец'
break
elif 7 < age < 18:
result = 'Вы школьник'
break
elif 18 < age < 23:
result = 'Вы студент'
break
else:
result = 'Вы должны работать'
break
print(result)

if __name__ == "__main__":
main()
23 changes: 17 additions & 6 deletions 2_if2.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,33 @@
Условный оператор: Сравнение строк

* Написать функцию, которая принимает на вход две строки
* Проверить, является ли то, что передано функции, строками.
* Проверить, является ли то, что передано функции, строками.
Если нет - вернуть 0
* Если строки одинаковые, вернуть 1
* Если строки разные и первая длиннее, вернуть 2
* Если строки разные и вторая строка 'learn', возвращает 3
* Вызвать функцию несколько раз, передавая ей разные праметры
* Вызвать функцию несколько раз, передавая ей разные праметры
и выводя на экран результаты

"""

def main():
def main(str1, str2):
"""
Эта функция вызывается автоматически при запуске скрипта в консоли
В ней надо заменить pass на ваш код
"""
pass


if isinstance(str1, str) and isinstance(str2, str):
if str1 == str2:
result = 1
elif str1 > str2:
result = 2
elif str2 == 'learn':
result = 3
else:
result = 0

print(result)

if __name__ == "__main__":
main()
main('World', 2)
37 changes: 27 additions & 10 deletions 3_for.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,41 @@

Цикл for: Продажи товаров

* Дан список словарей с данными по колличеству проданных телефонов
* Дан список словарей с данными по количеству проданных телефонов
[
{'product': 'iPhone 12', 'items_sold': [363, 500, 224, 358, 480, 476, 470, 216, 270, 388, 312, 186]},
{'product': 'iPhone 12', 'items_sold': [363, 500, 224, 358, 480, 476, 470, 216, 270, 388, 312, 186]},
{'product': 'Xiaomi Mi11', 'items_sold': [317, 267, 290, 431, 211, 354, 276, 526, 141, 453, 510, 316]},
{'product': 'Samsung Galaxy 21', 'items_sold': [343, 390, 238, 437, 214, 494, 441, 518, 212, 288, 272, 247]},
]
* Посчитать и вывести суммарное количество продаж для каждого товара
* Посчитать и вывести среднее количество продаж для каждого товара
* Посчитать и вывести суммарное количество продаж всех товаров
* Посчитать и вывести среднее количество продаж всех товаров
* Посчитать и вывести суммарное количество продаж для каждого товара *
* Посчитать и вывести среднее количество продаж для каждого товара *
* Посчитать и вывести суммарное количество продаж всех товаров *
* Посчитать и вывести среднее количество продаж всех товаров *
"""

def main():
def main(args):
"""
Эта функция вызывается автоматически при запуске скрипта в консоли
В ней надо заменить pass на ваш код
"""
pass

sum_, average = [], []
len_all = 0
for i in args:
sum_.append(sum(i['items_sold']))
average.append(sum(i['items_sold']) / len(i['items_sold']))
len_all += len(i['items_sold'])

print(*sum_)
print(*average)
print(sum(sum_))
print(sum(sum_) / len_all)


my_dict = [
{'product': 'iPhone 12', 'items_sold': [363, 500, 224, 358, 480, 476, 470, 216, 270, 388, 312, 186]},
{'product': 'Xiaomi Mi11', 'items_sold': [317, 267, 290, 431, 211, 354, 276, 526, 141, 453, 510, 316]},
{'product': 'Samsung Galaxy 21', 'items_sold': [343, 390, 238, 437, 214, 494, 441, 518, 212, 288, 272, 247]},
]

if __name__ == "__main__":
main()
main(my_dict)
12 changes: 8 additions & 4 deletions 4_while1.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,22 @@

Цикл while: hello_user

* Напишите функцию hello_user(), которая с помощью функции input() спрашивает
* Напишите функцию hello_user(), которая с помощью функции input() спрашивает
пользователя “Как дела?”, пока он не ответит “Хорошо”

"""


def hello_user():
"""
Замените pass на ваш код
"""
pass
while True:
txt = input('Как дела? ')
if txt == 'Хорошо'.lower():
break
print('Всего хорошего')



if __name__ == "__main__":
hello_user()
14 changes: 11 additions & 3 deletions 5_while2.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

Пользователь: Что делаешь?
Программа: Программирую

"""

questions_and_answers = {}
Expand All @@ -21,7 +21,15 @@ def ask_user(answers_dict):
"""
Замените pass на ваш код
"""
pass


while True:
question = input()
if question in answers_dict:
break
print('Спроси что-то другое')
print(answers_dict[question])


questions_and_answers = {'Как дела': 'Хорошо!', 'Что делаешь?': 'Программирую', 'Пойдешь в кино?': 'Нет, я работаю', 'Какие планы на выходные?': 'Учиться'}
if __name__ == "__main__":
ask_user(questions_and_answers)
23 changes: 18 additions & 5 deletions 6_exception1.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,30 @@

Исключения: KeyboardInterrupt

* Перепишите функцию hello_user() из задания while1, чтобы она
перехватывала KeyboardInterrupt, писала пользователю "Пока!"
* Перепишите функцию hello_user() из задания while1, чтобы она
перехватывала KeyboardInterrupt, писала пользователю "Пока!"
и завершала работу при помощи оператора break

"""


def hello_user():
"""
Замените pass на ваш код
"""
pass


while True:
try:
txt = input('Как дела? ')
if txt.lower() == 'хорошо':
break
else:
print('Скажи еще что-нибудь')
except KeyboardInterrupt:
print('Пока')
break



if __name__ == "__main__":
hello_user()
22 changes: 18 additions & 4 deletions 7_exception2.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,29 @@
* Первые два нужно приводить к вещественному числу при помощи float(),
а третий - к целому при помощи int() и перехватывать исключения
ValueError и TypeError, если приведение типов не сработало.

"""

def discounted(price, discount, max_discount=20)
def discounted(price, discount, max_discount=20):
"""
Замените pass на ваш код
"""
pass

try:
price = abs(float(price))
discount = abs(float(discount))
max_discount = abs(int(max_discount))
if max_discount >= 100:
raise ValueError('Слишком большая максимальная скидка')
if discount >= max_discount:
return price
else:
return price - (price * discount / 100)
return price, discount, max_discount

except (ValueError, TypeError):
print('Ошибка приведения')
return price, discount, max_discount

if __name__ == "__main__":
print(discounted(100, 2))
print(discounted(100, "3"))
Expand Down
53 changes: 40 additions & 13 deletions 8_ephem_bot.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,41 +12,68 @@
бота отвечать, в каком созвездии сегодня находится планета.

"""
import datetime
import logging

import ephem
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters

import settings

logging.basicConfig(format='%(name)s - %(levelname)s - %(message)s',
level=logging.INFO,
filename='bot.log')


PROXY = {
'proxy_url': 'socks5://t1.learn.python.ru:1080',
'urllib3_proxy_kwargs': {
'username': 'learn',
'password': 'python'
}
}
# PROXY = {
# 'proxy_url': 'socks5://t1.learn.python.ru:1080',
# 'urllib3_proxy_kwargs': {
# 'username': 'learn',
# 'password': 'python'
# }
# }


def greet_user(update, context):
text = 'Вызван /start'
print(text)
update.message.reply_text(text)
# print(text)
logging.info(text)
update.message.reply_text('Hello')

def planet(update, context):
text = '/planet'
update.message.reply_text('Enter planet in English')


def talk_to_me(update, context):
# Получает сообщение от сервера Телеграм. Контекст - непонятно
user_text = update.message.text
print(user_text)
update.message.reply_text(text)
logging.info(user_text)
update.message.reply_text(user_text)

def get_planet(update, context):
date_now = datetime.date.today()
lst_planet = {'Mercury': ephem.Mercury, 'Venus': ephem.Venus, 'Mars': ephem.Mars, 'Jupiter': ephem.Jupiter, 'Saturn': ephem.Saturn, 'Uranus': ephem.Uranus, 'Neptune': ephem.Neptune, 'Pluto': ephem.Pluto,
'Меркурий': ephem.Mercury, 'Венера': ephem.Venus, 'Марс': ephem.Mars, 'Юпитер': ephem.Jupiter, 'Сатурн': ephem.Saturn, 'Уран': ephem.Uranus, 'Нептун': ephem.Neptune, 'Плутон': ephem.Pluto}
user_text: str = update.message.text
user_text = user_text.capitalize()

if user_text in lst_planet:
planet = lst_planet[user_text]
planet_answ = ephem.constellation(planet(date_now))
update.message.reply_text(planet_answ[1])
else:
logging.info(user_text)
update.message.reply_text('Nope, try again')


def main():
mybot = Updater("КЛЮЧ, КОТОРЫЙ НАМ ВЫДАЛ BotFather", request_kwargs=PROXY, use_context=True)
mybot = Updater(settings.API_KEY, use_context=True)

dp = mybot.dispatcher
dp.add_handler(CommandHandler("start", greet_user))
dp.add_handler(CommandHandler("planet", planet))
dp.add_handler(CommandHandler('start', greet_user))
dp.add_handler(MessageHandler(Filters.text, get_planet))
dp.add_handler(MessageHandler(Filters.text, talk_to_me))

mybot.start_polling()
Expand Down