na verdade, o nome da tag é CODE. :blush: Ainda bem que tem alguém que sabe o nome das tags para fazer estas importantíssimas, urgentíssimas e muito relevantes correções. Olá amigos.Sou novo no fórum e também resolvi estudar programação sem fazer nenhum curso. Durante algumas pesquisas que fiz resolvi comprar o livro "USE A CABEÇA - PROGRAMAÇÃO". Este livro ensina de forma bem didática os princípios da programação e utiliza como linguagem padrão o Python. Sei um pouco da situação que o colega nos mostrou no início deste tópico, pois eu também estou passando pela mesma. Ainda não sabemos exatamente usar os termos corretos da programação, mas a dúvida é a seguinte: Foi gerada uma situação onde nós precisamos enviar o valor do grão de café para o diretor de uma empresa que compra café via twitter já que ele está sempre viajando. Após toda a contrução, finalizamos o código da seguinte forma: import urllib.request
import time
def send_to_twitter(msg):
password_manager = urllib.request.HTTPPasswordMgr()
password_manager.add_password("Twitter API","http://twitter.com/statuses","roddrigolago","230420389")
http_handler = urllib.request.HTTPBasicAuthHandler(password_manager)
page_opener = urllib.request.build_opener(http_handler)
urllib.request.install_opener(page_opener)
params = urllib.parse.urlencode({'status': msg})
resp = urllib.request.urlopen("http://twitter.com/statuses/update.json", params)
resp.read()
def get_price():
page = urllib.request.urlopen("http://www.beans-r-us.biz/prices.html")
text = page.read().decode("utf8")
where = text.find('>$')
start_of_price = where + 2
end_of_price = start_of_price + 4
return float(text[start_of_price:end_of_price])
price_now = input("Do you want to see the price now(y/n)?")
if price_now == "y":
send_to_twitter(get_price())
else:
price = 99.99
while price > 4.74:
time.sleep(900)
price = get_price()
send_to_twitter("Buy!") Feito isso, nós processamos o código para saber se estar tudo correto onde irá aparecer a seguinte pergunta: Do you want to see the price now? Quando respondemos "y" uma mensagem deve ser enviada automaticamente para o twitter do diretor da empresa informando o valor atual do grão, mas na verdade está aparecendo o seguinte erro: Traceback (most recent call last): File "C:\Documents and Settings\Rodrigo\Desktop\Exercícios de programação Python\Capítulo 3\Enviando o preço através de mensagem via twitter", line 26, in <module> send_to_twitter(get_price()) File "C:\Documents and Settings\Rodrigo\Desktop\Exercícios de programação Python\Capítulo 3\Enviando o preço através de mensagem via twitter", line 11, in send_to_twitter resp = urllib.request.urlopen("http://twitter.com/statuses/update.json", params) File "C:\Python32\lib\urllib\request.py", line 138, in urlopen return opener.open(url, data, timeout) File "C:\Python32\lib\urllib\request.py", line 364, in open req = meth(req) File "C:\Python32\lib\urllib\request.py", line 1052, in do_request_ raise TypeError("POST data should be bytes" TypeError: POST data should be bytes or an iterable of bytes. It cannot be str. A dúvida é saber porque não estamos conseguindo enviar a mensagem para o twitter. Há algum erro no código? Ficarei grato se puderem ajudar. OBS: Eu copiei e colei o código, mas não apareceram as indentações