Fiz duas funções diferentes, uma que retorna uma nova lista com os valores convertidos para inteiro (por valor) e uma que converte e altera os valores direto na lista dada como argumento (por referência).
def listint_por_valor(lista_str: list[str]) -> list[int]:
"""
Converte todos os elementos de uma lista de strings em inteiros,
retornando uma nova lista com os valores convertidos.
Args:
lista_str: A lista de strings a ser convertida.
Returns:
Uma nova lista de inteiros.
Raises:
ValueError: Se algum elemento da lista não puder ser convertido
para inteiro.
"""
return [int(elemento) for elemento in lista_str]
def listint_por_referencia(lista_str: list[str]) -> None:
"""
Converte todos os elementos de uma lista de strings em inteiros,
modificando a lista original in-place (no local).
Args:
lista_str: A lista de strings a ser modificada. Após a execução,
os elementos desta lista serão inteiros.
Raises:
ValueError: Se algum elemento da lista não puder ser convertido
para inteiro.
"""
for i, elemento in enumerate(lista_str):
lista_str[i] = int(elemento)
def ehlistint(lista) -> bool:
"""
Verifica se todos os elementos em uma lista são do tipo inteiro (int).
Args:
lista: A lista a ser verificada. Pode conter elementos de qualquer tipo.
Returns:
True se todos os elementos forem inteiros, False caso contrário.
"""
for elemento in lista:
if not isinstance(elemento, int):
return False
return True
def main() -> None:
separador: str = '\n------------------------------\n'
# Nesse exemplo utilizamos "listint_por_valor" para converter os itens da lista e retornar uma
# nova lista com os valores convertidos
telefones_str: list[str] = ["11987654321", "21912345678", "31987654321", "11911223344"]
telefones_int: list[int] = []
try:
telefones_int = listint_por_valor(telefones_str)
except ValueError:
print('Erro ao converter elemento da lista para [int]')
exit(1)
print(f'telefones_str = {telefones_str}')
print(f'telefones_int = {telefones_int}')
if ehlistint(telefones_int):
print('Resultado: Todos os números foram convertidos corretamente')
else:
print('Resultado: Houve um erro durante a conversão dos números')
print(separador)
# Nesse outro exemplo utilizamos "listint_por_referencia" para converter os itens da lista diretamente
# na lista que foi indicada como argumento na função
telefones_str: list[str|int] = ["11987654321", "21912345678", "31987654321", "11911223344"]
telefones_int: list[int] = []
try:
listint_por_referencia(telefones_str)
except ValueError:
print('Erro ao converter elemento da lista para [int]')
exit(1)
print(f'telefones_str = {telefones_str}')
print(f'telefones_int = {telefones_int}')
if ehlistint(telefones_str):
print('Resultado: Todos os números foram convertidos corretamente')
else:
print('Resultado: Houve um erro durante a conversão dos números')
if __name__ == '__main__':
main()