Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

My Homework2 #132

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
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
21 changes: 15 additions & 6 deletions 1_if1.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,31 @@

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

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

"""
a = int(input("Введите ваш возраст: "))

def main():

def main(x):
if x <= 6:
return "Вы должны учиться в детском саду"
elif 7 <= x < 18:
return "Вы должны учиться в в школе"
else:
return "Вы должныучиться в ВУЗе или работать"
"""
Эта функция вызывается автоматически при запуске скрипта в консоли
В ней надо заменить pass на ваш код
"""
pass


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

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

"""
a = input("Введите первую строку: ")
b = input("Введите вторую строку: ")

def main():

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

if isinstance(x, str) and isinstance(y, str):
if x == y:
return 1
elif len(x) > len(y):
return 2
elif y == "learn":
return 3
else:
return 4
else:
return 0


if __name__ == "__main__":
main()
c = main(a, b)
print(c)
31 changes: 26 additions & 5 deletions 3_for.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

* Дан список словарей с данными по колличеству проданных телефонов
[
{'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]},
]
Expand All @@ -16,12 +16,33 @@
* Посчитать и вывести среднее количество продаж всех товаров
"""

def main():
a = [{'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(d):
"""
Эта функция вызывается автоматически при запуске скрипта в консоли
В ней надо заменить pass на ваш код
"""
pass

list1 = []
list2 = []
for i in range(len(d)):
m1 = sum(d[i].get('items_sold'))
print(f"product {d[i].get('product')} количетсво продаж: {m1}")
list1.append(m1)
list2.append(len(d[i].get('items_sold')))
m2 = sum(d[i].get('items_sold'))/len(d[i].get('items_sold'))
print(f"product {d[i].get('product')} среднее количество продаж: {int(m2)}")
else:
m3 = sum(list1)
print(f"Общее количество продаж: {m3}")
m4 = m3 / sum(list2)
print(f"Cреднее количество продаж всех товаров: {int(m4)}")


if __name__ == "__main__":
main()
b = main(a)


10 changes: 6 additions & 4 deletions 4_while1.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,20 @@

Цикл while: hello_user

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

"""


def hello_user():
"""
Замените pass на ваш код
"""
pass
a = input("Как дела? ")
while a != "Хорошо":
a = input("Как дела? ")



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

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

"""

questions_and_answers = {}
questions_and_answers = {"Как дела?": "Хорошо!", "Что делаешь?": "Программирую"}


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

a = input("Пользователь: ")
while a not in answers_dict:
a = input("Пользователь: ")
else:
print(f"Программа: {answers_dict.get(a)}")


if __name__ == "__main__":
ask_user(questions_and_answers)
18 changes: 13 additions & 5 deletions 6_exception1.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,25 @@

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

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

"""


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

try:
while True:
a = input("Как дела? ")
if a == "Хорошо":
print("Пока!")
except KeyboardInterrupt:
print("Пока!")


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

"""

def discounted(price, discount, max_discount=20)

def discounted(price, discount, max_discount=20):

"""
Замените pass на ваш код
"""
pass

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


if __name__ == "__main__":
print(discounted(100, 2))
print(discounted(100, "3"))
Expand Down
65 changes: 31 additions & 34 deletions 8_ephem_bot.py
Original file line number Diff line number Diff line change
@@ -1,57 +1,54 @@
"""
Домашнее задание №1

Использование библиотек: ephem

* Установите модуль ephem
* Добавьте в бота команду /planet, которая будет принимать на вход
название планеты на английском, например /planet Mars
* В функции-обработчике команды из update.message.text получите
название планеты (подсказка: используйте .split())
* При помощи условного оператора if и ephem.constellation научите
бота отвечать, в каком созвездии сегодня находится планета.

"""
import logging

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

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


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

logging.basicConfig(filename="bot.log", level = logging.INFO)

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

print('Вызван /start')
update.message.reply_text('Привет пользователь')

def talk_to_me(update, context):
user_text = update.message.text
user_text = update.message.text
print(user_text)
update.message.reply_text(text)

p = ["Mercury", "Venus", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune"]
if user_text in p:
update.message.reply_text("Введите дату")
b = update.message.text
print(b)
if user_text == "Mercury":
f = ephem.Mercury(b)
elif user_text == "Venus":
f = ephem.Venus(b)
elif user_text == "Mars":
f = ephem.Mars(b)
elif user_text == "Jupiter":
f = ephem.Jupiter(b)
elif user_text == "Saturn":
f = ephem.Saturn(b)
elif user_text == "Uranus":
f = ephem.Uranus(b)
elif user_text == "Neptune":
f = ephem.Neptune(b)
constellation = ephem.constellation(f)
update.message.reply_text(constellation)
else:
update.message.reply_text(user_text)

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(MessageHandler(Filters.text, talk_to_me))

logging.info("Бот стартовал")
mybot.start_polling()
mybot.idle()


if __name__ == "__main__":
main()