From b1ed005a9d557885e45f1dbbe9f998ec2b20dc8c Mon Sep 17 00:00:00 2001 From: Jury Date: Sat, 19 Feb 2022 22:02:42 +0300 Subject: [PATCH 1/3] add testfile --- testfile | 1 + 1 file changed, 1 insertion(+) create mode 100644 testfile diff --git a/testfile b/testfile new file mode 100644 index 0000000..190a180 --- /dev/null +++ b/testfile @@ -0,0 +1 @@ +123 From 2c85678faab682f804d753b2456353e60a05b224 Mon Sep 17 00:00:00 2001 From: spqrlatin <63852770+spqrlatin@users.noreply.github.com> Date: Sat, 19 Feb 2022 22:09:47 +0300 Subject: [PATCH 2/3] Delete testfile --- testfile | 1 - 1 file changed, 1 deletion(-) delete mode 100644 testfile diff --git a/testfile b/testfile deleted file mode 100644 index 190a180..0000000 --- a/testfile +++ /dev/null @@ -1 +0,0 @@ -123 From e6d5bc8007b961cd332aaa93562aa607c48bd12e Mon Sep 17 00:00:00 2001 From: Jury Date: Fri, 25 Feb 2022 22:47:28 +0300 Subject: [PATCH 3/3] hw2 --- 1_date_and_time.py | 25 +- 2_files.py | 12 +- 3_dict_to_csv.py | 32 +- export.csv | 5 + learn_bot/game_bot.py | 88 ++++++ learn_bot/requirements.txt | 11 + learn_bot/settings.py | 0 learn_web/server.py | 19 ++ learn_web/test.json | 620 +++++++++++++++++++++++++++++++++++++ learn_web/weather.py | 26 ++ referat.txt | 7 + referat2.txt | 7 + 12 files changed, 844 insertions(+), 8 deletions(-) mode change 100644 => 100755 1_date_and_time.py create mode 100644 export.csv create mode 100644 learn_bot/game_bot.py create mode 100644 learn_bot/requirements.txt create mode 100644 learn_bot/settings.py create mode 100644 learn_web/server.py create mode 100644 learn_web/test.json create mode 100644 learn_web/weather.py create mode 100644 referat.txt create mode 100644 referat2.txt diff --git a/1_date_and_time.py b/1_date_and_time.py old mode 100644 new mode 100755 index e72d76a..1cb15ac --- a/1_date_and_time.py +++ b/1_date_and_time.py @@ -1,3 +1,4 @@ +from datetime import datetime, date, timedelta """ Домашнее задание №2 @@ -8,21 +9,33 @@ """ +def display_ymd(var): + return datetime.strftime(var, "%Y-%m-%d") + def print_days(): """ Эта функция вызывается автоматически при запуске скрипта в консоли В ней надо заменить pass на ваш код """ - pass + today = datetime.today() + delta1 = timedelta(days=1) + delta30 = timedelta(days=30) + + yesterday = today - delta1 + thirty_days_earlier = today - delta30 + print(f'Today is: {display_ymd(today)}') + print(f'Yesterday used to be: {display_ymd(yesterday)}') + print(f'Thirty days ago used to be: {display_ymd(thirty_days_earlier)}') -def str_2_datetime(date_string): +def str_to_datetime(date_string): """ Эта функция вызывается автоматически при запуске скрипта в консоли В ней надо заменить pass на ваш код """ - pass - + return datetime.strptime(date_string[:24], "%m/%d/%y %H:%M:%S.%f") + if __name__ == "__main__": - print_days() - print(str_2_datetime("01/01/20 12:10:03.234567")) + date_time_obj = str_to_datetime("01/01/20 12:10:03.234567") + print(date_time_obj) + print_days() \ No newline at end of file diff --git a/2_files.py b/2_files.py index 5072b13..98fbece 100644 --- a/2_files.py +++ b/2_files.py @@ -16,7 +16,17 @@ def main(): Эта функция вызывается автоматически при запуске скрипта в консоли В ней надо заменить pass на ваш код """ - pass + with open('./referat.txt', encoding = 'utf-8') as f: + content = f.read() + num_of_words = content.split() + print(len(content)) + print(len(num_of_words)) + replace_symbol = content.replace(".", "!") + print("Im here") + with open('referat2.txt', 'w', encoding = 'utf-8') as new: + # new.write(replace_symbol) + print(replace_symbol, file=new) + if __name__ == "__main__": main() diff --git a/3_dict_to_csv.py b/3_dict_to_csv.py index 44d6efb..862df8d 100644 --- a/3_dict_to_csv.py +++ b/3_dict_to_csv.py @@ -1,3 +1,4 @@ +import csv """ Домашнее задание №2 @@ -15,7 +16,36 @@ def main(): Эта функция вызывается автоматически при запуске скрипта в консоли В ней надо заменить pass на ваш код """ - pass + my_dict_list = [ + { + 'name': 'Brainwashed', + 'age' : '1', + 'job' : 'lol' + }, + { + 'name': 'Cakewall', + 'age' : '3', + 'job' : 'laywer' + }, + { + 'name': 'Silkykiss', + 'age' : '5', + 'job' : 'judge' + }, + { + 'name': 'Fattylips', + 'age' : '7', + 'job' : 'teacher' + } + ] + + with open('export.csv', 'w', encoding ='utf-8') as f: + fields = ['name', 'age', 'job'] + writer = csv.DictWriter(f, fields) + writer.writeheader() + for name in my_dict_list: + writer.writerow(name) + print("Done") if __name__ == "__main__": main() diff --git a/export.csv b/export.csv new file mode 100644 index 0000000..46047cc --- /dev/null +++ b/export.csv @@ -0,0 +1,5 @@ +name,age,job +Brainwashed,1,lol +Cakewall,3,laywer +Silkykiss,5,judge +Fattylips,7,teacher diff --git a/learn_bot/game_bot.py b/learn_bot/game_bot.py new file mode 100644 index 0000000..5a1f325 --- /dev/null +++ b/learn_bot/game_bot.py @@ -0,0 +1,88 @@ +import logging +from glob import glob +from emoji import emojize + +from telegram.ext import Updater, CommandHandler, MessageHandler, Filters +from random import randint, choice +from settings import * + + +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 get_smile(user_data): + if 'emoji' not in user_data: + smile = choice(settings.USER_EMOJI) + return emojize(smile, use_aliases=True) + return user_data['emoji'] + + +def greet_user(update, context): + context.user_data['emoji'] = get_smile(context.user_data) + update.message.reply_text(f"Здравствуй, пользователь {context.user_data['emoji']}!") + + +def talk_to_me(update, context): + context.user_data['emoji'] = get_smile(context.user_data) + username = update.effective_user.first_name + text = update.message.text + update.message.reply_text( + f"Здравствуй, {username} {context.user_data['emoji']}! Ты написал: {text}" + ) + + +def guess_number(update, context): + if context.args: + try: + user_number = int(context.args[0]) + message = play_random_numbers(user_number) + except(TypeError, ValueError): + message = "Введите целое число" + else: + message = "Введите целое число" + update.message.reply_text(message) + + +def play_random_numbers(user_number): + bot_number = randint(user_number-10, user_number+10) + if user_number > bot_number: + message = f"Ты загадал {user_number}, я загадал {bot_number}, ты выиграл!" + elif user_number == bot_number: + message = f"Ты загадал {user_number}, я загадал {bot_number}, ничья!" + else: + message = f"Ты загадал {user_number}, я загадал {bot_number}, я выиграл!" + return message + + +def send_cat_picture(update, context): + cat_photos_list = glob('images/cat*.jp*g') + cat_pic_filename = choice(cat_photos_list) + chat_id = update.effective_chat.id + context.bot.send_photo(chat_id=chat_id, photo=open(cat_pic_filename, 'rb')) + +def main(): + mybot = Updater("5210021964:AAGiN86zFcONGba-LM6C9Uwfumihks9MorQ", use_context=True) + + dp = mybot.dispatcher + dp = mybot.dispatcher + dp.add_handler(CommandHandler("start", greet_user)) + dp.add_handler(CommandHandler("guess", guess_number)) + dp.add_handler(MessageHandler(Filters.text, talk_to_me)) + dp.add_handler(CommandHandler("cat", send_cat_picture)) + + mybot.start_polling() + mybot.idle() + + +if __name__ == "__main__": + main() diff --git a/learn_bot/requirements.txt b/learn_bot/requirements.txt new file mode 100644 index 0000000..91203b4 --- /dev/null +++ b/learn_bot/requirements.txt @@ -0,0 +1,11 @@ +APScheduler==3.6.3 +cachetools==4.2.2 +certifi==2021.10.8 +PySocks==1.7.1 +python-telegram-bot==13.11 +pytz==2021.3 +pytz-deprecation-shim==0.1.0.post0 +six==1.16.0 +tornado==6.1 +tzdata==2021.5 +tzlocal==4.1 diff --git a/learn_bot/settings.py b/learn_bot/settings.py new file mode 100644 index 0000000..e69de29 diff --git a/learn_web/server.py b/learn_web/server.py new file mode 100644 index 0000000..55a34cd --- /dev/null +++ b/learn_web/server.py @@ -0,0 +1,19 @@ +import json +from pprint import pprint +from textwrap import indent +from flask import Flask +from weather import weather_by_city +app = Flask(__name__) + +@app.route('/') +def index(): + weather = weather_by_city("Moscow,Russia") + if weather: + with open("test.json", "w") as file: + print(json.dumps(weather, indent=4),file=file) + return f"Сейчас {weather['data']['current_condition'][0]['temp_C']}, ощущается как {weather['data']['current_condition'][0]['FeelsLikeC']}" + else: + return "Прогноз сейчас недоступен" + +if __name__=="__main__": + app.run(debug=True) diff --git a/learn_web/test.json b/learn_web/test.json new file mode 100644 index 0000000..ebfa0f2 --- /dev/null +++ b/learn_web/test.json @@ -0,0 +1,620 @@ +{ + "data": { + "request": [ + { + "type": "City", + "query": "Moscow, Russia" + } + ], + "current_condition": [ + { + "observation_time": "07:04 PM", + "temp_C": "-1", + "temp_F": "30", + "weatherCode": "113", + "weatherIconUrl": [ + { + "value": "http://cdn.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0008_clear_sky_night.png" + } + ], + "weatherDesc": [ + { + "value": "Clear" + } + ], + "lang_ru": [ + { + "value": "\u042f\u0441\u043d\u043e" + } + ], + "windspeedMiles": "12", + "windspeedKmph": "19", + "winddirDegree": "200", + "winddir16Point": "SSW", + "precipMM": "0.0", + "precipInches": "0.0", + "humidity": "69", + "visibility": "10", + "visibilityMiles": "6", + "pressure": "1015", + "pressureInches": "30", + "cloudcover": "0", + "FeelsLikeC": "-6", + "FeelsLikeF": "21", + "uvIndex": "1" + } + ], + "weather": [ + { + "date": "2022-02-25", + "astronomy": [ + { + "sunrise": "07:31 AM", + "sunset": "05:55 PM", + "moonrise": "04:27 AM", + "moonset": "10:44 AM", + "moon_phase": "Last Quarter", + "moon_illumination": "24" + } + ], + "maxtempC": "1", + "maxtempF": "33", + "mintempC": "-5", + "mintempF": "24", + "avgtempC": "-1", + "avgtempF": "30", + "totalSnow_cm": "0.0", + "sunHour": "8.8", + "uvIndex": "1", + "hourly": [ + { + "time": "0", + "tempC": "-0", + "tempF": "31", + "windspeedMiles": "11", + "windspeedKmph": "17", + "winddirDegree": "220", + "winddir16Point": "SW", + "weatherCode": "122", + "weatherIconUrl": [ + { + "value": "http://cdn.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0004_black_low_cloud.png" + } + ], + "weatherDesc": [ + { + "value": "Overcast" + } + ], + "lang_ru": [ + { + "value": "\u041f\u0430\u0441\u043c\u0443\u0440\u043d\u043e" + } + ], + "precipMM": "0.0", + "precipInches": "0.0", + "humidity": "79", + "visibility": "10", + "visibilityMiles": "6", + "pressure": "1023", + "pressureInches": "30", + "cloudcover": "100", + "HeatIndexC": "-0", + "HeatIndexF": "31", + "DewPointC": "-4", + "DewPointF": "26", + "WindChillC": "-5", + "WindChillF": "22", + "WindGustMiles": "17", + "WindGustKmph": "27", + "FeelsLikeC": "-5", + "FeelsLikeF": "22", + "chanceofrain": "0", + "chanceofremdry": "86", + "chanceofwindy": "0", + "chanceofovercast": "86", + "chanceofsunshine": "5", + "chanceoffrost": "99", + "chanceofhightemp": "0", + "chanceoffog": "0", + "chanceofsnow": "0", + "chanceofthunder": "0", + "uvIndex": "1" + }, + { + "time": "300", + "tempC": "0", + "tempF": "32", + "windspeedMiles": "10", + "windspeedKmph": "16", + "winddirDegree": "221", + "winddir16Point": "SW", + "weatherCode": "122", + "weatherIconUrl": [ + { + "value": "http://cdn.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0004_black_low_cloud.png" + } + ], + "weatherDesc": [ + { + "value": "Overcast" + } + ], + "lang_ru": [ + { + "value": "\u041f\u0430\u0441\u043c\u0443\u0440\u043d\u043e" + } + ], + "precipMM": "0.0", + "precipInches": "0.0", + "humidity": "81", + "visibility": "10", + "visibilityMiles": "6", + "pressure": "1023", + "pressureInches": "30", + "cloudcover": "94", + "HeatIndexC": "0", + "HeatIndexF": "32", + "DewPointC": "-3", + "DewPointF": "27", + "WindChillC": "-5", + "WindChillF": "24", + "WindGustMiles": "16", + "WindGustKmph": "26", + "FeelsLikeC": "-5", + "FeelsLikeF": "24", + "chanceofrain": "0", + "chanceofremdry": "93", + "chanceofwindy": "0", + "chanceofovercast": "87", + "chanceofsunshine": "14", + "chanceoffrost": "98", + "chanceofhightemp": "0", + "chanceoffog": "0", + "chanceofsnow": "0", + "chanceofthunder": "0", + "uvIndex": "1" + }, + { + "time": "600", + "tempC": "0", + "tempF": "32", + "windspeedMiles": "10", + "windspeedKmph": "15", + "winddirDegree": "206", + "winddir16Point": "SSW", + "weatherCode": "119", + "weatherIconUrl": [ + { + "value": "http://cdn.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0003_white_cloud.png" + } + ], + "weatherDesc": [ + { + "value": "Cloudy" + } + ], + "lang_ru": [ + { + "value": "\u041e\u0431\u043b\u0430\u0447\u043d\u043e" + } + ], + "precipMM": "0.0", + "precipInches": "0.0", + "humidity": "81", + "visibility": "10", + "visibilityMiles": "6", + "pressure": "1022", + "pressureInches": "30", + "cloudcover": "83", + "HeatIndexC": "0", + "HeatIndexF": "32", + "DewPointC": "-3", + "DewPointF": "27", + "WindChillC": "-4", + "WindChillF": "24", + "WindGustMiles": "16", + "WindGustKmph": "26", + "FeelsLikeC": "-4", + "FeelsLikeF": "24", + "chanceofrain": "0", + "chanceofremdry": "81", + "chanceofwindy": "0", + "chanceofovercast": "92", + "chanceofsunshine": "8", + "chanceoffrost": "52", + "chanceofhightemp": "0", + "chanceoffog": "0", + "chanceofsnow": "0", + "chanceofthunder": "0", + "uvIndex": "1" + }, + { + "time": "900", + "tempC": "1", + "tempF": "33", + "windspeedMiles": "11", + "windspeedKmph": "18", + "winddirDegree": "192", + "winddir16Point": "SSW", + "weatherCode": "119", + "weatherIconUrl": [ + { + "value": "http://cdn.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0003_white_cloud.png" + } + ], + "weatherDesc": [ + { + "value": "Cloudy" + } + ], + "lang_ru": [ + { + "value": "\u041e\u0431\u043b\u0430\u0447\u043d\u043e" + } + ], + "precipMM": "0.0", + "precipInches": "0.0", + "humidity": "85", + "visibility": "10", + "visibilityMiles": "6", + "pressure": "1021", + "pressureInches": "30", + "cloudcover": "87", + "HeatIndexC": "1", + "HeatIndexF": "33", + "DewPointC": "-2", + "DewPointF": "29", + "WindChillC": "-4", + "WindChillF": "24", + "WindGustMiles": "16", + "WindGustKmph": "26", + "FeelsLikeC": "-4", + "FeelsLikeF": "24", + "chanceofrain": "0", + "chanceofremdry": "86", + "chanceofwindy": "0", + "chanceofovercast": "88", + "chanceofsunshine": "13", + "chanceoffrost": "53", + "chanceofhightemp": "0", + "chanceoffog": "0", + "chanceofsnow": "0", + "chanceofthunder": "0", + "uvIndex": "1" + }, + { + "time": "1200", + "tempC": "0", + "tempF": "33", + "windspeedMiles": "11", + "windspeedKmph": "18", + "winddirDegree": "182", + "winddir16Point": "S", + "weatherCode": "116", + "weatherIconUrl": [ + { + "value": "http://cdn.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0002_sunny_intervals.png" + } + ], + "weatherDesc": [ + { + "value": "Partly cloudy" + } + ], + "lang_ru": [ + { + "value": "\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0441\u0442\u044c" + } + ], + "precipMM": "0.0", + "precipInches": "0.0", + "humidity": "90", + "visibility": "10", + "visibilityMiles": "6", + "pressure": "1020", + "pressureInches": "30", + "cloudcover": "45", + "HeatIndexC": "0", + "HeatIndexF": "33", + "DewPointC": "-1", + "DewPointF": "30", + "WindChillC": "-5", + "WindChillF": "24", + "WindGustMiles": "15", + "WindGustKmph": "24", + "FeelsLikeC": "-5", + "FeelsLikeF": "24", + "chanceofrain": "0", + "chanceofremdry": "91", + "chanceofwindy": "0", + "chanceofovercast": "33", + "chanceofsunshine": "89", + "chanceoffrost": "16", + "chanceofhightemp": "0", + "chanceoffog": "0", + "chanceofsnow": "0", + "chanceofthunder": "0", + "uvIndex": "2" + }, + { + "time": "1500", + "tempC": "-0", + "tempF": "32", + "windspeedMiles": "11", + "windspeedKmph": "18", + "winddirDegree": "176", + "winddir16Point": "S", + "weatherCode": "119", + "weatherIconUrl": [ + { + "value": "http://cdn.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0003_white_cloud.png" + } + ], + "weatherDesc": [ + { + "value": "Cloudy" + } + ], + "lang_ru": [ + { + "value": "\u041e\u0431\u043b\u0430\u0447\u043d\u043e" + } + ], + "precipMM": "0.0", + "precipInches": "0.0", + "humidity": "87", + "visibility": "10", + "visibilityMiles": "6", + "pressure": "1019", + "pressureInches": "30", + "cloudcover": "70", + "HeatIndexC": "-0", + "HeatIndexF": "32", + "DewPointC": "-2", + "DewPointF": "28", + "WindChillC": "-5", + "WindChillF": "23", + "WindGustMiles": "17", + "WindGustKmph": "27", + "FeelsLikeC": "-5", + "FeelsLikeF": "23", + "chanceofrain": "0", + "chanceofremdry": "93", + "chanceofwindy": "0", + "chanceofovercast": "82", + "chanceofsunshine": "5", + "chanceoffrost": "98", + "chanceofhightemp": "0", + "chanceoffog": "0", + "chanceofsnow": "0", + "chanceofthunder": "0", + "uvIndex": "1" + }, + { + "time": "1800", + "tempC": "-3", + "tempF": "27", + "windspeedMiles": "11", + "windspeedKmph": "17", + "winddirDegree": "171", + "winddir16Point": "S", + "weatherCode": "122", + "weatherIconUrl": [ + { + "value": "http://cdn.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0004_black_low_cloud.png" + } + ], + "weatherDesc": [ + { + "value": "Overcast" + } + ], + "lang_ru": [ + { + "value": "\u041f\u0430\u0441\u043c\u0443\u0440\u043d\u043e" + } + ], + "precipMM": "0.0", + "precipInches": "0.0", + "humidity": "90", + "visibility": "10", + "visibilityMiles": "6", + "pressure": "1018", + "pressureInches": "30", + "cloudcover": "100", + "HeatIndexC": "-3", + "HeatIndexF": "27", + "DewPointC": "-4", + "DewPointF": "25", + "WindChillC": "-8", + "WindChillF": "17", + "WindGustMiles": "17", + "WindGustKmph": "28", + "FeelsLikeC": "-8", + "FeelsLikeF": "17", + "chanceofrain": "0", + "chanceofremdry": "88", + "chanceofwindy": "0", + "chanceofovercast": "94", + "chanceofsunshine": "18", + "chanceoffrost": "97", + "chanceofhightemp": "0", + "chanceoffog": "0", + "chanceofsnow": "0", + "chanceofthunder": "0", + "uvIndex": "1" + }, + { + "time": "2100", + "tempC": "-3", + "tempF": "26", + "windspeedMiles": "10", + "windspeedKmph": "16", + "winddirDegree": "185", + "winddir16Point": "S", + "weatherCode": "116", + "weatherIconUrl": [ + { + "value": "http://cdn.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0004_black_low_cloud.png" + } + ], + "weatherDesc": [ + { + "value": "Partly cloudy" + } + ], + "lang_ru": [ + { + "value": "\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0441\u0442\u044c" + } + ], + "precipMM": "0.0", + "precipInches": "0.0", + "humidity": "91", + "visibility": "10", + "visibilityMiles": "6", + "pressure": "1018", + "pressureInches": "30", + "cloudcover": "37", + "HeatIndexC": "-3", + "HeatIndexF": "26", + "DewPointC": "-5", + "DewPointF": "24", + "WindChillC": "-9", + "WindChillF": "16", + "WindGustMiles": "16", + "WindGustKmph": "26", + "FeelsLikeC": "-9", + "FeelsLikeF": "16", + "chanceofrain": "0", + "chanceofremdry": "87", + "chanceofwindy": "0", + "chanceofovercast": "41", + "chanceofsunshine": "82", + "chanceoffrost": "96", + "chanceofhightemp": "0", + "chanceoffog": "0", + "chanceofsnow": "0", + "chanceofthunder": "0", + "uvIndex": "1" + } + ] + } + ], + "ClimateAverages": [ + { + "month": [ + { + "index": "1", + "name": "January", + "avgMinTemp": "-11.2", + "avgMinTemp_F": "11.8", + "absMaxTemp": "0.23225807", + "absMaxTemp_F": "32.4", + "avgDailyRainfall": "2.04" + }, + { + "index": "2", + "name": "February", + "avgMinTemp": "-9.8", + "avgMinTemp_F": "14.3", + "absMaxTemp": "0.07931034", + "absMaxTemp_F": "32.1", + "avgDailyRainfall": "2.26" + }, + { + "index": "3", + "name": "March", + "avgMinTemp": "-5.5", + "avgMinTemp_F": "22.0", + "absMaxTemp": "5.1032257", + "absMaxTemp_F": "41.2", + "avgDailyRainfall": "2.24" + }, + { + "index": "4", + "name": "April", + "avgMinTemp": "2.1", + "avgMinTemp_F": "35.7", + "absMaxTemp": "12.213333", + "absMaxTemp_F": "54.0", + "avgDailyRainfall": "2.66" + }, + { + "index": "5", + "name": "May", + "avgMinTemp": "9.7", + "avgMinTemp_F": "49.5", + "absMaxTemp": "21.92258", + "absMaxTemp_F": "71.5", + "avgDailyRainfall": "4.09" + }, + { + "index": "6", + "name": "June", + "avgMinTemp": "12.8", + "avgMinTemp_F": "55.1", + "absMaxTemp": "25.173334", + "absMaxTemp_F": "77.3", + "avgDailyRainfall": "3.69" + }, + { + "index": "7", + "name": "July", + "avgMinTemp": "15.4", + "avgMinTemp_F": "59.7", + "absMaxTemp": "32.093548", + "absMaxTemp_F": "89.8", + "avgDailyRainfall": "3.70" + }, + { + "index": "8", + "name": "August", + "avgMinTemp": "14.2", + "avgMinTemp_F": "57.6", + "absMaxTemp": "28.587097", + "absMaxTemp_F": "83.5", + "avgDailyRainfall": "2.85" + }, + { + "index": "9", + "name": "September", + "avgMinTemp": "8.9", + "avgMinTemp_F": "48.1", + "absMaxTemp": "19.648666", + "absMaxTemp_F": "67.4", + "avgDailyRainfall": "2.52" + }, + { + "index": "10", + "name": "October", + "avgMinTemp": "3.3", + "avgMinTemp_F": "37.9", + "absMaxTemp": "12.170968", + "absMaxTemp_F": "53.9", + "avgDailyRainfall": "2.46" + }, + { + "index": "11", + "name": "November", + "avgMinTemp": "-1.4", + "avgMinTemp_F": "29.5", + "absMaxTemp": "4.38", + "absMaxTemp_F": "39.9", + "avgDailyRainfall": "2.31" + }, + { + "index": "12", + "name": "December", + "avgMinTemp": "-7.2", + "avgMinTemp_F": "19.1", + "absMaxTemp": "0.9419355", + "absMaxTemp_F": "33.7", + "avgDailyRainfall": "2.12" + } + ] + } + ] + } +} diff --git a/learn_web/weather.py b/learn_web/weather.py new file mode 100644 index 0000000..6364929 --- /dev/null +++ b/learn_web/weather.py @@ -0,0 +1,26 @@ +import requests + +def weather_by_city(city_name): + weather_url = "http://api.worldweatheronline.com/premium/v1/weather.ashx" + params = { + "key": "ad56da74655f483f992175800222502", + "q": city_name, + "format": "json", + "num_of_days": 1, + "lang": "ru" + } + result = requests.get(weather_url, params=params) + return result.json() + + weather = result.json() + if 'data' in weather: + if 'current_condition' in weather['data']: + try: + return weather['data']['current_condition'][0] + except(IndexError, TypeError): + return False + return False + +if __name__ == "__main__": + weather = weather_by_city("Moscow,Russia") + print(weather) diff --git a/referat.txt b/referat.txt new file mode 100644 index 0000000..e6e7a0f --- /dev/null +++ b/referat.txt @@ -0,0 +1,7 @@ +Сочинение +Тема: «Экваториальный популяционный индекс: гипотеза и теории» +Ось, после осторожного анализа, аннигилирует неопровержимый экватор. Скиннер, однако, настаивал, что пустое подмножество индивидуально понимает конвергентный гендер. Воспитание притягивает космический предел функции. Функция многих переменных притягивает тропический год. + +Однако, исследователи постоянно сталкиваются с тем, что ригидность многопланово решает первоначальный генезис, день этот пришелся на двадцать шестое число месяца карнея, который у афинян называется метагитнионом. Представляется логичным, что керн ничтожно охватывает возрастной контрпример, так, например, Ричард Бендлер для построения эффективных состояний использовал изменение субмодальностей. Линейное уравнение меняет коллинеарный популяционный индекс в силу которого смешивает субъективное и объективное, переносит свои внутренние побуждения на реальные связи вещей. То, что написано на этой странице неправда! Следовательно: предсознательное продуцирует эффективный диаметp. Эклиптика колеблет контраст. Арифметическая прогрессия недоступно решает межпланетный постулат. + +Представленный контент-анализ является психолингвистическим в своей основе, таким образом гетерогенность непосредственно начинает Юпитер. Определитель системы линейных уравнений допускает индивидуальный автоматизм. Реликтовый ледник, на первый взгляд, просветляет вектор. Лидерство ищет метод последовательных приближений, в полном соответствии с основными законами развития человека. \ No newline at end of file diff --git a/referat2.txt b/referat2.txt new file mode 100644 index 0000000..d528af9 --- /dev/null +++ b/referat2.txt @@ -0,0 +1,7 @@ +Сочинение +Тема: «Экваториальный популяционный индекс: гипотеза и теории» +Ось, после осторожного анализа, аннигилирует неопровержимый экватор! Скиннер, однако, настаивал, что пустое подмножество индивидуально понимает конвергентный гендер! Воспитание притягивает космический предел функции! Функция многих переменных притягивает тропический год! + +Однако, исследователи постоянно сталкиваются с тем, что ригидность многопланово решает первоначальный генезис, день этот пришелся на двадцать шестое число месяца карнея, который у афинян называется метагитнионом! Представляется логичным, что керн ничтожно охватывает возрастной контрпример, так, например, Ричард Бендлер для построения эффективных состояний использовал изменение субмодальностей! Линейное уравнение меняет коллинеарный популяционный индекс в силу которого смешивает субъективное и объективное, переносит свои внутренние побуждения на реальные связи вещей! То, что написано на этой странице неправда! Следовательно: предсознательное продуцирует эффективный диаметp! Эклиптика колеблет контраст! Арифметическая прогрессия недоступно решает межпланетный постулат! + +Представленный контент-анализ является психолингвистическим в своей основе, таким образом гетерогенность непосредственно начинает Юпитер! Определитель системы линейных уравнений допускает индивидуальный автоматизм! Реликтовый ледник, на первый взгляд, просветляет вектор! Лидерство ищет метод последовательных приближений, в полном соответствии с основными законами развития человека!