Проблема с модулем pyowm не запускается код

Aibek

Новичок
Пользователь
Мар 5, 2021
5
0
1
Если убрать скорость ветра и влажность то код работает


Вотан код:

Python:
from pyowm import OWM
from pyowm.utils import config as cfg
from colorama import init
from colorama import Fore, Back, Style
 
 # используйте Colorama, чтобы заставить Termcolor работать и на Windows
init()

print( Fore.BLACK)
print( Back.YELLOW)
config = cfg.get_default_config()
config['language'] = 'ru'
 
place = input("Какой город/страна?: ")
print( Back.CYAN)
 
owm = OWM('2302a1072316c2a336ceb0accc9265c9', config)
 
mgr = owm.weather_manager()
observation = mgr.weather_at_place(place)
w = observation.weather
 
# извлечение из словаря dict['key']
temp = w.temperature('celsius')['temp']
speed = w.wind(){'speed'}
 
# w.detailed_status - это строка, не метод
print( "В городе " + (place) + " сейчас " + w.detailed_status + "!")
print( "температура сейчас в районе " + str(temp))
print( "Скорость ветра " + str(speed))
print( "Влажность " + str(w.humidity))
 
# сначала нужна проверка < 20
if temp < 20:
    print( "Сейчас ппц как холодно! оденься очень тепло" )
elif temp < 10:
    print( "Сейчас холодно, желательно одеться по теплее" )  
else:
    print( "Температура нормальная, одевай что хочешь " )
 
Последнее редактирование:

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
929
207
43
20
Москва
Прикольная программа
Замените speed = w.wind(){'speed'} на speed = w.wind()['speed'] и все заработает
 

Aibek

Новичок
Пользователь
Мар 5, 2021
5
0
1
Прикольная программа
Замените speed = w.wind(){'speed'} на speed = w.wind()['speed'] и все заработает


Спасибо что ответили!
Я уже решил проблему с этим, но возникла новая проблема
Я хочу соединить два кода, добавив эту функцию к телеграм боту
Но выходит ошибка.



Вотан код пагоды:

Python:
from pyowm import OWM
from pyowm.utils import config as cfg
from colorama import init
from colorama import Fore, Back, Style
 
 # используйте Colorama, чтобы заставить Termcolor работать и на Windows
init()
print( Fore.BLACK)
print( Back.YELLOW)
config = cfg.get_default_config()
config['language'] = 'ru'
 
place = input("Какой город/страна?: ")
print( Back.CYAN)
 
owm = OWM('2302a1072316c2a336ceb0accc9265c9', config)
 
mgr = owm.weather_manager()
observation = mgr.weather_at_place(place)
w = observation.weather
 
# извлечение из словаря dict['key']
temp = w.temperature('celsius')['temp']
speed = w.wind()['speed']
 
# w.detailed_status - это строка, не метод
print( "В городе " + (place) + " сейчас " + w.detailed_status + "!")
print( "температура в районе " + str(temp))
print( "Скорость ветра " + str(speed))
print( "Влажность " + str(w.humidity))
 
# сначала нужна проверка < 20
if temp < 20:
    print( "Сейчас ппц как холодно! оденься очень тепло" )
elif temp < 10:
    print( "Сейчас холодно, желательно одеться по теплее" )  
else:
    print( "Температура нормальная, одевай что хочешь " )


Вотан телеграм бот:
(эхо)


Python:
import telebot

bot = telebot.TeleBot("1732855264:AAGYkxxK_sPhcBi_5jzYYi72DTOWfqx6jFY")

@bot.message_handler( content_types=['text'] )
def send_echo( message ):
    bot.send_message(message.chat.id, message.text)

bot.polling( none_stop = True )


И вот как я попытался сделать:

Python:
from pyowm import OWM
from pyowm.utils import config as cfg
import telebot

owm = OWM('2302a1072316c2a336ceb0accc9265c9', config)
bot = telebot.TeleBot("1732855264:AAGYkxxK_sPhcBi_5jzYYi72DTOWfqx6jFY")

@bot.message_handler( content_types=['text'] )
def send_echo( message ):
    mgr = owm.weather_manager()
    observation = mgr.weather_at_place( message.text )
    w = observation.weather
    
    # извлечение из словаря dict['key']
    temp = w.temperature('celsius')['temp']
    speed = w.wind()['speed']

    # w.detailed_status - это строка, не метод
    answer = "В городе " + message.text + " сейчас " + w.detailed_status + "!" + "\n"
    answer += "температура в районе " + str(temp) + "\n\n"

    # сначала нужна проверка < 20
    if temp < 20:
        answer += "Сейчас ппц как холодно! оденься очень тепло" 
    elif temp < 10:
        answer += "Сейчас холодно, желательно одеться по теплее"
    else:
        answer += "Температура нормальная, одевай что хочешь" 
   
     bot.send_message(message.chat.id, message.text)

bot.polling( none_stop = True )


Не получается коректно соединить
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
929
207
43
20
Москва
попробуйте выделить код погоды в отдельную функцию, которая принимала бы на вход город/страну и возвращала погоду
в эхо боте замените отправку message.text на func(message.text) - где func ваша функция погоды
 

Aibek

Новичок
Пользователь
Мар 5, 2021
5
0
1
попробуйте выделить код погоды в отдельную функцию, которая принимала бы на вход город/страну и возвращала погоду
в эхо боте замените отправку message.text на func(message.text) - где func ваша функция погоды

Блин извините пожалуйста! Можете показать как это сделать? ато я не совсем понял
 

Форум IT Специалистов