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
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -121,3 +121,6 @@ dmypy.json

# Pyre type checker
.pyre/

# For task 8_ephem_bot.py
settings.py
13 changes: 11 additions & 2 deletions 1_if1.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,16 @@ def main():
Эта функция вызывается автоматически при запуске скрипта в консоли
В ней надо заменить pass на ваш код
"""
pass
age = int(input('Укажите ваш возраст: '))
if age <= 6:
return f'Вам нужно в детский сад походить ещё {6 - age}'
elif 6 < age <= 18:
return 'Вам нужно учиться в школе'
elif 18 < age <= 25:
return 'Вам нужно учиться в ВУЗе'
elif 25 < age <= 65:
return f'Вам нужно работать ещё {65 - age}'
return 'Поздравляем, Вы пенсионер!'

if __name__ == "__main__":
main()
print(main())
15 changes: 12 additions & 3 deletions 2_if2.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,21 @@

"""

def main():
def main(line1, line2):
"""
Эта функция вызывается автоматически при запуске скрипта в консоли
В ней надо заменить pass на ваш код
"""
pass
if isinstance(line1, str) == 0 or isinstance(line2, str) == 0:
return 0
elif line1 == line2:
return 1
elif len(line1) > len(line2):
return 2
elif line1 != line2 and line2 == 'Learn':
return 3
return 'Условий для обработки таких строк не задано'


if __name__ == "__main__":
main()
print(main('123', 'Learnar'))
13 changes: 12 additions & 1 deletion 3_for.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,18 @@ def main():
Эта функция вызывается автоматически при запуске скрипта в консоли
В ней надо заменить pass на ваш код
"""
pass
lists = [
{'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]},
]
total_num_sales = 0
for items in lists:
total_num_sales += sum(items['items_sold'])
print(f"Для товара {items['product']}: суммарное количество продаж {sum(items['items_sold'])},\
среднее количество продаж {round(sum(items['items_sold']) / 12)}")
print()
print(f"Для всех товаров суммарное количество продаж {total_num_sales}, среднее количество продаж {round(total_num_sales / 12)}")

if __name__ == "__main__":
main()
5 changes: 4 additions & 1 deletion 4_while1.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,10 @@ def hello_user():
"""
Замените pass на ваш код
"""
pass
question = input('Как дела? ')
while question != 'Хорошо':
question = input('Как дела? ')
print('Вот и хорошо!')


if __name__ == "__main__":
Expand Down
26 changes: 18 additions & 8 deletions 5_while2.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,24 @@
Программа: Программирую

"""
questions_and_answers = {
"Как дела?": "Хорошо!",
"Что делаешь?": "Программирую",
"Какой твой любимый цвет?": "Зелёный"}

questions_and_answers = {}

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

def ask_user():
user_asks = input('Пользователь: ')
answer = questions_and_answers.get(user_asks, 'Задай другой вопрос, на этот нет ответа')
return answer

while True:
print('Программа: Что ты хочешь спросить у меня?')
answer = ask_user()
print(f'Программа:{answer}')
if int(input('Программа: Если вопросов больше нет нажми 0, если есть 1: ')) == 0:
break

if __name__ == "__main__":
ask_user(questions_and_answers)
question_and_answer()
10 changes: 9 additions & 1 deletion 6_exception1.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,15 @@ def hello_user():
"""
Замените pass на ваш код
"""
pass

while True:
try:
if input('Как дела? ') == 'Хорошо':
print('Ну хорошо!')
break
except KeyboardInterrupt:
print('Пока!')
break

if __name__ == "__main__":
hello_user()
17 changes: 15 additions & 2 deletions 7_exception2.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,24 @@

"""

def discounted(price, discount, max_discount=20)
def discounted(price, discount, max_discount=20):
"""
Замените pass на ваш код
"""
pass
try:
price = float(abs(price))
discount = float(abs(discount))
max_discount = int(abs(max_discount))
if max_discount >= 100:
raise ValueError('Слишком большая максимальная скидка')
if discount >= max_discount:
return price
else:
return f'{price - (price * discount / 100)}'
except ValueError:
return 'Некорректное значение'
except TypeError:
return 'Значение недопустимого типа'

if __name__ == "__main__":
print(discounted(100, 2))
Expand Down
79 changes: 50 additions & 29 deletions 8_ephem_bot.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,45 +13,66 @@

"""
import logging

import ephem
import settings
import locale
from datetime import datetime
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters

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'
}
}


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


def talk_to_me(update, context):
locale.setlocale(locale.LC_TIME, 'ru_RU') # что бы генерировать кирилические дни недели

planets = {"Mercury": ephem.Mercury,
"Venus": ephem.Venus,
"Mars" : ephem.Mars,
"Saturn": ephem.Saturn,
"Uranus": ephem.Uranus,
"Neptune": ephem.Neptune,
"Pluto": ephem.Pluto,
"Moon": ephem.Moon,
"Sun": ephem.Sun,
"Jupiter": ephem.Jupiter
}

def greet_user(update, context): # update - это то, что поступило от пользователя Telegram. Context - это спец. штука с помощью которой мы можем изнутри функции отдавать команды боту
print('Вызван /start')
update.message.reply_text('Здравствуй пользователь!')

def planet_const(update, context): # вызов команды /planet
print('Вызван /planet')
update.message.reply_text("Введите название объекта Солнечной системы -\
Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto, Moon, Sun")

def get_constellation(planet_name): # функция обрабатывает сообщение пользователя с названием планеты
current_date = datetime.now().strftime('%d.%m.%Y %H:%M') # переменная для корректной работы с ephem
current_planet = planets[planet_name](current_date) # переменная планеты с обработкой
current_date = datetime.now().strftime('%A %d.%m.%Y %H:%M') # переменная с отображением дня недели на кириллице
return ephem.constellation(current_planet), current_date # функция возвращает созвездие и дату

def talk_to_me(update, context): # функция принимает и распределяет все сообщения от пользователя
user_text = update.message.text
print(user_text)
update.message.reply_text(text)


print(user_text)
if user_text.lower().capitalize() in planets: # если текст сообщения от пользователя есть в словаре с планетами
planet_name = user_text # передаём в переменную текст сообщения
const, current_date = get_constellation(planet_name) # получаем переменные из функции get_constelletion(planet_name)
update.message.reply_text(f"Сегодня: {current_date}") # вывод пользователю даты
update.message.reply_text(f"Планета {planet_name} в созвездии: {const[1]}") # вывод пользователю созвездия
print(const, current_date, sep='\n') # вывод в консоль созвездия, даты
else:
update.message.reply_text(f"Хотите узнать про созвездия, нажмите: {'/planet'}")

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

dp = mybot.dispatcher
mybot = Updater(settings.API_KEY, use_context = True)
dp = mybot.dispatcher # в переменную dp кладём это, чтобы в дальнейшем не набирать длинное название
dp.add_handler(CommandHandler("start", greet_user))
dp.add_handler(CommandHandler("planet", planet_const))
dp.add_handler(MessageHandler(Filters.text, talk_to_me))


logging.info("Bot started")
mybot.start_polling()
mybot.idle()


if __name__ == "__main__":
main()