4
respostas

Caracteres especiais

Boa tarde, tenho 2 perguntas: 1) O código, funcionou perfeitamente, porém no teminal quando ele executou perguntas do "print" e na string tinha a palavra "VOCÊ", apareceu na tela (terminal) "Qual nome voc├¬ gostaria de alterar?", muito provalvelmente por conta do circunflexo na string. Contudo no cadastro dos nomes, entrou normalmente? - Pergunto fiz algo errado???

2) #-- coding: UTF-8 -- Até o momento eu havia entendido que o "#" era para comentário, contudo quando eu o retiro, o teminal apresenta o seguinte erro:

C:\Users\pravd\Desktop\Python>python teste.py File "teste.py", line 1 -- coding: UTF-8 -- ^ SyntaxError: invalid syntax

C:\Users\pravd\Desktop\Python>

Gostaria de entender se de fato o "#" é para comentário, e qual deve ser a linha de comando PURA, a ser colocada no editor (com ou sem #). Na minha cabeça está assim se é um comentário ele não está tratanto a questão da acentuação, então qual é a codificação correta, se ele dá erro quanto excluo o #

========================================== Segue resultado de alguns testes

Listando nomes! Maurício Jandira Célia Antônio Selma Vânia Tânia Claudinéia Lourival Digite: 1 para cadastrar, 0 para terminar, 2 para listar, 3 para remover, 4 para alterar 4 Qual nome voc├¬ gostaria de alterar? Antônio Digite novo nome: Antônio Carlos Digite: 1 para cadastrar, 0 para terminar, 2 para listar, 3 para remover, 4 para alterar 2 Listando nomes! Maurício Jandira Célia Antônio Carlos Selma Vânia Tânia Claudinéia Lourival

==================================================== Segue o código

-- coding: UTF-8 --

def cadastar(nomes): print 'Digite o nome:' nome = raw_input() nomes.append(nome)

def menu(): nomes = [] escolha = '' while(escolha != '0'): print 'Digite: 1 para cadastrar, 0 para terminar, 2 para listar, 3 para remover, 4 para alterar' escolha = raw_input()

if(escolha == '1'): cadastar(nomes) if(escolha == '2'): listar(nomes) if(escolha == '3'): remover(nomes) if(escolha == '4'): alterar(nomes)

def listar(nomes): print 'Listando nomes!' for nome in nomes: print nome

def remover(nomes): print 'Que nome você quer remover?' nome = raw_input() nomes.remove(nome)

def alterar(nomes): print 'Qual nome você gostaria de alterar' nome_a_alterar = raw_input() if(nome_a_alterar in nomes): posicao = nomes.index(nome_a_alterar) print 'Digite novo nome:' nome_alterado = raw_input() nomes[posicao] = nome_alterado

menu()

4 respostas

Catia, no Python 2 essa linha # -*- coding: utf-8 -*- é necessária no começo dos arquivos para caracteres unicodes funcionarem. Se você excluir essa linha toda verá que não aparecerá voc├¬, mas sim um erro :(. O problema agora é no console do Windows. Se não me engano, isso é consertado no Python 3, você pode testar...

Abraços!

PS: Uma dica - se você colocar seu código entre ```, assim:

```
# código
```

O código fica formatado bonitinho!

Oi Yan

Não deu certo!! No início do curso (em video) eles pedem para não utilizar p Python3 por conta de muita discussã, divergencia e que as versões 2.* são mais estáveis! Então como fica isso?

Catia, então, essa é uma boa discussão, mas eu jamais diria para não utilizar o Python 3. Na verdade, se você está começando a estudar Python agora, o ideal seria focar direto na terceira versão major da linguagem, já que logo a versão 2.x será descontinuada de uma vez por todas. Já é recomendado que, se possível, migremos nossos códigos em Python 2 para Python 3. Entretanto, Python 2 ainda é massivamente utilizado, então pode ser importante conhecer as características dessa versão também. Já que você já está fazendo esse curso, minha recomendação é que o acabe, mesmo com esse probleminha infeliz do encoding :( e depois passe para os de Python 3. Que tal?

Logo logo vai sair um post no Blog da Caelum sobre as preincipais diferenças entre as duas versões. O post tá bem legal, quando sair eu linko aqui :D.

No meu código não funcionou usando o

--coding: UTF-8 --

e sim, usando o:

--coding: ANSI --