GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Criar variavel de acordo com outra variável


#1

Oi, galera.
É o seguinte: estou fazendo um trabalho em Python para a faculdade em que eu tenho que criar uma variação do jogo “adedonha”, e o meu problema é:
Eu tenho uma variavel N que recebe o número de jogadores que irão participar da brincadeira (os nomes ficam salvam numa array). Conforme o código vai rolando, durante a função defineSequencia, em que o programa lê a quantidade de dedos que cada jogador colocou, eu preciso de uma forma de criar uma quantidade de variáveis que variem junto com N.

Por exemplo:
Se houvessem sempre somente dois jogadores, eu usaria o seguinte código:

def defineSequencia(p): #Repete a quantidade de sequências.
    j = int(1)
    while j <= p: #p é a quantidade de partidas que foi determinado pelo usuário.
        x, y = map(int, input("Digite a quantidade de dedos separados por um espaço: ").split())
        v = ((x + y)%n)
        print(v)
        j += 1

Porém, como o enunciado do exercício fala que a quantidade de jogadores pode variar de 2 até 100, eu preciso de uma forma de fazer com que x e y sejam gerados automaticamente (junto com outras variaveis) para salvar os dedos e, então, poder realizar a operação para definir o vencedor.

Espero que possam me ajudar e que não tenha ficado muito confuso.


#2

Não entendo muito de Python, mas por que não usar uma lista/array? Se a quantidade de elementos é variável, é o jeito mais simples que me ocorre.

Numa pesquisa rápida, vi que a função map pode retornar para um array, então você substituiria x e y por um array. Para o cálculo de v, faça uma função que retorne os elementos somados e calcule o resto pelo divisor n. Algo assim:

arrayqualquer = map(int, input("Digite a quantidade de dedos separados por um espaço: ").split())
v = calculaValorDeVAPartirDeUmVetor(arrayqualquer, n)
print(v)
j += 1

Abraço.


#3

A ideia funciona, mas sempre que eu peço para imprimir a lista, ele me responde da seguinte forma:

<map object at 0x0000019E06668668>


#4

Você está usando Python 3.algumacoisa, certo?

Use a função list, que torna seu map um list:

arrayqualquer = list(map(int, input("Digite a quantidade de dedos separados por um espaço: ").split()) )

Vi aqui: https://stackoverflow.com/questions/1303347/getting-a-map-to-return-a-list-in-python-3-x

Pesquisando no Google o termo “Python map object at”.

Abraço.


#5

Funcionou!!
Valeu, me ajudou demais!