Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Bug] erro no codigo

nesse código abaixo primeiro deve definir um numero de jogadores e depois deve definir o nome dos jogadores, porem a função input() qui e para definir o numero de jogadores fica si repetindo. por exemplo ela pergunta "qual o numero de jogadores? " ai eu digito um numero ai ela pergunta de novo "qual o numero de jogadores? " ai eu digito o numero de novo ai sim o codigo segue para a proxima função. eu queria saber o motivo de tar repitindo e como resolver.

def numero_de_participantes():
    numero_de_jogadores = int(input("qual o numero de jogadores? "))

    if(numero_de_jogadores < 3):
        print("selecione 3 ou mais jogadores")
        numero_de_participantes()
    return numero_de_jogadores

def criando_lista_de_jogadores():
    jogadores = []

    for jogador in range(1, numero_de_participantes() +1):
        nome_do_jogador = input("qual o nome do jogador {}? ".format(jogador))
        jogadores.append(nome_do_jogador)

numero_de_participantes()
criando_lista_de_jogadores()
1 resposta
solução!

Olá Felipe! Tudo ok contigo?

O problema ocorre porque você está chamando a função numero_de_participantes() dentro do loop for da função criando_lista_de_jogadores().

Uma solução para resolver esse problema é armazenar o número de jogadores em uma variável fora do loop for e utilizá-la na função criando_lista_de_jogadores(). Dessa forma, a função numero_de_participantes() será chamada apenas uma vez.

Segue uma possível solução para o seu código:

def numero_de_participantes():
    numero_de_jogadores = int(input("qual o numero de jogadores? "))

    if(numero_de_jogadores < 3):
        print("selecione 3 ou mais jogadores")
        numero_de_participantes()
    return numero_de_jogadores

def criando_lista_de_jogadores():
    jogadores = []
    numero_jogadores = numero_de_participantes()

    for jogador in range(1, numero_jogadores + 1):
        nome_do_jogador = input("qual o nome do jogador {}? ".format(jogador))
        jogadores.append(nome_do_jogador)

numero_de_participantes()
criando_lista_de_jogadores()

Dessa forma, a função numero_de_participantes() será chamada apenas uma vez, armazenando o número de jogadores em numero_jogadores, que será utilizado no loop for da função criando_lista_de_jogadores().

Espero ter ajudado, abraços e bons estudos!