[Resolvido] Erro na codificação UTF-8 no Python 2.6.5

Iniciado por Altair Julião, 27 de Setembro de 2010, 23:41

tópico anterior - próximo tópico

Altair Julião

Olá pessoal, estava fazendo um programa com o seguinte código:

#! /usr/bin/env python
# -*- coding: utf-8 -*-
print ('Digite três números inteiros positivos: ')
a = int(input('a = '))
b = int(input('b = '))
c = int(input('c = '))
limb = b//a
limc = c//a
if a>0 and b>0 and c>0:
   print ('Os múltiplos de', a, 'maiores ou iguais a', b, 'e menores ou igual', c, 'são: ')   
   for m in range (limb, limc+1):
       print (a*m)
else: print ('Dados inválidos')

Alguém sabe porque o python só está mostrando os acentos do primeiro print e do print de else?

Obrigado
Não importa a distro desde que seja GNU/Linux. Viva o Linux e o open source!
Ubuntu 12.10 user
Jundiá - AL

sistematico

Lucas Saliés Brum
Ubuntu User #27150
http://sistematico.org

Altair Julião

Ola Sistematico, tentei com aspas simples e com aspas duplas e o resultado é o sempre o mesmo:

python Documentos/exercicio_3.2.1_1.py
Digite três números inteiros positivos:
a = 2
b = 4
c = 8
('Os m\xc3\xbaltiplos de', 2, 'maiores ou iguais a', 4, 'e menores ou igual', 8, 's\xc3\xa3o: ')
4
6
8

Não importa a distro desde que seja GNU/Linux. Viva o Linux e o open source!
Ubuntu 12.10 user
Jundiá - AL

fpissarra

#3
Retire os parenteses dos "print" que funciona!

"print" statement é diferente de "print" function.

[]s

Altair Julião

Valeu fpissara, tirei os parênteses e funcionou perfeitamente, você poderia explicar a diferença entre print statement e print function?
Não importa a distro desde que seja GNU/Linux. Viva o Linux e o open source!
Ubuntu 12.10 user
Jundiá - AL

fpissarra

Hehe... sem querer ser sacana, e já sendo: Diferença entre print statement e function: Um obedece o charset e o outro não... hehehehe

Sério agora: O statement é incorporado à linguagem e a própria documentação do Python recomenda que seja usado, ao invés da função print. Isso deve ser modificado na versão 3 do python (pelo que li) - quer dizer, o statement continuará lá, mas é possível que recomendem o uso da função ao invés do statement.

[]s

Darcamo

Fiquei curioso e pesquisando descobri que dá para usar a função print. Pode usar assim
print( unicode('Os múltiplos de %s maiores ou iguais a %s e menores ou igual a %s são: ' % (a,b,c), 'UTF8') )