Não sei se tem algo haver. Mas to colocando um contador com a variável “i”. Desta forma i = i + 1
, mas ele fica louco. Começa em 1, depois vai pra zero, outra hora vai pra 3. Não segue uma sequencia tipo 1, 2 ,3 ,4…
Achei que fosse a forma de colocar i = i + 1
, então troquei por i+=1
, não resolveu nada. Então mudei o nome da variável por “incremento” e funcionou.
Não tem outra variável com a letra "i"no código.
Pode colocar o trecho de código onde isso acontece? Com o problema acontecendo.
As vezes é algo simples que não estou vendo. Testa assim, insira uns 2 clientes, depois manda imprimir e volte a inserir outro cliente. O contador não é sequencial. Mas se mudar o nome da variável, funciona normal.
Contas = {'cod': [], 'saldo': [], 'tr': []}
Clientes = {'cod': [], 'nome': [], 'tel': [], 'cc': []}
numClientes = 0
i = 1
ok1 = True
while ok1:
print("")
print("1 - Inserir novo cliente")
print("2 - Imprimir lista de clientes")
print("6 - Sair")
menuCliente = input("\nDigite o numero da opçao desejada: ")
## Sair do menu cliente ----------------------------------------------------------------------//
if menuCliente == '6':
ok1 = False
## 1 - Inserir novo cliente ------------------------------------------------------------------//
if menuCliente == '1':
if numClientes < 50:
cod = int(i)
nome = input("Informe o nome do cliente: ")
tel = input("Informe o telefone do cliente: ")
cc = input("Informe o numero da conta corrente do cliente: ")
pdeposito = input("Informe o valor do deposito inicial: ")
pdeposito = float(pdeposito)
Clientes['cod'].append(cod)
Clientes['nome'].append(nome)
Clientes['tel'].append(tel)
Clientes['cc'].append(cc)
Contas['cod'].append(cc)
Contas['saldo'].append(pdeposito)
numClientes = numClientes + 1
i = i + 1
else:
print("\nNumero maximo de clientes atingido!!")
## 5 - Imprimir lista de clientes -----------------------------------------------------//
if menuCliente == '2':
print("Codigo \t Nome \t\t Telefone \t Conta \t Saldo")
print()
for i in range(numClientes):
print("{0} \t {1} \t {2} \t {3} \t {4}".format(Clientes['cod'][i], Clientes['nome'][i],
Clientes['tel'][i], Clientes['cc'][i],
Contas['saldo'][i]))
# FIM do Menu Cliente --------------------------------------------------------------------------//
print("Finalizando...")
O erro ocorre porquê você está reutilizando a variável i dentro de um contexto em que não deveria, ao utilizá-la na iteração para imprimir os clientes ela perde o valor carregado anteriormente pelo ato de cadastrar um cliente.
Altere o nome da variável de iteração do laço e o comportamento vai ficar como você espera!
Exemplo:
for cont in range(numClientes):
print("{0} \t {1} \t {2} \t {3} \t {4}".format(Clientes['cod'][cont], Clientes['nome'][cont], Clientes['tel'][cont], Clientes['cc'][cont], Contas['saldo'][cont]))
1 curtida
Nossa, nem percebi que tinha a variável na iteração do for. Valeu, obrigado.