Na semana passada vimos uma função curiosa que quase passou despercebida:
int(). O que vimos é que esta função converte o seu argumento num número inteiro. Nada de especial até aqui. No entanto, o pormenor interessante é que o seu argumento pode ser de vários tipos: inteiro, decimal ou cadeia de caracteres. Se tentarmos:
>>> int(4)
4
>>> int(4.7)
4
>>> int('4')
4 |
O resultado vai ser sempre 4, sem nenhum tipo de problema. Com um argumento do tipo decimal, o resultado é o inteiro truncado. Quando o argumento é uma cadeia de caracteres, deve poder traduzir-se diretamente num número inteiro, caso contrário resulta em erro. Por exemplo,
'4 a',
'4.0' ou
'4,0' não vão funcionar. No entanto, há uma exceção: quando o argumento é uma cadeia de caracteres válida para representar um número noutra base, podemos usar esta função para o converter em inteiro de base 10. Por exemplo, 25 em binário (base 2) é 11001, portanto podemos usar int() para converter binário em decimal:
Isto funciona para qualquer base entre 2 e 36. Por exemplo:
>>> int('11001', 24)
345601
>>> int('1abc', 16)
6844
>>> int('ABC', 16)
2748
>>> int('Zx', 36)
1293 |
Porquê até 36? Porque apenas podemos representar números com os 10 dígitos e 26 caracteres (maiúsculas ou minúsculas), o que dá um total de 36.
Mas já que estamos com a mão na massa, vamos ver que outras funções de conversão existem. Para começar, temos
str(), que converte o argumento em cadeia de caracteres:
>>> str(8)
'8'
>>> str(5.2)
'5.2'
>>> str('90')
'90' |
Mais uma vez, o argumento pode ser um número inteiro, um decimal ou uma cadeia de caracteres.
Se quisermos converter o argumento em número decimal, usamos
float():
>>> float(4)
4.0
>>> float('5.2')
5.2
>>> float(8.9)
8.9 |
E para compor o ramalhete de funções de conversão, falta mencionar
complex(). Esta converte uma cadeia de caracteres ou dois números inteiros ou decimais num número complexo:
>>> complex(2,3)
(2+3j)
>>> complex(2.5,7)
(2.5+7j)
>>> complex('2.4-1.5j')
(2.4-1.5j) |
De notar que a cadeia de caracteres não pode conter espaços entre o sinal e as partes real e complexa do número, senão resulta num erro.
Em qualquer uma das funções acima, o argumento pode ser uma variável, como seria de esperar, e o resultado pode ser atribuído a uma variável. Isto é geralmente possível com todas as funções, e as exceções serão sempre referidas.
Muito bem, agora vamos ver duas funções em que uma é o inverso da outra:
chr() e
ord():
>>> chr(65)
'A'
>>> ord('A')
65
>>> chr(10084)
'❤' |
O resultado de
chr() é o
caracter Unicode correspondente ao número inserido (que vai de 0 a 65535), e
ord() resulta no código Unicode do caracter (o argumento só pode ser uma cadeia de 1 caracter).
E para finalizar, três funções que nos permitem obter números noutra base diferente da decimal:
>>> hex(255)
'0xff'
>>> oct(255)
'0o377'
>>> bin(255)
'0b11111111' |
De notar que o resultado é uma cadeia de caracteres. No entanto, os números inteiros também podem ser diretamente representados pelos seus equivalentes em hexadecimal (base 16), octal (base 8) e binário (base 2):
>>> 0xff
255
>>> 0o377
255
>>> 0b11111111
255 |
Finalmente, para esclarecer quaisquer dúvidas: o primeiro símbolo é um zero e não um O, e o 'x', o 'o' e o 'b' podem ser em maiúsculas ou minúsculas.
Sem comentários:
Enviar um comentário