Ver Mensaje Individual
  #3 (permalink)  
Antiguo 18/08/2009, 09:19
srmagno
Usuario no validado
 
Fecha de Ingreso: septiembre-2008
Ubicación: Cuba
Mensajes: 34
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Ayuda - Cambiar nombre de diccionario

Hola

Crear un diccionario que tenga como nombre el valor de una variable creo que no se puede hacer, por supuesto que tampoco cambiar el nombre a uno ya existente, por lo menos hasta donde yo se. por eso te sugiero la siguiente solucion:

(las llamadas a las funciones que aparecen al final del codigo es para probar que funcionan):
Código PHP:
#! /usr/bin/python

# Otra solucion. No se como cambiar el nombre de un diccionario ya creado o crear uno  a partir del valor de una variable
# te sugiero crees un diccionario de personajes con la siguiente definicion dic_personajes={personaje:dic_cualidades}

dic_cualidades = {'fuerza'0'resistencia'0'destreza'0'inteligencia'0'percepcion'0#Diccionario para las cualidades
dic_Karma={}                  # diccionario  que contiene el total del karma de cada personaje
dic_personajes={}            # diccionario de personajes

def  asigna_Cualidades():

 
# Inicializando variables temporales q seran usadas para el control de las preguntas y crear una copia del diccionario de cualidades

    
Si=1No=0dic_CualidadTemp={}
    
dic_CualidadTemp=dic_cualidades.copy()

    for 
cualidad in dic_CualidadTemp.keys():                # Ciclo para asignar valor a cada cualidad
        
faltaValorCualidad=Si                                           # inicializando la falta de valor para cada cualidad
        
while faltaValorCualidad:                                     # preguntar por el valor de la cualidad mientras no este entre 2 y 10 (o sea, mientras falte)
            
try:
                
dic_CualidadTemp[cualidad]=int(input('Entra el valor de %s ' % (cualidad)))
                if 
not (1<dic_CualidadTemp[cualidad]<=10):                                      # Si el valor de la cualidad no esta entre 2 y 10 
                    
raise ValueError                                                                               # genero un error de valor.
                
else:                                                                                                    # si el valor es correcto paso 
                    
print 'Ok!, puntos asignados para %s' % (cualidad)                    # para la otra cualidad
                    
faltaValorCualidad=No                                                                       # ya no falta valor, asi que deja de preguntar!!
            
except  (ValueErrorNameError):                                                             # error en el valor de la cualidad por lo que 
                
print 'El valor de %s debe estar entre 2 y 10' % (cualidad)         # aun falta el valor de la misma y vuelvo a preguntar
           
    
return dic_CualidadTemp                        # retorno un diccionario de cualidades para un personaje x  

def crea_Personaje():
   
strPersonaje=raw_input('nombre personaje:'
   
dic_personajes[strPersonaje]=asigna_Cualidades()
   
# aqui si quieres puedes verificar que el karma sea igual a 40 y si no es asi volver a exigir los valores para las cualidades del mismo personaje
   # eso te lo dejo a ti para que lo implementes.


def muestra_Cualidades():
   for 
personaje in dic_personajes.keys():
       print 
'%s sus cualidades son:' % (personaje), dic_personajes[personaje

def  KarmaUnPersonaje(personaje):
    
total=0
    
for cualidad in dic_personajes[personaje].keys():
        
total += dic_personajes[personaje][cualidad]
    return 
total

def calcula_KarmaTodos
():
    for 
personaje in dic_personajes.keys():
        
dic_Karma[personaje]=KarmaUnPersonaje(personaje)

def muestra_KarmaTodos():
    for 
personaje in dic_Karma.keys():
        print 
'%s tiene %s de karma' % (personajestr(dic_Karma[personaje]))


if 
__name__=='__main__':
    
otroPersonaje=1
    
while otroPersonaje:
        
crea_Personaje() 
        
otroPersonaje=input('otro personaje (Si=1, No=0)?:')
    
    
calcula_KarmaTodos()     
    
muestra_Cualidades()
    
muestra_KarmaTodos() 
Ojala te sirva de algo, un saludo.