TransWikia.com

Qual a diferença entre essas formas de execução de comando?

Stack Overflow em Português Asked by Rebeca Nonato on November 8, 2021

Esses comandos em Python:

lista = eval('[' + input("Digite sua lista: ") + ']')

E esse:

lista = input("Digite sua lista: ")

E esse:

lista = [int(x) for x in input().strip()]

Por que esse último dá o erro abaixo?

ValueError: invalid literal for int() with base 10: ‘,’

One Answer

lista = eval('[' + input("Digite sua lista: ") + ']')

Não use eval() se não dominar profundamente a linguagem e a computação. Em essência não precisa dele.

lista = input("Digite sua lista: ")

Está pedindo para digitar algo e guardar na variável como uma string, não uma lista.

lista = [int(x) for x in input().strip()]

Está criando uma lista (um array de tamanho dinâmico). Isto é chamado compreensão de expressão, então esse laço é executado e o resultado de toda execução do laço, ou seja, todos os passos, são guardados na lista.

Neste caso está pegando a string gerada na digitação do dado (input()) e separando as palavras (strip()) e em cada dado é transformado em um inteiro (int()), esperando que o texto digitado separado por espaços sejam números.

ValueError: invalid literal for int() with base 10: ','

Foi digitado um texto que não pode ser convertido para um número. Eu não gosto dessa estratégia, mas em Python costuma-se capturar exceção quando isto ocorre para corrigir.

Answered by Maniero on November 8, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP