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ú

Mensajes - 0x5d

#171
Cita de: Karcrack en 10 Febrero 2012, 03:27 AM
Tenía un rato libre, así que he reformulado el algoritmo usando la información que hay en Wikipedia. Espero no te moleste :P
Código (python) [Seleccionar]
rut = reversed(map(int,raw_input('RUT ::>')))
m = [2,3,4,5,6,7]

d = sum([n*m[i%6] for i,n in enumerate(rut)])
d %= 11

if (d==1):
    d = 'K'
else:
    d = 11-d
   
print d


Y la versión reducida: (Me encanta reducir código Python :P)
Código (python) [Seleccionar]
d=sum([int(n)*(i%6+2)for i,n in enumerate(raw_input()[::-1])])%11
print'K'if(d==1)else 11-d

Para nada ! es genial saber que usas Python y tienes buen nivel ! :D
El primer código que has usado es también posible reducirlo :
Código (python) [Seleccionar]

# -*- coding: utf-8 -*-
rut = reversed(map(int,raw_input('RUT ::>')))
d = sum([n*range(2,8)[i%6] for i,n in enumerate(rut)])
d %= 11
if (d==1):
    d = 'K'
else:
    d = 11-d
print d

Pero sin duda el segundo está genial ! :D


EDIT:
Ahora en QT4 para matar el tiempo :P
Código (python) [Seleccionar]

# -*- coding: utf-8 -*-
from PyQt4 import QtCore, QtGui
import sys

class ventana_alerta(QtGui.QWidget):
  def __init__(self, parent=None):
    QtGui.QWidget.__init__(self, parent)
    self.resize(283, 31)
    self.setWindowTitle("ALERTA!")

  def message(self, txt):
    self.txt = txt
    self.respuesta = QtGui.QLabel(self.txt, self)
    self.respuesta.setGeometry(10, 10, 260, 17)

class formulario_rut(QtGui.QWidget):

  def __init__(self, parent=None):
    QtGui.QWidget.__init__(self, parent)
    self.setWindowTitle("Digito verificador")
    self.resize(279, 36)
    self.label_rut = QtGui.QLabel("RUT", self)
    self.label_rut.setGeometry(0, 11, 59, 17)
    self.rut = QtGui.QLineEdit(self)
    self.rut.setGeometry(30, 7, 101, 23)
    self.label_verificador = QtGui.QLabel("-", self)
    self.label_verificador.setGeometry(135, 11, 16, 17)
    self.digito = QtGui.QLineEdit(self)
    self.digito.setGeometry(147, 7, 21, 23)
    self.digito.setReadOnly(True)
    self.verificar = QtGui.QPushButton("Verificar", self)
    self.verificar.setGeometry(180, 7, 92, 23)
    self.connect(self.verificar, QtCore.SIGNAL("clicked()"), self.operacion)

  def operacion(self):
    self.rut_valor = str(self.rut.text())
    if len(self.rut_valor) < 8 and len(self.rut_valor) > 9:
      creacion_alerta.message("Ingresa un rut valido por favor")
      creacion_alerta.show()
    else:
      rut = []
      ingresar = [rut.append(numeros) for numeros in self.rut_valor]
      rut.reverse()
      recorrido = 2
      multiplicar = 0
      for x in rut:
        multiplicar+=int(x)*recorrido
        if recorrido==7: recorrido = 1
        recorrido+=1
      modulo = multiplicar%11
      resultado = 11-modulo
      if resultado == 11: digito=0
      elif resultado == 10: digito="K"
      else: digito=resultado
      self.digito.setText(str(digito))

run = QtGui.QApplication(sys.argv)
creacion_alerta = ventana_alerta()
creacion_formulario = formulario_rut()
creacion_formulario.show()
run.exec_()

#172
Hola, buen día !

Tras unas merecidas vacaciones vengo de vuelta con cosas para programar, con la cabeza ya más despejada :P.

Visitando el blog del colega <a href="http://twitter.com/isseu">@isseu</a>, me encuentro con un artículo llamado "Como sacar dígito verificador de rol único tributario (RUT)". Me pareció interesante y me puse a leer atentamente su explicación y me animé a pasarlo a Python, en su blog está en javascript, pero yo como buen amante de Python lo hice en él :)

Código (python) [Seleccionar]

# -*- coding: utf-8 -*-
rut = []
ingresar = [rut.append(numeros) for numeros in raw_input('RUT ::>')]
rut.reverse()
recorrido = 2
multiplicar = 0
for x in rut:
multiplicar+=int(x)*recorrido
if recorrido==7: recorrido = 1
recorrido+=1
modulo = multiplicar%11
resultado = 11-modulo
if resultado == 11: digito=0
elif resultado == 10: digito="K"
else: digito=resultado
print "Dígito verificador:",digito


Espero sea de su agrado ! :D

Fuente : http://rootcodes.com/pythonobtener-digito-verificador-del-rut-en-chile/

Saludos, Javier.
#173
Hola, buen día !

  Para ese caso te recomiendo que uses algo así como un rastreador de HTTP Headers...
Subes el archivo y miras las cabeceras que has enviado, así sabrás más fácilmente que campos enviaste
para luego enviarlos por Python

Saludos.
#174
Hola, muy buenos días a todos !
En esta mini guía o vengo a explicar una cosa sencilla de Python, pero que muy pocos utilizan. Me refiero a enviar datos mediante la petición POST.
Primero que nada, quiero mostrar las diferentes formas de llevar a cabo estas peticiones, una de ellas, es mediante la librería "httplib", la otra es mediante la librería urllib o urllib2.

Una ventaja aparente que veo yo al utilizar la librería httplib, es que podemos manejar los códigos de error que nos devuelven las peticiones que hagamos. Por si no manejan dichos códigos de error, acá les dejo un listado de los principales :

  • 200 : OK, documento entregado correctamente.
  • 202 : Aceptada, pero la petición no es completada con éxito.
  • 204 : Sin contenido.
  • 301 : Movido permanentemente.
  • 302 : Movido Temporalmente.
  • 304 : No modificado.
  • 401 : No autorizado.
  • 403 : Prohibido, el conocido Forbidden
  • 404 : No encontrado.
  • 500 : Error interno.
  • 501 : No implementado.
Bueno, volviendo al tema... Para enviar una petición POST, debemos saber la URL a la que deseamos enviar los datos, eso es bastante fácil, ya que generalmente solo debemos mirar el código de fuente y buscar <form ... y ubicar el action="ACÁ LA URL". Una vez encontrado ello, debemos saber que datos tenemos que enviarle a la URL, para ello deberás buscar los <input type="text" o type="hidden".

  Ahora, si no te quieres complicar la vida buscando en el código de fuente, puedes usar otra herramienta proporcionada por mi, que detecta formulario y campos a enviar mediante el POST:
Código (python) [Seleccionar]
# -*- coding: utf-8 -*-
# Autor: JaAViEr (0x5d)
# Twitter: 0x5d
import re,urllib,sys
try:
  var = urllib.urlopen(raw_input("URL ::> ")).read()
except:
  print "No es posible conectar..."
  sys.exit(1)
url_enviar=""
for url in re.findall("<form (.*)>",var):
  if "action" in url.lower():
    for web in url.split():
      if re.findall("action=(.*)",web):
        url_enviar=web.replace("action=","")
url_enviar = url_enviar.replace("\"","")
datos_r = []
for campos in re.findall("<input (.*)>",var):
  if "name" in campos.lower():
    for cam in campos.split():
      if re.findall("name=(.*)",cam):
        datos_r.append(cam.replace('"',""))
print "URL a enviar POST:",url_enviar.replace(">","")
print "Campos Detectados:"
for s in datos_r:
  print s.replace("name=","")

  Solo basta con ingresar la URL para saber a que URL apunta el formulario & los datos que tenemos que enviar, podría ser buena herramienta para esta ocasión.

  Ahora que ya tenemos todos nuestros datos necesarios y fundamentales, manos a la obra !
  Veamos que tal nos va con el famoso httplib y urllib para poder codificar los datos y que el navegador los comprenda, primero los importamos:
Código (python) [Seleccionar]

import httplib, urllib

Para poder crear una conexión utilizamos:
Código (python) [Seleccionar]

parametros = urllib.urlencode({'campo1': 'valor uno','campo2':'valor2'})

En este caso, estamos enviando campo1 con el valor: valor uno y campo2 con el valor: valor2
Y Bueno, necesitamos enviar la cabecera necesaria para poder realizar con éxito nuestra petición, Content-type : application/x-www-form-urlencoded, que en Python es:
Código (python) [Seleccionar]

cabeceras = {"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain"}

Bien, una vez ya tenemos todo esto en nuestro código, debemos especificar a que host nos queremos conectar y con que puerto :
Código (python) [Seleccionar]

abrir_conexion = httplib.HTTPConnection("rootcodes.com:80")

Con eso ya abrimos nuestra conexión a rootcodes.com vía puerto 80 (HTTP). Por lo tanto, ahora necesitamos especificar la URL o el archivo en el servidor que nos receptará los datos:
Código (python) [Seleccionar]

abrir_conexion.request("POST", "/archivo_cualquiera.php", parametros, cabeceras)

Genial ! , ya tenemos nuestra conexión establecida con rootcodes.com y le acabamos de enviar los datos "campo1" y "campo2" con sus respectivos valores ! , pero falta algo, saber si nuestra apreciada petición fue realizada con éxito:
Código (python) [Seleccionar]

respuesta = abrir_conexion.getresponse()
print respuesta.status

  Ahí es donde entran en juego los códigos de error que les dejé más arriba.
PD: respuesta.status devolverá el código de error en número, mientras que:
Código (python) [Seleccionar]
print respuesta.reason
  Nos devolverá en texto, en caso de ser una respuesta válida, el status será 200 y el reason "OK"
  Ya una vez finalizado todo, podemos obtener el código de fuente & posteriormente cerrar la conexión:
Código (python) [Seleccionar]

ver_source = respuesta.read()
abrir_conexion.close()

  Bien, código final:
Código (python) [Seleccionar]

import httplib, urllib
parametros = urllib.urlencode({'campo1': 'valor uno','campo2':'valor2'})
cabeceras = {"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain"}
abrir_conexion = httplib.HTTPConnection("rootcodes.com:80")
abrir_conexion.request("POST", "/archivo_cualquiera.php", parametros, cabeceras)
respuesta = abrir_conexion.getresponse()
print respuesta.status
ver_source = respuesta.read()
#Esto es opcional -> print ver_source
abrir_conexion.close()


  Bien, eso es con la "famosa" httplib, qué tal si vemos ahora como hacerlo con urllib ?

  Bueno, empiezo de 0 con urllib, lo bueno es que esto es muchísimo más sencillo, ya verán ;)
Primero, importamos la librería :
Código (python) [Seleccionar]

import urllib

  Para establecer los campos a enviar, es igual al anterior:
Código (python) [Seleccionar]

campos = urllib.urlencode({"campo":"valor"})

  Y para establecer la web a la cuál enviar los datos:
Código (python) [Seleccionar]

sitio = urllib.urlopen("http://rootcodes.com/el_archivo.php", campos)
print sitio.read()


  Basta con eso, para enviar el campo: "nombre" con valor: JaAViEr.
Sencillo no ? , pues claro, el único problema es que tendríamos que utilizar expresiones regulares para detectar si nuestra petición fue realizada con éxito o no, por lo que es mejor utilizar httplib, cosa que yo no hago :P

  De yapa les dejaré una mini clase que hice en Python, para enviar datos por POST fácilmente:
Código (python) [Seleccionar]

# -*- coding: utf-8 -*-
# Autor: JaAViEr (0x5d)
# Twitter: 0x5d
import re,urllib,sys
try:
  var = urllib.urlopen(raw_input('URL ::> ')).read()
except:
  print "No es posible conectar..."
  sys.exit(1)
url_enviar=""
for url in re.findall("<form (.*)>",var):
  if "action" in url.lower():
    for web in url.split():
      if re.findall("action=(.*)",web):
        url_enviar=web.replace("action=",'')
url_enviar = url_enviar.replace("\"",'')
datos_r = []
for campos in re.findall("<input (.*)>",var):
  if "name" in campos.lower():
    for cam in campos.split():
      if re.findall("name=(.*)",cam):
        datos_r.append(cam.replace('"',''))
print "URL a enviar POST:",url_enviar.replace(">",'')
print "Campos Detectados:"
for s in datos_r:
  print s.replace("name=",'')

Un ejemplo de uso:
Código (text) [Seleccionar]

Inserta la URL ::> http://sitio web
Inserta las variables, separadas por ':' ::> campo1:campo2
Inserta los valores, separados por ':' ::> valor1:valor2
ACÁ IRÁ LA SALIDA


  Espero no haber sido muy enredado en mi explicación.

Fuente Original : http://rootcodes.com/pythonenviar-peticiones-post-desde-python/  O TAMBIÉN -> http://foros.cristalab.com/enviar-peticiones-post-a-sitios-web-con-python-t103492/

Saludos, Javier.
#175
Hola, buen día a todos!

Sigo en mi travesía por Ruby y mi travesía por el tablet...
Ahora traigo la sucesión fibonacci en Ruby probada y programada desde el
Galaxy Tab
Código (ruby) [Seleccionar]
b=[1,1,2]
t=0
b.each do |n|
t=b[b.length-1]+b[b.length-2]
print t
b << t
gets
end


Saludos!
#176
Hola, buen día.

Antes de aprender Python, no sabía si meterle mano a Python o a Ruby. Como tomé Python, ahora será el turno de Ruby. El problema es que mi Debian murió y estoy programando desde el tablet.

Bueno, ya todos conocen el String to ASCII, esta vez en Ruby:
Código (ruby) [Seleccionar]

puts 'Inserta un string ::>'
STDOUT.flush
var=gets.chomp
h=''
i = 0
puts 'Salida ASCII:'
while i<var.length
  h+=var[i].to_s+' '
  i+=1
end
puts h


Saludos.
#177
Hola, buen día.

Tu pregunta es compleja en el sentido de que no siempre le
podemos sacar todo el provecho a un lenguaje, ya que son demasiado
extensos. La única manera de sacarle todo el provecho es hacer
cosas útiles
#178
Yo se hacerlo con QT4. . .
#179
Hola. ¡Buenos días a todos !

 En esta oportunidad le dedicaré algo de tiempo y espacio en el blog a la programación de 'aplicaciones' para Android en lenguaje Python, si bien no les explicaré como funciona ni mucho menos, les dejaré algunas funciones para que ustedes quizás puedan expandir y desarrollar algo.
 
 Bueno, antes que todo, debemos instalar la aplicación SL4A, que la encontraremos acá en su página oficial , yo uso el sl4a_r4.apk en el tablet y luego desde el mismo sitio web bajamos el Python For Android.


 En todo código que programemos en nuestro Android, debemos importar la librería Android y crear el objeto para utilizar la API:
Código (python) [Seleccionar]

import android
droid = android.Android()

OJO que eso es solo si pretendes programar aplicaciones con funciones internas de tu Android, ya sea Cámara, WiFi, Contactos, etc.

Bueno, veamos algo sencillo, crear el típico alerta con un titulo y mensaje personalizado, para lo que usaremos droid.dialogCreateAlert('Titulo','Mensaje' )
, pero para este ser mostrado debemos utilizar droid.dialogShow():
Código (python) [Seleccionar]

import android
droid = android.Android()
droid.dialogCreateAlert('Titulo','Mensaje')
droid.dialogShow()



 Otra cosa bien sencilla sería pedir datos por GetInput mediante otro cuadro de dialogo, el código es sencillo igualmente:
Código (python) [Seleccionar]

import android
droid = android.Android()
variable = droid.dialogGetInput('TITULO','INSERTE DATOS:').result


Ojo, debemos poner .result o nos devolverá el resultado junto a otros datos, como tenemos ya nuestros datos en 'variable' , luego podemos mostrar lo insertado vía Cuadro de Alerta o vía print.
En caso de querer mostrar el resultado vía Alerta:
Código (python) [Seleccionar]

import android
droid = android.Android()
variable = droid.dialogGetInput('DATOS','Tu nombre:').result
droid.dialogCreateAlert('Muestra Datos','Tu nombre es %s'%variable)
droid.dialogShow()

La cual nos pedirá un nombre y posteriormente lo mostrará en un Alerta.

 Otra cosa entre comillas interesante, es la posibilidad de añadir un DatePicker, bueno si no sabes que es, es un cuadro que nos permite buscar fechas de manera más 'cómodas', ahora, veamos como aplicarlo en Python - Android. Para llamar al DatePicker, debemos crearlo antes, mediante droid.dialogCreateDatePicker([Año inicio], [Mes], [Día]) Y para mostrarlo, lo mismo de antes, droid.dialogShow(). Bien, veamos el código:
Código (python) [Seleccionar]

import android
droid = android.Android()
fecha = droid.dialogCreateDatePicker(1970, 1, 1)
droid.dialogShow()

Paso a explicar esto un poco, almacenamos el DatePicker en la variable 'fecha', pero que sucede si hacemos un print fecha, como queriendo mostrar el resultado ? Pues no devolverá nada, pues para esta situación debemos de utilizar droid.dialogGetResponse().result, lo que insertaremos en una variable llamada 'respuesta', de esta manera:
Código (python) [Seleccionar]

respuesta = droid.dialogGetResponse().result
print respuesta
bien, veamos que nos dice el print respuesta:
[text]
{u'year':1970, u'day':1, u'wich': u'positive', u'month':1}
[/text]
Entonces, si solo queremos tomar el año o fecha o día o lo que sea, debemos hacer nada más que añadir:
Código (python) [Seleccionar]

print respuesta['year']

['year'] ['day'] ['which'] ['mont']

 Bueno, creo que no es necesario mostrar lo siguiente, pero nunca está de más .__. hablo sobre hacer que el celular vibre:
Código (python) [Seleccionar]

import android
droid = android.Android()
droid.vibrate(2000)

 Se maneja por ms, por lo que 2000ms = 2s.
Bueno, eso era una pasadita rápida nada más :P
 Aprovechando eso, también pondré la manera de obtener el volumen máximo del timbre, como es algo sencillo solo dejo el código:
Código (python) [Seleccionar]

import android
droid = android.Android()
max = droid.getMaxRingerVolume().result
print "Tope del volumen:", max

Otra sencillez más, es mostrar lo que hay en el ClipBoard:
Código (python) [Seleccionar]

import android
droid = android.Android()
contenido = droid.getClipboard().result
print "Contenido del clipboard:", contenido


 Bueno, ya veamos algo quizás más 'útil', como lo son los botones, lo bueno de esto, es que en Android podemos personalizar el texto de los botones de : Si , No , Cancelar

Antes de dar paso a la creación de los botones, antes debemos crear un  dialogCreateAlert('TITULO','MENSAJE' ).
Bueno, al grano, un ejemplo en código:
Código (python) [Seleccionar]

import android
droid = android.Android()
crear_alerta = droid.dialogCreateAlert('Titulo','Mensaje')
boton_no = droid.dialogSetNegativeButtonText('NO!')
boton_si = droid.dialogSetPositiveButtonText('SI!')
boton_cancelar = droid.dialogSetNeutralButtonText('CANCELAR!')
droid.dialogShow()
respuesta = droid.dialogGetResponse().result
print respuesta


Si das clic en el boton NO!, la respuesta será :
[text]
{u'wich':u'negative'}
[/text]
Si das en SI! devolverá 'positive', y en caso de ser CANCELAR! devolverá 'neutral'.
Dejaré un ejemplo de uso bien básico.

Código:
Código (python) [Seleccionar]

import android
droid = android.Android()
crear_alerta = droid.dialogCreateAlert('Encuesta','Te gusta rootcodes.com?')
boton_no = droid.dialogSetNegativeButtonText('No me gusta')
boton_si = droid.dialogSetPositiveButtonText('Si, me gusta')
boton_cancelar = droid.dialogSetNeutralButtonText('Yo no voto!')
droid.dialogShow()
respuesta = droid.dialogGetResponse().result
if respuesta['which']=='positive':
 droid.dialogCreateAlert('Gracias por tu voto','Me alegra que te guste!')
elif respuesta['which']=='negative':
 droid.dialogCreateAlert('Gracias por tu voto','Una lastima que no te guste!')
else:
 droid.dialogCreateAlert('Gracias por tu voto','Un voto nulo :\\')
droid.dialogShow()

Por lo que dependerá del botón que presionemos la respuesta
Bueno, el sueño me la está ganando, así que mañana continúo y actualizo el post !

Fuente: http://rootcodes.com/python-androidalgunas-funciones-basicas/

Saludos !
#180
Hola, buen día.
Para navidad me llegó un samsung galaxy tab(con android), así que me puse a indagar sobre
como programar cosas para Android y me topé con mi amado python. Antes que todo
hay que bajar la aplicación SL4A http://code.google.com/p/android-scripting y luego el Python
desde la misma web.

Así que me animé a crear la misma calculadora por secuencias del QT4, pero en Android:
Código (python) [Seleccionar]

import android
droid = android.Android()
secuencia = droid.dialogGetInput('Secuencia','Inserta secuencia:', None).result
resultado = eval(secuencia)
droid.dialogCreateAlert('Resultado','Resultado %s'%resultado)
droid.dialogShow()


Capturas de pantalla:

RESULTADO


Saludos !