Stack Overflow em Português Asked by user93774 on December 28, 2021
Tenho quatro variáveis [t1, t2, t3, t4], e cada uma delas foi definida como um string anteriormente.
t1 = 'A vida vai ficando cada vez mais dura perto do topo.'
t2 = 'A moralidade é a melhor de todas as regras para orientar a humanidade.'
t3 = 'Aquilo que se faz por amor está sempre além do bem e do mal.'
t4 = 'Torna-te aquilo que és.'
Se depois no código, eu quiser chamar cada uma dessas variáveis de uma só vez, pensei em fazer desta forma:
for i in range(1,5):
print(ti)
Assim, o i seria substituido pelos números 1 a 4 e então chamaria t1, t2, t3, t4 subsequentemente. Obviamente, esse método não funciona. De fato é possível criar uma lista com os textos e então fazer:
lista = [t1, t2, t3, t4]
for i in range(1,5):
print(lista[i])
Porém torna-se antiprático criar uma lista quando o número de variáveis é muito elevado. Minha pergunta é: existe algum modo de chamar múltiplas variáveis previamente definidas de uma vez, como funcionaria na repetição ‘for’ idealizada acima?
Em Python, em geral, quando se quer usar os _nomes_das_variáveis como variáveis em si, a recomendação é que se use um dicionário.
Ou seja, em vez de ter "f1, f2, f3, f4", você poderia ter um dicionário f
com as chaves 1, 2, 3 ,4
.
Mas claro que há outras formas - no caso você quer apenas evitar ter que repetir 4 vezes a mesma linha de código. O que você não está levando em conta é que o for
do Python sempre percorre sequências, e existem várias formas de sequências - não apenas a sequência numérica retornada por range
.
No caso, tudo o que você precisa é:
for var in (f1, f2, f3, f4):
print(var)
Pronto: você cria uma sequência do tipo tupla local com as variáveis desejadas, e cada elmento da tupla é associado à variável do for
- e você evita ter que repetir o print
4 vezes.
NÂO FAÇA ASSIM Mas vou incluir para fins de referência: embora você não deva fazer isso: as próprias variáveis do Python são armazenadas internamente em estruturas do tipo dicionário. Então é possível acessar variáveis programaticamente pelo nome acessando-se esses dicionários que são retornados pela chamada as funções internas globals()
e locals()
, respectivamente para variáveis globais e locais.
for i in range(1, 5):
print(globals()[f"f{i}"])
Answered by jsbueno on December 28, 2021
Não tenho certeza se entendi sua dúvida, mas pelo que eu entendi você poderia usar um dicionário desta forma:
d = {'f1':1,'f2':2,'f3':3,'f4':4}
for x in range(1,5):
print('{0} => {1}'.format('f'+str(x), d['f'+str(x)]))
e imprimir de acordo com sua vontade. Quando fosse adicionar novos valores você poderia fazer:
d['f'+str(int(max(d.keys())[1])+1)] = input()
Answered by matheusma37 on December 28, 2021
Não sei se entendi completamente, mas segue aqui uma possível resposta para esse seu problema: Se você tiver uma lista, como por exemplo:
lista = [f1,f2,f3,f4]
Tu pode utilizar a lista diretamente no for:
for i in lista:
print(i)
a saída será:
f1
f2
f3
f4
se quiser o mesmo resultado, mas com o contador, faça:
for cont, i in enumerate(lista):
print(cont)
print(i)
o resultado será:
0
1
2
3
f1
f2
f3
f4
Assim, podemos resolver o seu problema utilizando um desses métodos, citados acima. Se quiser criar um vetor com números, faça:
lista2 = [] #lista vazia
for i in range(5):
lista2.append(i)
print(lista2)
O resultado será:
[0,1,2,3,4]
Espero ter ajudado, caso não tenha sido respondida, por favor reescreva a sua pergunta. vlw!
Answered by Edeson Bizerril on December 28, 2021
Uma opção é usar 'dict comprehensions'. Altere o valor do range e aumente o número de variáveis:
d = {'f' + str(i): 0 for i in range(5)}
Produz a seguinte saída:
{'f0': 0, 'f1': 0, 'f2': 0, 'f3': 0, 'f4': 0}
E para visualizar:
for k, v in d.items():
print(k, v)
Produz:
f0 0
f1 0
f2 0
f3 0
f4 0
Answered by Marcelo Magalhães on December 28, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP