Python Introduction Workshop: Difference between revisions

From Hackers & Designers
No edit summary
 
(18 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{Article
|MainNavigation=No
}}
[[File:Python meme.jpg|350px|]]


== Workshop ==
== Workshop ==
https://summer.hackersanddesigners.nl/451.txt


Please keep in mind that Python cares about whitespace (spaces, returns, etc...), if you just paste the code in, be aware of what spaces you are also pasting in... ;-)
Please keep in mind that Python cares about whitespace (spaces, returns, etc...), if you just paste the code in, be aware of what spaces you are also pasting in... ;-)


1.) Create a file
First alias python3 so you don't go nuts!  Server by default uses python 2, but for this workshop we will use python 3.
 
$ alias python=python3
 
Create a file
  $ nano myprog.py
  $ nano myprog.py


2.) Add the following line
Add the following line
  print 'Hello World!'
  print('Hello World!')


3.) Save the file and exit.  Ctrl+O, Ctrl+X
Save the file and exit.  Ctrl+O, Ctrl+X


4.) Run the program.
Run the program.
  $ python myprog.py
  $ python3 myprog.py


5.) Add a comment to the top of your program.  Comments are to help people read your program.
Add a comment to the top of your program.  Comments are to help people read your program.
  # Program by [username]
  # Program by [username]


6.) Create a variable to store input into the program.
Create a variable to store input into the program.
  # Import adds a library (addition functionality) to your program
  # Import adds a library (addition functionality) to your program
  # sys is the system library
  # sys is the system library
Line 27: Line 37:
   
   
  # Print message w/ variable
  # Print message w/ variable
  print 'Hello ' + instr + '.'
  print('Hello ' + instr)


7.) Run the program, this time with input.
Run the program, this time with input.
  $ whoami | python myprog.py
  $ whoami | python myprog.py


8.) Use the input to alter the output, before your print message add:
Use the input to alter the output, before your print message add:


  if instr == 'jbg':
  if instr == 'jbg':
Line 39: Line 49:
   instr = 'Writer'
   instr = 'Writer'


9.) Save and run.
Save and run.


10.) It doesn't work!  This is because there is actually a return character in the string.  Change the following:
It doesn't work!  This is because there is actually a return character in the string.  Change the following:
  instr = sys.stdin.readline().strip()
  instr = sys.stdin.readline().strip()


11.) Save and run.
Save and run.
  $ whoami | python myprog.py
  $ whoami | python myprog.py
  $ echo 'Ray Bradbury' | python myprog.py
  $ echo 'Ray Bradbury' | python myprog.py


12.) Create a new program (myprog2.py) which loops through all the lines coming from stdin.  
Create a new program (myprog2.py) which loops through all the lines coming from stdin.  
   import sys
   import sys
   
   
   for line in sys.stdin:
   for line in sys.stdin:
     print line.strip()
     print(line.strip())


13.) Run it.
Run it.
  $ cat /pub/451.txt | python myprog2.py
  $ cat /pub/451.txt | python myprog2.py


14.) That's a lot of lines, how many exactly?
That's a lot of lines, how many exactly?
  $ cat /pub/451.txt | python myprog2.py | wc -l
  $ cat /pub/451.txt | python myprog2.py | wc -l


15.) Let's store those lines in an array.
Simplest loop.
while True:
  print("hello.")
 
Simple loop.
for i in range(0, 10):
  print("hello")
 
Let's store those lines in an array.
  import sys
  import sys
   
   
Line 67: Line 85:
   lines.append(line.strip())
   lines.append(line.strip())
   
   
  print 'Stored ' + str(len(lines)) + ' lines.'
  print('Stored ' + str(len(lines)) + ' lines.')


16.) 451 remixed via a function.  Add the following to the top of your program.
Run it.
$ cat /pub/451.txt | python myprog2.py
 
451 remixed via a function.  Add the following to the top of your program.


  def remix(lines):
  def remix(lines):
   lines = reversed(lines)
   lines = reversed(lines)
   for line in lines:
   for line in lines:
     print line[::-1] # This is extended slice syntax. It works by doing [begin:end:step]
     print(line[::-1]) # This is extended slice syntax. It works by doing [begin:end:step]


Add the following to the end of your program.
Add the following to the end of your program.
Line 80: Line 101:
  remix(lines)
  remix(lines)


17.) Run it.
Run it.


  $ cat /pub/451.txt | python myprog2.py | more
  $ cat /pub/451.txt | python myprog2.py | more


18.) Try other splits.
Try other splits.
  print line[0:10]
  print(line[0:10])
  print line[10:15] + line[0:10]
  print(line[10:15] + line[0:10])
 
19.) A more powerful remix.
$ python /pub/shaney.py /pub/451.txt


20.) Scrape the internet into a file.
----
$ python /pub/scraper.py > internet.txt
Why is it called Python?


21.) Eat the internet w/ eat.py
When he began implementing Python, Guido van Rossum was also reading the published scripts from “Monty Python’s Flying Circus”, a BBC comedy series from the 1970s. Van Rossum thought he needed a name that was short, unique, and slightly mysterious, so he decided to call the language Python.
 
import sys
def eat(lines):
  new_lines = []
  for line in lines:
    if len(line) > 0:
      new_line = line[0:len(line) - 1]
      print new_line
      new_lines.append(new_line)
  return new_lines
lines = []
for line in sys.stdin:
  lines.append(line.strip())
while len(lines) > 0:
  lines = eat(lines)


22.) Run it.
[[Category:Tools]]
$ cat internet.txt | python eat.py

Latest revision as of 19:47, 5 January 2020

MainNavigation No

Python meme.jpg

Workshop

https://summer.hackersanddesigners.nl/451.txt

Please keep in mind that Python cares about whitespace (spaces, returns, etc...), if you just paste the code in, be aware of what spaces you are also pasting in... ;-)

First alias python3 so you don't go nuts! Server by default uses python 2, but for this workshop we will use python 3.

$ alias python=python3

Create a file

$ nano myprog.py

Add the following line

print('Hello World!')

Save the file and exit. Ctrl+O, Ctrl+X

Run the program.

$ python3 myprog.py

Add a comment to the top of your program. Comments are to help people read your program.

# Program by [username]

Create a variable to store input into the program.

# Import adds a library (addition functionality) to your program
# sys is the system library
import sys

# Read from stdin into a variable called instr
instr = sys.stdin.readline()

# Print message w/ variable
print('Hello ' + instr)

Run the program, this time with input.

$ whoami | python myprog.py

Use the input to alter the output, before your print message add:

if instr == 'jbg':
  instr = 'Programmer'
else:
  instr = 'Writer'

Save and run.

It doesn't work! This is because there is actually a return character in the string. Change the following:

instr = sys.stdin.readline().strip()

Save and run.

$ whoami | python myprog.py
$ echo 'Ray Bradbury' | python myprog.py

Create a new program (myprog2.py) which loops through all the lines coming from stdin.

 import sys

 for line in sys.stdin:
   print(line.strip())

Run it.

$ cat /pub/451.txt | python myprog2.py

That's a lot of lines, how many exactly?

$ cat /pub/451.txt | python myprog2.py | wc -l

Simplest loop.

while True:
  print("hello.")

Simple loop.

for i in range(0, 10):
  print("hello")

Let's store those lines in an array.

import sys

lines = []
for line in sys.stdin:
  lines.append(line.strip())

print('Stored ' + str(len(lines)) + ' lines.')

Run it.

$ cat /pub/451.txt | python myprog2.py

451 remixed via a function. Add the following to the top of your program.

def remix(lines):
  lines = reversed(lines)
  for line in lines:
    print(line[::-1]) # This is extended slice syntax. It works by doing [begin:end:step]

Add the following to the end of your program.

remix(lines)

Run it.

$ cat /pub/451.txt | python myprog2.py | more

Try other splits.

print(line[0:10])
print(line[10:15] + line[0:10])

Why is it called Python?

When he began implementing Python, Guido van Rossum was also reading the published scripts from “Monty Python’s Flying Circus”, a BBC comedy series from the 1970s. Van Rossum thought he needed a name that was short, unique, and slightly mysterious, so he decided to call the language Python.