Ir ao conteúdo

Posts recomendados

Postado

Boa tarde,

 

Não estou conseguindo muito bem aplicar a lógica aqui,nem sei se e possível ou se estou esquecendo de algo.

 

d = {}
l = [[],[],[]]
count = 1
while True:
    jogador = str(input('Nome jogador: '))
    patidas = int(input('Quantas partidas ele jogou: '))
    l[0].append(jogador)
    l[1].append(patidas)
    for i in range(patidas):
         l[2].append(int(input(f'Quantos gols foram feitos na {i+1}°? ')))
    d['Jogador'] = l[0][:]	 '''Nessa parte para subir ao dicionario,quero ir alimentando ele a cada nova informção no loop'''
    d['Partidas'] = l[1][:]
    d['Gols'] = l[2][:]
    d['Total'] = sum(l[2])
    for v in range(3):
        l[v].clear()
    continua = str(input('Deseja continuar[S/N]? '))
    if continua == 'N':
        break
print(l)
print(d)

A informação ate sobe,mas sobre escreve a antiga, to pensando em guardar tudo primeiro e subir depois, mas gostaria de saber se possível seguir +/- essa logica.

 

E uma continuação de outro exercício:  Crie um programa que gerencie o aproveitamento de um jogador de futebol O programa vai ler o nome do jogador e quantas partidas ele jogou.Depois vai ler quantidade de gols feitos em cada partida.No final,tudo sera guardado em um dicionario,incluindo o total de gols feitos durante o campeonato.(continuação,essa parte que estou tentando) incluindo um sistema de visualização de detalhes do aprovaitamento de cada jogador.

  • Curtir 1
Postado

tem que melhorar o português amigo, demorei 10 minutos para entender.

Como seu programa tem objetivo definido, que é definir e atribuir informações de um jogador, é melhor recomendado criar uma classe jogador, definir os atributos básicos da classe e no final criar um método que retorne seu dicionário.

 

por ex:

não testei o código, mas essa é a lógica de várias possibilidades, se tiver erros é seu dever saber corrigir para aprender.

Se ficou difícil entender, fala onde ou porque que eu explico.

class jogador(jogador,partidas):
	def __init__(self):
		self.dados = {
			"jogador" = jogador,
			"partidas" = partidas
			"Gols" = [int(input(f"quantos Gols foram feitos na partida {partida} ")) for partida in range(partidas)],
			}
	
	def dados(self):
		self.dados["Total"] = sum(self.dados["Gols"])
		return self.dados

 

aí você pode criar vários jogadores usando essa classe, por exemplo:

rogerinho = jogador("rogerinho",5) #isso significa que rogerinho se chama rogerinho e fez 5 partidas
pedrin = jogador("pedrin",3)
roberta = jogador("carlão",2)

 

para pedir os dados aos jogadores, basta fazer, por exemplo:

print(roberta.dados()) #um dicionário será enviado para print
#ou
dicio_da_roberta = roberta.dados() #um dicionário sera apontado pela variável.

#ou se quiser fazer tudo em um, por exemplo:
time = []
for num in range(int(input("quantos jogados você quer nesse time?"))):
  time.append(jogador(input(f"nome do jogador {num}"),int(input("quantas vezes ele jogou?")))

 

nesse ultimo exemplo a lista time vai ter objetos que são os jogadores. Se você pegar, por exemplo: time[2].dados(), vai estar pegando os dados do terceiro jogador do time.

Postado
  Em 21/03/2023 às 03:12, Swalls disse:

 

class jogador(jogador,partidas):
	def __init__(self):
		self.dados = {
			"jogador" = jogador,
			"partidas" = partidas
			"Gols" = [int(input(f"quantos Gols foram feitos na partida {partida} ")) for partida in range(partidas)],
			}
	
	def dados(self):
		self.dados["Total"] = sum(self.dados["Gols"])
		return self.dados
Expandir  

Apesar de conseguir entender +/- como ta funcionando, ainda não estudei essa parte, então fica meio difícil aplicar assim do nada.

  Em 21/03/2023 às 03:12, Swalls disse:
print(roberta.dados()) #um dicionário será enviado para print
#ou
dicio_da_roberta = roberta.dados() #um dicionário sera apontado pela variável.

#ou se quiser fazer tudo em um, por exemplo:
time = []
for num in range(int(input("quantos jogados você quer nesse time?"))):
  time.append(jogador(input(f"nome do jogador {num}"),int(input("quantas vezes ele jogou?")))
Expandir  

 

Vou testar por essa lógica, consigo ler mais fácil kkk, e nunca pensei tambem em fazer o append(aqui quero testar para ver como vai subir e ficar na lista) e range dessa forma.

 

Desculpa se ficou difícil de entender.

Postado

Mudei um pouco o codigo. Até funciona, mas não e bem do jeito que eu gostaria.

Eu consigo vizulizar os passos, mas ta difícil e de passar pro codigo kkkk

 

l = []
l2 = []
d = {}
count = 1

for i in range(int(input('Quantos jogadores: '))):
    l.append(str(input('Nome: '))) , l.append(int(input('Quantas vezes ele jogou? ')))
    for partida in range(l[1]):
        l2.append(int(input('Quantos gols ele marcou: ')))
    l.append(l2[:])
    l.append(sum(l2))
    l2.clear()
    d[f'Jogador{i+1}']= l[:]
    l.clear()
print(d)
print(f'O Jogador {d["Jogador1"][0]} jogou {d["Jogador1"][1]} partidas.')
for i in range(len(d["Jogador1"][2])):
    print(f'Na {count}° ele marcou {i}.')
    count += 1

 

Teria como eu abrir  outro dicionario no Jogador1 com os campos de Nome,Partida,Goals,TGoals. E depois escolher o Jogador1 a chave e jogar o item la dentro??

Ou poderia me dar uma visão de outra forma de fazer.

Postado

@FudoYusei 

 

1. Seu código está com muitos erros, você não deve "visualizar" seu código, deve fazer um Escopo de Software, ou no minimo um passo a passo do que seu software vai fazer.

faça no bloco de notas já que é só uma atividadezinha, por ex:

  • inicia assim
  • em seguida faz isso
  • com isso, faz isso.
  • etc.

em seguinda faça seu código usando cada linha como etapa.

 

2. É regra que variáveis não podem ter menos de 3 caracteres. evite fazer coisas como l = x, y = h, isso é visto como preguiça e descaso com quem está lendo seu código. Coloque nomes objetivos como jogador, jogadas, valor, preco, distribuicao, rel_tributario, etc..

 

3. A sua duvida no final remete a ter um objeto com seus atributos, assim como eu fiz.

você pode fazer sem isso, mas ficaria meio feio. Seria assim:

  • Crie um modelo geral para os dicionários.
  • crie uma lista chamada jogadores
  • Crie uma pergunta de quantas vezes ele jogou.
  • use um laço for no range de quantas vezes ele jogou, para cada item você deve inserir uma cópia do modelo geral.
  • use input e sum para modificar.

 

 

4. O input já retorna uma string, você não precisa por str(input).

 

5. o append só recebe 1 coisa por vez.

 

7. o python é inteligente, não precisa fazer igual no C/C++, você não precisa ficar declarando variáveis temporárias para serem limpas e preenchidas durante o código.

 

8. Comentar seu código é uma boa prática no início, na verdade um código limpo não tem comentários, mas você deve ir comentando se não souber deixar o código limpo.

 

Postado

Bom dia,

 

Não tinha vindo a notificação no email 😐

 

  Em 21/03/2023 às 17:34, Swalls disse:

2. É regra que variáveis não podem ter menos de 3 caracteres. evite fazer coisas como l = x, y = h, isso é visto como preguiça e descaso com quem está lendo seu código. Coloque nomes objetivos como jogador, jogadas, valor, preco, distribuicao, rel_tributario, etc..

Expandir  

Aqui voce ta se referindo a eu não dar nome as listas,dicionario e o i??

  Em 21/03/2023 às 17:34, Swalls disse:

4. O input já retorna uma string, você não precisa por str(input).

Expandir  

Eu sei, mas meio que viro costume pra não esquecer.Isso tem algum problema muito grande de colocar mesmo onde e string??

 

  Em 21/03/2023 às 17:34, Swalls disse:

Crie um modelo geral para os dicionários.

Expandir  

Como assim um modelo geral?  Poderia me dar um exemplo?

 

  Em 21/03/2023 às 17:34, Swalls disse:

crie uma lista chamada jogadores

Expandir  

Aqui eu vou receber todos e somente os Nomes dos Jogadores??
 

  Em 21/03/2023 às 17:34, Swalls disse:
  • use um laço for no range de quantas vezes ele jogou, para cada item você deve inserir uma cópia do modelo geral.
  • use input e sum para modificar.
Expandir  

Aqui no caso e para pegar os gols e depois o total de gols certo?

Como assim copia??
input em que aqui?

 

Outra duvida, ai no caso eu vou armazena na lista e depois pro dicionario ou ja vai tudo ao dicionario??

Postado

Desculpa estar incomodando tanto 

 

Mudei um pouco, acho que agora to me aproximando um pouco eu espero kkkk

 

d = {} # desculpa pelo d e i, mas e muito generico eu escrever dicionario para d e contador para i, ele so ta servindo pra começar o loop e escrever a quantidade, não tenho um nome claro pra isso. 
gols = []

while True:
    entrada1 = input('Digite o nome: ')
    partida = int(input('Digite quantas partidas: '))
    for i in range(partida):
        gols.append(int(input(f'Digite quantos goals na {i+1}: ')))
    d[entrada1] = {'Partidas':partida , 'Gols': gols[:] , 'TGols': sum(gols)}
    gols.clear() #acho que voce quis dizer isso de ficar apagando a lista ne, mas tem outra forma de armazena a informação pra cada jogador sem precisar apagar??
    continua = input('Deseja continuar [S/N]? ').upper()
    if continua == 'N':
        break
print(d)

 

Poderia validar se to chegando proximo?

 

Entrada1 era para estar nome, esqueci de mudar

Postado

@FudoYusei de longe, a forma como está guardando informações está se aproximando da estrutura JSON(olha uma imagem no google).

alerta de mucho texto abaixo, mas se acostuma que TI é datasheet dia e noite.

mas há vários erros, por exemplo: d[entrada1] = ...

  • dicionários não podem ter repetição, então era para você ter usado o i do laço for, caso contrário você só está editando os dados, o correto é algo como isso:  d[f"entrada{i}"] = ... (repara como não dá para entender o contexto deixando só um d)
  • esqueceu das aspas também, afinal a chave tem que ser de algum tipo de dado.
  • não use a letra i no laço for! isso é um costume feio que os professores de C dão aos iniciantes, faça, por exemplo, for jogos in partidas. E se o item sendo iterado não tiver utilidade dentro do for, use o símbolo _ (underscore/underline), ficando assim: for _ in partidas.
  • partidas está no plural, mas você só vai conseguir por um item dentro dele (ou uma lista/dicionario/tupla mas vai ficar complexo na hora de puxar dados.

resolvendo sem mudar sua lógica, ficaria assim:

não testei, se tiver erros de sintaxe é com você reparar, eu apenas te dei a lógica.

#nesse código não mudei nada, apenas finalizei sua lógica.
jogadores = {} #criando o dicionário jogadores para armazenar os jogadores.


while True:
	nome = input("Digite o nome do jogador: ") #pegando o nome do jogador
	n_partidas = int(input(f"Digite quantas partidas o jogador(a) {nome} jogou: ")) #pegando o número de partidas.
	jogadores[nome] = {} #criando uma chave com um dicionário só para o jogador que está na variavel nome.
	for i in range(n_partidas):
		jogadores[nome][f"partida {i+1}"] = int(input(f"Digite quantos goals na {i+1}: ")) #cada partida será uma chave contendo os gols dela.

		#não use S/N! vai ter usuário retardado que vai digitar sim, s, y, yes, sin, ou qualquer ***** afim. mas repare que a palavrão não, começa com n independente de como você abrevie ou até mesmo na maioria dos idiomas. por isso é melhor saber se começa com N.
		if "N" in input("deseja inserir mais um jogador?")[0].upper():  #repare que independente do que a pessoa escreva, provavelmente vai começar com n, por isso o indice 0, o .upper() faz a letra ficar maiuscula mesmo se vier minuscula.
			break
print(jogadores)


 

edit: o uso do _ em python, indica que sua variável,método, classe ou o quer que esteja usando é privada/protegida, fazendo com que o programador olhe e saiba que não precisa se preocupar em saber onde ela vai ser usada.

para fazer a soma dos gols de um jogador, você pode usar os métodos que os dicionários tem, por exemplo pegar o .values() (valores), por exemplo: jogadores["fernando"].values()

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Mostrar mais  

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

Mostrar mais  
×
×
  • Criar novo...