<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>It's not a blog, It's a feature &#187; python</title>
	<atom:link href="http://javazquez.com/juan/category/python/feed/" rel="self" type="application/rss+xml" />
	<link>http://javazquez.com/juan</link>
	<description>Juan A. Vazquez</description>
	<lastBuildDate>Wed, 16 Nov 2011 02:45:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Fun with Python</title>
		<link>http://javazquez.com/juan/2010/08/31/python-quickstart/</link>
		<comments>http://javazquez.com/juan/2010/08/31/python-quickstart/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 03:28:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[Howto]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://javazquez.com/juan/?p=240</guid>
		<description><![CDATA[Hey there fellow developers I have been working with Python lately(specifically Python3) and wanted to share some things I thought were pretty cool from an outsider&#8217;s(learning the language) perspective. I hope the following helps with getting to know this great language.. Enjoy #construct a tuple using() t=(1,2,3) #contruct a list using [] lst= [1,2,4] #iterate [...]]]></description>
			<content:encoded><![CDATA[<p>Hey there fellow developers <img src='http://javazquez.com/juan/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /><br />
I have been working with Python lately(specifically Python3) and wanted to share some things I thought were pretty cool from an outsider&#8217;s(learning the language) perspective.  I hope the following helps with getting to know this great language.. Enjoy </p>
<pre>
<code>
#construct a tuple using()
t=(1,2,3)

#contruct a list using []
 lst= [1,2,4]

#iterate a string and print each character
for i in "This is a String":
	print(i)

#getting the length of a string
print ("length is",len("12345"))	

#test x is in a range
x=6
if(3< x <10 ):
	print( "I am true")
else:
	print( "I am false")

#test membership

if "2" in "1234":
	print("I am in the string")
if int("2") in [1,2,3,4]:
	print( "I am in the list")

#replication
print( "hithreetimes, "*3)

#using math class
import math
print(math.sqrt(4))

#print all methods
print(dir(math))

#named Tuples
import collections
Movie = collections.namedtuple("Movie","title rating")
collection =[Movie("Jaws", 4.0)]
collection.append(Movie("Toy Story", 5.0))
for movie in collection:
	print("I watched {0} and gave it {1} stars".format(movie.title,movie.rating))

#sequence unpacking
head, *rest = [1,2,3,4,5]
print("head is {0} and rest is {1}".format(head,rest))

#passing and unpacking parameters
def fullname(f,m,l):
	print("First Name ="+f)
	print("Middle Name ="+m)
        print("Last Name  ="l)

fakenamelist =["Homer","J","Simpson"]
fullname(*fakenamelist)		

#list comprehensions (print all odd numbers from 0 to 99)
print( [item for item in range(0,100) if item % 2])

#named parameters
def count_animals(number,*,	animal="ducks"):
	return "{0} {1}".format(number,animal)
print( count_animals(3,animal="cows"))
print( count_animals(3))

print(sorted([-1,2,-3],key=abs)) #same order

line = input("enter something.. ")
print("your line was " ,line)

</code>
</pre>
<p>I have been using python for web requests and recommend using the <a href="http://code.google.com/p/httplib2/">httplib2 library</a>. It has a lot of really nice features. </p>
]]></content:encoded>
			<wfw:commentRss>http://javazquez.com/juan/2010/08/31/python-quickstart/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mergesort and Quicksort with Dynamic Languages</title>
		<link>http://javazquez.com/juan/2009/01/03/mergesort-and-quicksort-with-dynamic-languages/</link>
		<comments>http://javazquez.com/juan/2009/01/03/mergesort-and-quicksort-with-dynamic-languages/#comments</comments>
		<pubDate>Sat, 03 Jan 2009 18:10:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[Erlang]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[algorithms]]></category>
		<category><![CDATA[mergesort]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[quicksort]]></category>
		<category><![CDATA[sort]]></category>
		<category><![CDATA[sorting]]></category>

		<guid isPermaLink="false">http://javazquez.com/juan/?p=64</guid>
		<description><![CDATA[Groovy, Ruby, Python, Erlang Mergesort, and Quicksort code examples]]></description>
			<content:encoded><![CDATA[<p>The other day I was flipping through an algorithms book and came across a section on sorting. I remembered that I had a blast writing them c++ during my undergrad and thought it would be fun to write them in a couple of different languages. I settled on writing a quicksort, and mergesort.<br />
  <strong>Interesting notes:</strong><br />
<strong>1)</strong> Python(2.5) returns a None type when appending a value to an empty list which forced me to use &#8216;+&#8217;<br />
 >>> ex= [].append()<br />
 >>> print ex<br />
 >>>None</p>
<p><strong>2)</strong> Groovy gave me a <strong>java.util.ConcurrentModificationException</strong> when I transcribed my Ruby code to Groovy. Because of the fact that I was deleting items from a list that I would read in later(while loop which checks size of left and right), I got this error. Accounting for that, the groovy code is pretty nasty.(anyone that would like to provide a better example without relying on the built in Collections.sort(list) would be welcome)</p>
<p> Here is my code&#8230; enjoy!</p>
<pre><code>
# javazquez.com
==========MERGE SORT========

-------------RUBY----------------

def merge_sort(ary)
  return ary if (ary.length <= 1)
  half = ary.length/2
  left = merge_sort(ary[0...half])
  right = merge_sort(ary[half..ary.length-1])
  result =[]
#compare first left and first right
  while left.length > 0 and right.length > 0
    result << (left[0] < right[0] ? left.shift : right.shift)
  end
  result.concat((left.length > 0 ? left : right))
  return result
end

ary=[1,5,14,3,2,45,2,0,01,-1]
p merge_sort(ary)
</code>
<code>
-----------Python Mergesort-------------

def merg_sort(lst):
    if(len(lst) <= 1):  return lst
    left = merg_sort(lst[:len(lst)/2])
    right = merg_sort(lst[len(lst)/2:len(lst)])
    result = []
    while len(left) > 0 and len(right)> 0:
        if( left[0] > right[0]):
            result.append(right.pop(0))
        else:
            result.append(left.pop(0))

    if(len(left)>0): result.extend(merg_sort(left))
    else: result.extend(merg_sort(right))

    return result

print merg_sort([8,7,43,2,5])
</code>
<code>
--------Erlang Mergesort-------------
-module(mergesort).
-export([ms/1,msTestSuite/1]).

ms(Lst)->break(Lst).
break([]) -> [];
break([L]) -> [L];
break(List) ->
    {Left, Right} = lists:split(length(List) div 2, List),
    merge(break(Left),break(Right)).

merge(L, []) -> L;
merge([], R) -> R;
merge([Lh|Ltail],[Rh|Rtail])->
	 if
	 Lh < Rh -> [Lh | merge(Ltail,[Rh|Rtail])];
	 Lh >= Rh -> [Rh | merge(Rtail,[Lh|Ltail])]
	 end.

%to test, run mergesort:msTestSuite(run).
msTestSuite(run)->
	[mstest1(run),mstest2(run),
	mstest3(run),mstest4(run),
    mstest5(run)].

mstest1(run)-> ms([3,2,1]).
mstest2(run)-> ms([3,3,3,1]).
mstest3(run)-> ms([]).
mstest4(run)-> ms([1]).
mstest5(run)-> ms([123,0,-1,23,2,34,5,678,7,5,8]).
</code>
<code>
-------------GROOVY MERGESORT--------
def ms(lst){
    if(lst.size() <= 1){return lst}
    def sz=lst.size()
    int half = (int)(sz/2)
    def l = lst [ 0 .. < half]
    def r = lst [ half.. < sz]
    def lft = ms(l)
    def rht  = ms(r)
    def result = []
    def rcnt = 0
    def lcnt = 0
   while( lcnt < lft.size() &#038;&#038; rcnt < rht.size()){
        if(lft[lcnt] < rht[rcnt]){
        	result += lft[lcnt++]
		}
        else{
			result += rht[rcnt++]
		}
     }
    if(lcnt < lft.size()){
		result +=  ms(lft[lcnt..< lft.size()])
	}
    else{
		result += ms(rht[rcnt..< rht.size()])
	}
    return result
}

sl=[3,88,5,3,2,1,-2,2]
println ms(sl)
</code>

<code markup="none">
# javazquez.com
========QUICKSORT========

-----RUBY----------------
def quick_sort(ary)
  return ary if(ary.length <= 1)
  greater,less = [],[]
  pos = rand(ary.length)
  pivot = ary[pos]
  ary.delete_at(pos)
  ary.each{|item|
       (item < pivot) ? less << item :greater << item}
  return (quick_sort(less) << pivot).concat(quick_sort(greater))
end

ary=[1,5,14,3,2,45,2,0,01,-1]
p quick_sort(ary)
</code>
<code>
----------Python Quicksort--------------

import random
def quickSort(lst):
	if(len(lst) <= 1):return lst
	greater = []
	less = []
	pivot = lst.pop(random.randint(0,len(lst)-1))
	for item in lst:
		if(item < pivot): less.append(item)
		else: greater.append(item)
	return quickSort(less)+[pivot]+quickSort(greater)

ary=[1,5,14,3,2,45,2,0,01,-1]
</code>
<code>
----------Erlang Quicksort--------------
-module(quicksort).
-export([qsort/1]).

qsort([]) ->[];
qsort([Pivot|T]) ->
		lists:append( [qsort([X || X <- T, X < Pivot]),
		[Pivot], qsort([X || X <- T, X >= Pivot]) ).

-------GROOVY QUICKSORT--------------
def quickSort(lst){
	if(lst.size() <= 1){return lst}
	def greater = []
	def less = []
	def pivot = lst.remove(new  Random().nextInt(lst.size()))
	lst.each{item->
		if(item < pivot){ less.add(item)}
		else{greater.add(item)}
	}
	return quickSort(less)+[pivot]+quickSort(greater)
}
print quickSort([1,5,14,3,2,45,2,0,01,-1])

</code>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://javazquez.com/juan/2009/01/03/mergesort-and-quicksort-with-dynamic-languages/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Fun with Python and Gmail API</title>
		<link>http://javazquez.com/juan/2008/12/24/fun-with-python-and-gmail-api/</link>
		<comments>http://javazquez.com/juan/2008/12/24/fun-with-python-and-gmail-api/#comments</comments>
		<pubDate>Wed, 24 Dec 2008 17:58:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[google api]]></category>

		<guid isPermaLink="false">http://javazquez.com/juan/?p=82</guid>
		<description><![CDATA[Quick demonstration on how to pull contacts from gmail using python]]></description>
			<content:encoded><![CDATA[<p>Yesterday I decided to play with Gmail&#8217;s API in order to grab my contacts. To my surprise, it was a snap. Google has instructions for python <a href="http://code.google.com/apis/gdata/articles/python_client_lib.html">Here</a>, I wrote my example using Python 2.5 on OS X. Once I had unzipped the GData contents, I just changed to the GData directory and ran <br/>&#8220;<strong>sudo python setup.py install</strong>&#8221; <br /> and I was ready to go.</p>
<p><a href="http://gdata-python-client.googlecode.com/svn/trunk/pydocs/">Python Documentation for GDATA</a></p>
<p><code>
<pre>
#################################<br />
# javazquez.com<br />
# Google GMAIL API example<br />
##################################<br />
import gdata.contacts.service</p>
<p>user = 'user@gmail.com'<br />
pwd = 'password'<br />
client2 = gdata.contacts.service.ContactsService()<br />
# Authenticate using your Google Docs email address<br />
# and password.<br />
client2.ClientLogin(user, pwd)<br />
contacts_feed = client2.GetContactsFeed()</p>
<p>################################################<br />
# NOTE: The GetContactsFeed does not give back<br />
#		all contacts.<br />
#              This 'problem' can be solved by looping<br />
#		until the contacts_feed.GetNextLink<br />
#             returns  None.<br />
################################################<br />
l=[]<br />
while(contacts_feed) :<br />
	for x in contacts_feed.entry:<br />
		l.append([x.title.text, x.email[0].address])<br />
	ret = contacts_feed.GetNextLink()<br />
 	contacts_feed = client2.GetContactsFeed(ret.href)  if(ret) else ret</p>
<p>print "here are your %d contacts" % len(l)<br />
for contact in l:<br />
	print "%s -> %s" % (contact[0],contact[1])<br />
</ pre><br />
</code><br />
<strong>Output</strong></p>
<blockquote><p>here are your xxxx contacts<br />
ANDREW  -> adrew@somewhere.com<br />
...
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://javazquez.com/juan/2008/12/24/fun-with-python-and-gmail-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby to Python Primer</title>
		<link>http://javazquez.com/juan/2008/12/16/ruby-to-python-primer/</link>
		<comments>http://javazquez.com/juan/2008/12/16/ruby-to-python-primer/#comments</comments>
		<pubDate>Tue, 16 Dec 2008 16:44:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Ruby Questions]]></category>

		<guid isPermaLink="false">http://javazquez.com/juan/?p=35</guid>
		<description><![CDATA[Here is a quick list of similarities between the two languages.
#ruby
puts s.methods 

#python
print dir(s)
]]></description>
			<content:encoded><![CDATA[<p>If your like me, you bounce around between languages a lot. Lately, I have been writing python code. It&#8217;s not Ruby <img src='http://javazquez.com/juan/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  , but it can get the job done. Here is a quick list of similarities between the two languages. I hope it helps&#8230; don&#8217;t forget to this list in the comments section <img src='http://javazquez.com/juan/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
<code><br />
#-----find object methods-----<br />
s="hello, I am a string"</p>
<p>#ruby<br />
puts s.methods </p>
<p>#python<br />
print dir(s)</p>
<p>#find out more about a method using python<br />
help(s.split)</p>
<p>#-----view object's class-----<br />
#ruby<br />
s.class </p>
<p>#python<br />
s.__class__</p>
<p>#------Iterate hashes-------</p>
<p>#ruby<br />
h.each{|key,value| puts "#{key}, #{value}"} </p>
<p>#python<br />
for key,value in h.iteritems():<br />
  print key, value</p>
<p>#---ternary operators</p>
<p>#ruby<br />
condition ? var = x : var = y</p>
<p>#python.. not exactly an operator, but you get the meaning<br />
#---- var = y  if condition is false<br />
var = x if condition else y     </p>
<p>#----lengths------<br />
#ruby<br />
s="hello, I am a string"<br />
puts "Length of string is #{s.length} or #{s.size}" </p>
<p>h={:one=>2,:three=>4}<br />
puts "Length of hash is same as string, #{h.length} or #{h.size} "</p>
<p>#python<br />
print("This is the length of a string %s" % len("string"))<br />
print("number of key/value pair= %d" % len({'one':1,'two':2}))</p>
<p>#---slicing lists/arrays<br />
l=[1,2,3,4,5]</p>
<p>#ruby<br />
l[1..3] #=>[2,3]</p>
<p>#python<br />
l[1:3] #=>[2,3]</p>
<p>#--print string multiple times-----</p>
<p>#ruby<br />
4.times{print "hello"} #=> hellohellohellohello</p>
<p>#python<br />
print("hello" * 4) #=> hellohellohellohello</p>
<p></code></p>
]]></content:encoded>
			<wfw:commentRss>http://javazquez.com/juan/2008/12/16/ruby-to-python-primer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>File I/O Part 1</title>
		<link>http://javazquez.com/juan/2008/06/27/file-io-part-1/</link>
		<comments>http://javazquez.com/juan/2008/06/27/file-io-part-1/#comments</comments>
		<pubDate>Fri, 27 Jun 2008 22:30:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Groovy]]></category>

		<guid isPermaLink="false">http://javazquez.com/juan/?p=9</guid>
		<description><![CDATA[I love to learn and try new languages. Not only is learning a new language fun, many times it teaches me something new about a language that I am already familiar with. The only problem that I have with learning so many languages, is keeping them straight. I decided that I would take a few [...]]]></description>
			<content:encoded><![CDATA[<p>I love to learn and try new languages. Not only is learning a new language fun, many times it teaches me something new about a language that I am already familiar with. The only problem that I have with learning so many languages, is keeping them straight. I decided that I would take a few of the dynamic languages I use most often and compile a list of how to handle File I/O with each of them. If you have a Dynamic language(part 2 of this post will be on static languages) not represented below or have another method of File I/O with the represented languages, please add to the list with its respective File I/O code:D<br />
Without further ado&#8230;</p>
<blockquote>
<pre>//Groovy open file for writing
def target ="filename"
File wf= new File(target)
wf.write( "I am in your file eating your space" )

//Groovy open file for appending
def target ="filename"
File af= new File(target)
af.append("I have all of your base")

//Groovy read each line in file
new File("filename").eachLine{line-&gt; println line}

//Groovy read whole document and put into List

List lines = new File("filename").readLines()
//lines contains two lines that we need
println "first line  $lines[0]"
println "second line $lines[1]"

//Groovy reading one line
File rf= new File("filename") //open for reading
//read first line, trim, assign to tmp
rf.withReader { line -&gt;tmp = line.readLine().trim()}

//Groovy test if file exists
File src = new File(srcFile)
if (src.exists() ){ println "I exist"}
else{println "I don't exist"}

#Ruby openfile for reading
fh = File.new(path, "r")  # open file "path" for reading only
fh.close

#Ruby open file for writing
fout   = File.new(path, "w")  # open file "path" for writing only
fout.puts "Up, Up, Down, Down, Left, Right, Left, Right, B, A, Select, Start"
fout.close

#Ruby open file for apending
fa= File.new("DeleteMe.txt","a")
fa.puts "I am at the end of file"
fa.close

#Ruby read eachline in a file
File.open("file").each { |line| p line}

#Ruby read entire file to string
fh = File.new(filename)
str = fh.read

#Ruby read entire file into array(each line is an element in the array)
fh = File.new(filename)
str = fh.readlines

#Python Write a file
fout = open("DeletMe.txt", "w")
fout.write("Writing to fout\nCheck it out!")
fout.close()

#Python Read an entire file
fin = open("ReadingTest.txt", "r")
fin_text =  fin.read()
fin.close()
print fin_text

#Python read entire file into list
fin = open("ReadingTest.txt", "r")
txt= fin.readlines()
fin.close()
print txt[0]

#Python append to a file
fh= open ( 'DeleteMe.txt', 'a' )
fh.write ( '\n\n\nBottom line.' )
fh.close()

#Perl reading a file
open(FILE,  '&lt;', $file) or die "Can't read $file: $!\n";
while(&lt;FILE&gt;)
{
print ;
}

#Perl append to a file
open(FILE, '&gt;&gt;', $file) or    die "Can't append to $file: $!\n";
print FILE "text";
close(FILE);

#Perl read and write to a file
#+&lt; allows reading and writing, and keeps the data that was
#already in the file.  open() will fail if file doesn't exist.
open(FILE, "+&lt;$file" ) or die ("Can't  read|write: $file\n");
close(FILE);

#Perl read and write to a file
#+&gt;allows writing and reading, but replaces/overwrites the
#data in the file if the file exists. Creates it if it doesn't exist.
open(FILE, "+&gt;$file" ) or die ("Can't write or read:$file \n");

close(FILE);</pre>
</blockquote>
<p>PHP code doesn&#8217;t display properly within WordPress, so here is an image of the code</p>
<p><a href="http://javazquez.com/juan/wp-content/uploads/2008/06/phpcode.gif"><img class="alignnone size-full wp-image-10" title="phpcode" src="http://javazquez.com/juan/wp-content/uploads/2008/06/phpcode.gif" alt="PHP File I/O" width="340" height="233" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://javazquez.com/juan/2008/06/27/file-io-part-1/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

