[pyar] Fortune en Python

"Matías A. Bellone" matiasbellone en gmail.com
Jue Sep 23 17:13:07 ART 2010


On 09/23/2010 05:05 PM, Juan Carlos Ojeda wrote:
> Queria algo como el Fortune de Linux pero en Python,
> para no depender de mas dependencias valga la redundancia,
> el problema es que no se por que me devuelve 2 renglones en lugar de 1 ?
> Como correjirlo y que me devuelva 1 renglon ?
> /(frases.txt es un archivo de texto plano con 1 frase por renglon)/
>
> Muchas gracias
>
> juan en 3e:~$ python
> Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56)
> [GCC 4.4.3] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
>  >>> import random
>  >>> file=open('/home/juan/frases.txt','r')
>  >>> db=file.readlines()
>  >>> file.close()
>  >>> l=len(db)
>  >>> s = int(1+random.random()*l)
>  >>> print db[s]
> "Nunca voy a ver películas donde el pecho del héroe es mayor que el de
> la heroína" (Groucho Marx)
>
>  >>> WTF!!!
>

La respuesta a tu pregunta es porque readlines lee todo (incluyendo el 
salto de línea) y print agrega un salto de línea también. Por eso 
terminás con uno de más :P

 >>> file = open('/tmp/test')
 >>> db = file.readlines()
 >>> db
['un reglon\n', 'dos renglones\n', 'tres renglones']


Ahora un "bonus"; te la estás complicando de más:

 >>> import random
 >>> random.choice(db)
'un reglon\n'
 >>> print random.choice(db).strip()
tres renglones
 >>>


Eso es todo lo que necesitás. Olvidate de todo el resto.

Saludos,
Toote



More information about the pyar mailing list