Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Jirp96

#1
Hola!
Como dice el titulo, necesito ordenar("sortear"?) un diccionario.
Tengo un diccionario que contiene las letras del alfabeto en minuscula y sus valores ascii; el par "clave-valor" seria: (letra: CodAscii)

El diccionario lo defino de esta forma(para no anotar letra por letra :xD):

Código (python) [Seleccionar]
from string import letters

let = {}
for x in letters[26:52]: #letters[26:52] es la parte que contiene las letras minusculas
   let[x] = ord(x)
   
del letters


Cuando lo genero, me queda asi:
Código (python) [Seleccionar]
>>>let
{'a': 97, 'c': 99, 'b': 98, 'e': 101, 'd': 100, 'g': 103, 'f': 102, 'i': 105, 'h': 104, 'k': 107, 'j': 106, 'm': 109, 'l': 108, 'o': 111, 'n': 110, 'q': 113, 'p': 112, 's': 115, 'r': 114, 'u': 117, 't': 116, 'w': 119, 'v': 118, 'y': 121, 'x': 120, 'z': 122}


Yo lo que quiero es que quede todo el diccionario ordenado(a,b,c,d,e,f....v,w,x,y,z) en vez de tenerlo asi(a,c,b,e,d....w,v,y,x,z)

___________________________________________________________________

He buscado en gugol, y encontre este codigo(lo encontre aqui)

Código (python) [Seleccionar]
def sortedDictValues1(adict):
   items = adict.items()
   items.sort()
   return [value for key, value in items]


y me genera una lista ordenada, hasta aca todo bien(la lista esta ordenada), pero luego si la convierto a diccionario(perdonen el nombre de las variables  :rolleyes:)
Código (python) [Seleccionar]
>>>l = sortedDictValues1(let)
>>>for i in l:
x[chr(i)] = i

>>>x
{'a': 97, 'c': 99, 'b': 98, 'e': 101, 'd': 100, 'g': 103, 'f': 102, 'i': 105, 'h': 104, 'k': 107, 'j': 106, 'm': 109, 'l': 108, 'o': 111, 'n': 110, 'q': 113, 'p': 112, 's': 115, 'r': 114, 'u': 117, 't': 116, 'w': 119, 'v': 118, 'y': 121, 'x': 120, 'z': 122}


Alguien sabe porque pasa esto? y si hay alguna cosa que estoy haciendo mal, o es algo de python(uso Python 2.66 por las dudas)?

Saludos! y gracias por adelantado
#2
Scripting / [Python]Crear variables.....
21 Mayo 2011, 22:07 PM
Hola!
Practicando un poco con Python(v 3.01) se me ocurrio algo, y no se como hacerlo :xD
Lo pongo como se me ocurrio en python(no funciona, pero es la forma mas clara de hacerlo :xD )

Código (python) [Seleccionar]
for x in range(0, 10):
    y + x = 1
       

La idea con el ciclo for, es crear una variable y1, y2, y3(...),y10 y asignarles un valor a cada una.
No se si se podra hacer asi, o sino tendre que usar diccionarios  :silbar:
Saludos y gracias por adelantado!
#3
Hola!
Tengo una funcion(hecha por mi) para averiguar si un numero es primo(es un poco "rustico" el metodo para averiguarlo, creo yo, pero funciona bien)
Y ahora la estoy usando en otro programa pero me da resultados "algo" extraños, y no entiendo porque :-\
este es el codigo de la funcion:

Código (vbnet) [Seleccionar]
Function isPrime(ByVal num As Integer) As Boolean
       Dim i As Integer
       Dim auxTest As Boolean
       Dim auxCriba(9) As Integer
       auxCriba(0) = 2
       auxCriba(1) = 3
       auxCriba(2) = 5
       auxCriba(3) = 7
       auxCriba(4) = 11
       auxCriba(5) = 13
       auxCriba(6) = 17
       auxCriba(7) = 19
       auxCriba(8) = 23
       auxCriba(9) = 29

       For i = 0 To auxCriba.Length - 1
           If num Mod auxCriba(i) = 0 Then
               isPrime = False
           Else
               auxTest = True

           End If
       Next

       Return auxTest
   End Function


y este el codigo para hallar los numeros en un intervalo dado(por el usuario):
Código (vbnet) [Seleccionar]
   Sub Main()
       Dim Min, Max, maxPrim As Integer
       Dim i, j As Integer
       Dim Primes() As Integer

       Console.Write("Introduce el maximo de primos a mostrar: ")
       maxPrim = CInt(Console.ReadLine())
       Console.Write("Introduce el minimo del intervalo: ")
       Min = CInt(Console.ReadLine())
       Console.Write("Introduce el maximo del intervalo: ")
       Max = CInt(Console.ReadLine())
       Console.WriteLine()
       Console.WriteLine()
       ReDim Primes(maxPrim-1)

       For i = 0 To maxPrim - 1 'este for es para almacenar el numero primo en el array Primes(), en la posicion "i"
           For j = Min To Max - 1 'y este recorrre desde el valor minimo hasta el maximo y va comparando si el valor de "j" es un numero primo(deberia)
               If isPrime(j) = True Then
                   Primes(i) = j
               End If
           Next
       Next

       Console.Write("Los numero primos entre " & Min & " y " & Max & " son: ")
       For i = 0 To Primes.Length - 1
           Console.Write(Primes(i) & " ")
       Next
       Console.ReadLine()
   End Sub


Si pruebo(por ejemplo) Con:
-maxPrim = 10
-min = 1
-max = 20

Me devuelve:

19 19 19 19 19 19 19 19 19 19

y.... la verdad no veo porqué...
Por lo que puedo ver, siempre me devuelve el valor de la variable "max" -1, como esta en el 2do for, asi que creo que el error debe estar ahi
Alguien sabe cual es el problema(o al menos la linea)?
Saludos, y gracias a todos los que se tomaron la molestia de leer
pd: si alguna parte del codigo no se entiende o algo, digan y lo explico
pd2: Me olvide de aclarar, uso Visual Basic 2005 Express
#4
Hola, este es mi primer post aqui(segundo con el de presentacion ;D ) y queria hacer una pregunta sobre un codigo que hice(es una funcion para pasar un numero de decimal a binario)
Esta es la funcion(la hice en base a esto: http://es.wikipedia.org/wiki/Sistema_binario):

Código (vbnet) [Seleccionar]
    Function DecToBin(ByVal numDec As Integer) As String
        Dim ret As String = ""
        Dim arrRet() As Char

        While Not numDec = 1
            ret = ret & CStr(numDec Mod 2)
            numDec = numDec \ 2
        End While

        ret = ret & "1"
        ReDim arrRet(ret.Length())
        arrRet = ret.ToCharArray
        Array.Reverse(arrRet)
        Return arrRet
    End Function


Se que debe haber mil y una cosas que se pueden cambiar en el codigo, pero no se cuales son ;D
por cierto, tengo otra duda(sobre la misma funcion):
-Si yo llamo la funcion asi:
Código (vbnet) [Seleccionar]
        Dim n As Integer
        Console.WriteLine("Introduce un numero en Decimal para Pasarlo a Binario:")
        n = CInt(Console.ReadLine())

No hay ningun problema, y me devuelve el resultado correctamente, pero si llamo la funcion asi:
Código (vbnet) [Seleccionar]
Dim n As Integer
        For n = 0 To 10
            Console.WriteLine("El numero en Binario es: " & DecToBin(n))
        Next

        Console.ReadLine()

No me devuelve ningun resultado y se queda "colgado" el visual basic...
Alguien sabe porque?
Uso Visual Basic Express 2005(.NET framework 2.0) y WinXP
Aclaro tambien que soy "novato" en la programacion, y que
Saludos, y muchas gracias por adelantado a los que se tomaron el tiempo de leer...
pd: Si el codigo es muy largo o si no lo postee bien pido disculpas...