TransWikia.com

É possível incluir mais de uma variável por 'input' no Python?

Stack Overflow em Português Asked by Fagner Junqueira on January 4, 2022

Em C eu posso fazer isso:

printf("Informe 3 numeros');
scanf("%d%d%d", &a,&b,&c);

Posso fazer um processo similar em Python? Fiz umas buscas e encontrei que posso fazer assim:

a,b,c = input('informe 3 numeros: ').split("")
print(a,'',b,'',c)

Mas está dando o seguinte erro:

File "C:/Users/Administrador/Google Drive/Exercicios Python/embaralha 
palavra.py", line 1, in <module>   a,b,c = input('informe 3 numeros:
').split("") ValueError: empty separator 

3 Answers

Se a sua intenção for capturar vários valores a partir de um só input(), você pode utilizar uma das linhas de comandos listadas abaixo:

Exemplo 1:

valores = list(map(int, input('Digite todos os valores: ).split()))

Exemplo 2:

valores = [int(x) for in input('Digite todos os valores: ).split()]

Exemplo 3:

a, b, c = [int(x) for in input('Digite todos os valores: ).split()]

Observe que quando executamos cada um dos 3 exemplos listados acima, recebemos a seguinte mensagem: Digite todos os valores: . Neste momento devemos digitar todos os valores pretendidos, na mesma linha, separados por um só espaço e pressionar enter.

Em ambos exemplos, os valores capturados pelo input() são armazenados em uma lista.

Nos dois primeiros exemplos podemos digitar uma quantidade indefinida de valores, ou seja, quantos valores quisermos.

No terceiro exemplo, só poderemos digitar a quantidade de valores que seja igual à quantidade de variáveis que, porventura, esteja do lado esquerdo do sinal de atribuição - que no Pytho é representado pelo sinal =. Neste caso específico, só poderemos digitar 3 valores.

Além disso, observe que para utilizarmos uma das três formas listadas acima, precisamos identificar o tipo de variável desejada. Nos exemplos citados acima, utilizei apenas o tipo inteiro - int. Porém, poderemos utilizar outros tipos de variáveis. Para isso, basta substituir o tipo int, pelo tipo desejado.

Answered by Solkarped on January 4, 2022

ValueError: empty separator

Ao inves de .split(""), faça .split(" ")

So lembrando que o input retorna uma string, ou seja, se quiser usar como operandos tera que transformar para inteiro ou float. E tambem neste tipo de entrada a validação tem que ser feita, pois o usuario pode por 3 espaços entre cada numero, ai vai da merda...

Answered by Fabricio Paiva on January 4, 2022

Não é possível, a função input() só retorna um valor sempre. Inclusive o que está tentando fazer não é retornar 3 dados separados, está retornando um valor e o está quebrando em 3 logo depois do input() (o input() já foi executado e trouxe uma só string) com o seu resultado, e aí pode jogar nas variáveis diversas.

O erro é que está tentando quebrar os dados com um separador vazio, isto não dá certo, teria que por um espaço:

a, b, c = input('informe 3 numeros: ').split(" ")
print(a, '', b, '', c)

Veja funcionando no ideone. E no repl.it. Também coloquei no GitHub para referência futura.

Mas isto só funciona se a pessoa digitar certinho, com os espaços corretos. Portanto não faça assim, faça 3 input()s e seja feliz. Mesmo em C é melhor assim.

E note que em C já guarda como inteiro (na forma mostrada), em Python ainda terá um texto, e se quer número teria que fazer a conversão individualmente em cada variável.

Answered by Maniero on January 4, 2022

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