Ver Mensaje Individual
  #5 (permalink)  
Antiguo 18/08/2009, 18:13
AxL456
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda - Cambiar nombre de diccionario

hola...

No lei completamente el codigo que escribiste solo lo mire por encima pero me imagino que lo que deseas hacer es crear un diccionario que tiene unas cualidades predeterminadas (fuerza, inteligencia, etc) y asignar un valor a cada una de dichas cualidades cumpliendo con lo siguiente:
  • el valor no debe ser mayor que 10
  • el valor no debe ser menor que 2

pero te interesa tambien que dicho diccionario este relacionado con el nombre de "personaje" que va a ingresar el usuario..

como comenta srmagno no creo que se puedas hacer que el usuario te pase el nombre de una variable, pero lo que si puedes es usar diccionarios como valores dentro de un diccionario.

un ejemplo seria lo siguiente:
Código python:
Ver original
  1. base_datos = {'nombre_usuario1': {'inteligencia': 5, 'fuerza': 5, 'destreza': 5, 'percepcion': 5},
  2.              'nombre_usuario2': {'inteligencia': 6, 'fuerza': 6, 'destreza': 6, 'percepcion': 6}}

de esa manera estas creando un diccionario que dentro tiene a todos los nombres de personajes y sus respectivos valores son un diccionario con las "habilidades".


aqui te dejo el codigo para hacerlo(ojo pruebalo porque yo tambien estoy iniciandome en python ):
Código Python:
Ver original
  1. base_datos={}
  2. cualidades = {"fuerza":0, "destreza":0, "inteligencia":0, "percepcion":0}
  3.  
  4. def asignar_valores():
  5.     temp = {}
  6.     for x in cualidades:
  7.         while True:
  8.             try:
  9.                 valor = int(raw_input("%s: " %x))
  10.             except:
  11.                 print "Debe ingresar un valor numerico"
  12.             else:
  13.                 if valor > 10:
  14.                     print "%s debe ser menor o igual que 10" % x
  15.                 elif valor < 2:
  16.                     print "%s debe ser mayor o igual que 2" % x
  17.                 else:
  18.                     temp[x] = valor
  19.                     break
  20.     return temp
  21.  
  22. nombre_personaje = raw_input("ingrese nombre de personaje: ")
  23. base_datos[nombre_personaje]= asignar_valores()
  24.  
  25.  
  26. #print base_datos


solo le faltaria anexar al final la parte donde sumas la cantidad de puntos para ver si es igual, mayor o menor a 40 pero eso ya sabes como agregarlo

PD: como bien dijo razpeitia no uses eval para evaluar lo que ingresa el usuario porque es peligroso, si el usuario ingresa un codigo escrito en python ese codigo se va a ejecutar en el equipo

PD: el codigo esta escrito en python 2.5 por lo que tienes que modificarlo para python 3.1 (raw_input seria input solamente y el print va dentro de parentesis si no me equivoco)