Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Python, Apuntes de Ingeniería de Edificación

Asignatura: Inteligencia artificial, Profesor: Leon Leon, Carrera: Ingeniería de Edificación, Universidad: UAH

Tipo: Apuntes

2013/2014

Subido el 09/06/2014

djbleach
djbleach 🇪🇸

1.5

(2)

5 documentos

1 / 244

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Python for Informatics
Exploring Information
Version 0.0.8-d2
Charles Severance
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Vista previa parcial del texto

¡Descarga Python y más Apuntes en PDF de Ingeniería de Edificación solo en Docsity!

Python for Informatics

Exploring Information

Version 0.0.8-d

Charles Severance

Copyright © 2009-2013 Charles Severance.

Printing history:

October 2013: Major revision to Chapters 13 and 14 to switch to JSON and use OAuth. Added new chapter on Visualization.

September 2013: Published book on Amazon CreateSpace

January 2010: Published book using the University of Michigan Espresso Book ma- chine.

December 2009: Major revision to chapters 2-10 from Think Python: How to Think Like a Computer Scientist and writing chapters 1 and 11-15 to produce Python for In- formatics: Exploring Information

June 2008: Major revision, changed title to Think Python: How to Think Like a Com- puter Scientist.

August 2007: Major revision, changed title to How to Think Like a (Python) Program- mer.

April 2002: First edition of How to Think Like a Computer Scientist.

This work is licensed under a Creative Common Attribution-NonCommercial-ShareAlike 3.0 Unported License. This license is available at creativecommons.org/licenses/ by-nc-sa/3.0/. You can see what the author considers commercial and non-commercial uses of this material as well as license exemptions in the Appendix titled Copyright Detail.

The LATEX source for the Think Python: How to Think Like a Computer Scientist version of this book is available from http://www.thinkpython.com.

iv Chapter 0. Preface

The word “recursion”^1 does not appear in the book at all.

In chapters 1 and 11-16, all of the material is brand new, focusing on real-world uses and simple examples of Python for data analysis including regular expres- sions for searching and parsing, automating tasks on your computer, retrieving data across the network, scraping web pages for data, using web services, parsing XML and JSON data, and creating and using databases using Structured Query Language.

The ultimate goal of all of these changes is a shift from a Computer Science to an Informatics focus is to only include topics into a first technology class that can be useful even if one chooses not to become a professional programmer.

Students who find this book interesting and want to further explore should look at Allen B. Downey’s Think Python book. Because there is a lot of overlap be- tween the two books, students will quickly pick up skills in the additional areas of technical programming and algorithmic thinking that are covered in Think Python. And given that the books have a similar writing style, you should be able to move quickly through Think Python with a minimum of effort.

As the copyright holder of Think Python, Allen has given me permission to change the book’s license on the material from his book that remains in this book from the GNU Free Documentation License to the more recent Creative Commons Attri- bution — Share Alike license. This follows a general shift in open documentation licenses moving from the GFDL to the CC-BY-SA (i.e. Wikipedia). Using the CC-BY-SA license maintains the book’s strong copyleft tradition while making it even more straightforward for new authors to reuse this material as they see fit.

I feel that this book serves an example of why open materials are so important to the future of education, and want to thank Allen B. Downey and Cambridge University Press for their forward looking decision to make the book available under an open Copyright. I hope they are pleased with the results of my efforts and I hope that you the reader are pleased with our collective efforts.

I would like to thank Allen B. Downey and Lauren Cowles for their help, patience, and guidance in dealing with and resolving the copyright issues around this book.

Charles Severance www.dr-chuck.com Ann Arbor, MI, USA September 9, 2013

Charles Severance is a Clinical Associate Professor at the University of Michigan School of Information.

(^1) Except of course for this line.

v

Preface for “Think Python”

The strange history of “Think Python”

(Allen B. Downey)

In January 1999 I was preparing to teach an introductory programming class in Java. I had taught it three times and I was getting frustrated. The failure rate in the class was too high and, even for students who succeeded, the overall level of achievement was too low.

One of the problems I saw was the books. They were too big, with too much unnecessary detail about Java, and not enough high-level guidance about how to program. And they all suffered from the trap door effect: they would start out easy, proceed gradually, and then somewhere around Chapter 5 the bottom would fall out. The students would get too much new material, too fast, and I would spend the rest of the semester picking up the pieces.

Two weeks before the first day of classes, I decided to write my own book. My goals were:

  • Keep it short. It is better for students to read 10 pages than not read 50 pages.
  • Be careful with vocabulary. I tried to minimize the jargon and define each term at first use.
  • Build gradually. To avoid trap doors, I took the most difficult topics and split them into a series of small steps.
  • Focus on programming, not the programming language. I included the min- imum useful subset of Java and left out the rest.

I needed a title, so on a whim I chose How to Think Like a Computer Scientist.

My first version was rough, but it worked. Students did the reading, and they understood enough that I could spend class time on the hard topics, the interesting topics and (most important) letting the students practice.

I released the book under the GNU Free Documentation License, which allows users to copy, modify, and distribute the book.

What happened next is the cool part. Jeff Elkner, a high school teacher in Virginia, adopted my book and translated it into Python. He sent me a copy of his trans- lation, and I had the unusual experience of learning Python by reading my own book.

Jeff and I revised the book, incorporated a case study by Chris Meyers, and in 2001 we released How to Think Like a Computer Scientist: Learning with Python, also under the GNU Free Documentation License. As Green Tea Press, I published

Contents

  • 1 Why should you learn to write programs? Preface iii
    • 1.1 Creativity and motivation
    • 1.2 Computer hardware architecture
    • 1.3 Understanding programming
    • 1.4 Words and sentences
    • 1.5 Conversing with Python
    • 1.6 Terminology: interpreter and compiler
    • 1.7 Writing a program
    • 1.8 What is a program?
    • 1.9 The building blocks of programs
    • 1.10 What could possibly go wrong?
    • 1.11 The learning journey
    • 1.12 Glossary
    • 1.13 Exercises
  • 2 Variables, expressions and statements
    • 2.1 Values and types
    • 2.2 Variables
    • 2.3 Variable names and keywords
    • 2.4 Statements
    • 2.5 Operators and operands viii Contents
    • 2.6 Expressions
    • 2.7 Order of operations
    • 2.8 Modulus operator
    • 2.9 String operations
    • 2.10 Asking the user for input
    • 2.11 Comments
    • 2.12 Choosing mnemonic variable names
    • 2.13 Debugging
    • 2.14 Glossary
    • 2.15 Exercises
  • 3 Conditional execution
    • 3.1 Boolean expressions
    • 3.2 Logical operators
    • 3.3 Conditional execution
    • 3.4 Alternative execution
    • 3.5 Chained conditionals
    • 3.6 Nested conditionals
    • 3.7 Catching exceptions using try and except
    • 3.8 Short circuit evaluation of logical expressions
    • 3.9 Debugging
    • 3.10 Glossary
    • 3.11 Exercises
  • 4 Functions
    • 4.1 Function calls
    • 4.2 Built-in functions
    • 4.3 Type conversion functions
    • 4.4 Random numbers
    • 4.5 Math functions Contents ix
    • 4.6 Adding new functions
    • 4.7 Definitions and uses
    • 4.8 Flow of execution
    • 4.9 Parameters and arguments
    • 4.10 Fruitful functions and void functions
    • 4.11 Why functions?
    • 4.12 Debugging
    • 4.13 Glossary
    • 4.14 Exercises
  • 5 Iteration
    • 5.1 Updating variables
    • 5.2 The while statement
    • 5.3 Infinite loops
    • 5.4 “Infinite loops” and break
    • 5.5 Finishing iterations with continue
    • 5.6 Definite loops using for
    • 5.7 Loop patterns
    • 5.8 Debugging
    • 5.9 Glossary
    • 5.10 Exercises
  • 6 Strings
    • 6.1 A string is a sequence
    • 6.2 Getting the length of a string using len
    • 6.3 Traversal through a string with a loop
    • 6.4 String slices
    • 6.5 Strings are immutable
    • 6.6 Looping and counting
    • 6.7 The in operator x Contents
    • 6.8 String comparison
    • 6.9 string methods
    • 6.10 Parsing strings
    • 6.11 Format operator
    • 6.12 Debugging
    • 6.13 Glossary
    • 6.14 Exercises
  • 7 Files
    • 7.1 Persistence
    • 7.2 Opening files
    • 7.3 Text files and lines
    • 7.4 Reading files
    • 7.5 Searching through a file
    • 7.6 Letting the user choose the file name
    • 7.7 Using try, except, and open
    • 7.8 Writing files
    • 7.9 Debugging
    • 7.10 Glossary
    • 7.11 Exercises
  • 8 Lists
    • 8.1 A list is a sequence
    • 8.2 Lists are mutable
    • 8.3 Traversing a list
    • 8.4 List operations
    • 8.5 List slices
    • 8.6 List methods
    • 8.7 Deleting elements
    • 8.8 Lists and functions Contents xi
    • 8.9 Lists and strings
    • 8.10 Parsing lines
    • 8.11 Objects and values
    • 8.12 Aliasing
    • 8.13 List arguments
    • 8.14 Debugging
    • 8.15 Glossary
    • 8.16 Exercises
  • 9 Dictionaries
    • 9.1 Dictionary as a set of counters
    • 9.2 Dictionaries and files
    • 9.3 Looping and dictionaries
    • 9.4 Advanced text parsing
    • 9.5 Debugging
    • 9.6 Glossary
    • 9.7 Exercises
  • 10 Tuples
    • 10.1 Tuples are immutable
    • 10.2 Comparing tuples
    • 10.3 Tuple assignment
    • 10.4 Dictionaries and tuples
    • 10.5 Multiple assignment with dictionaries
    • 10.6 The most common words
    • 10.7 Using tuples as keys in dictionaries
    • 10.8 Sequences: strings, lists, and tuples–Oh My!
    • 10.9 Debugging
    • 10.10 Glossary
    • 10.11 Exercises
  • 11 Regular expressions xii Contents
    • 11.1 Character matching in regular expressions
    • 11.2 Extracting data using regular expressions
    • 11.3 Combining searching and extracting
    • 11.4 Escape character
    • 11.5 Summary
    • 11.6 Bonus section for Unix users
    • 11.7 Debugging
    • 11.8 Glossary
    • 11.9 Exercises
  • 12 Networked programs
    • 12.1 HyperText Transport Protocol - HTTP
    • 12.2 The World’s Simplest Web Browser
    • 12.3 Retrieving an image over HTTP
    • 12.4 Retrieving web pages with urllib
    • 12.5 Parsing HTML and scraping the web
    • 12.6 Parsing HTML using Regular Expressions
    • 12.7 Parsing HTML using BeautifulSoup
    • 12.8 Reading binary files using urllib
    • 12.9 Glossary
    • 12.10 Exercises
  • 13 Using Web Services
    • 13.1 eXtensible Markup Language - XML
    • 13.2 Parsing XML
    • 13.3 Looping through nodes
    • 13.4 JavaScript Object Notation - JSON
    • 13.5 Parsing JSON
    • 13.6 Application Programming Interfaces (API)
    • 13.7 Google geocoding web service Contents xiii
    • 13.8 Security and API usage
    • 13.9 Glossary
    • 13.10 Exercises
  • 14 Using databases and Structured Query Language (SQL)
    • 14.1 What is a database?
    • 14.2 Database concepts
    • 14.3 SQLite manager Firefox add-on
    • 14.4 Creating a database table
    • 14.5 Structured Query Language (SQL) summary
    • 14.6 Spidering Twitter using a database
    • 14.7 Basic data modeling
    • 14.8 Programming with multiple tables
    • 14.9 Three kinds of keys
    • 14.10 Using JOIN to retrieve data
    • 14.11 Summary
    • 14.12 Debugging
    • 14.13 Glossary
  • 15 Visualizing data
    • 15.1 Building a Google map from geocoded data
    • 15.2 Visualizing networks and interconnections
    • 15.3 Visualizing mail data
  • 16 Automating common tasks on your computer
    • 16.1 File names and paths
    • 16.2 Example: Cleaning up a photo directory
    • 16.3 Command line arguments
    • 16.4 Pipes
    • 16.5 Glossary
    • 16.6 Exercises
  • A Python Programming on Windows xiv Contents
  • B Python Programming on Macintosh
  • C Contributor List
  • D Copyright Detail

2 Chapter 1. Why should you learn to write programs?

For example, look at the first three paragraphs of this chapter and tell me the most commonly used word and how many times the word is used. While you were able to read and understand the words in a few seconds, counting them is almost painful because it is not the kind of problem that human minds are designed to solve. For a computer the opposite is true, reading and understanding text from a piece of paper is hard for a computer to do but counting the words and telling you how many times the most used word was used is very easy for the computer:

python words.py Enter file:words.txt to 16

Our “personal information analysis assistant” quickly told us that the word “to” was used sixteen times in the first three paragraphs of this chapter.

This very fact that computers are good at things that humans are not is why you need to become skilled at talking “computer language”. Once you learn this new language, you can delegate mundane tasks to your partner (the computer), leaving more time for you to do the things that you are uniquely suited for. You bring creativity, intuition, and inventiveness to this partnership.

1.1 Creativity and motivation

While this book is not intended for professional programmers, professional pro- gramming can be a very rewarding job both financially and personally. Building useful, elegant, and clever programs for others to use is a very creative activity. Your computer or Personal Digital Assistant (PDA) usually contains many differ- ent programs from many different groups of programmers, each competing for your attention and interest. They try their best to meet your needs and give you a great user experience in the process. In some situations, when you choose a piece of software, the programmers are directly compensated because of your choice.

If we think of programs as the creative output of groups of programmers, perhaps the following figure is a more sensible version of our PDA:

Me! PDA

Me!

Pick Pick Pick

Pick Pick Buy Me!

Me!

Me :)

Me!

For now, our primary motivation is not to make money or please end-users, but in- stead for us to be more productive in handling the data and information that we will encounter in our lives. When you first start, you will be both the programmer and end-user of your programs. As you gain skill as a programmer and programming feels more creative to you, your thoughts may turn toward developing programs for others.

1.2. Computer hardware architecture 3

1.2 Computer hardware architecture

Before we start learning the language we speak to give instructions to computers to develop software, we need to learn a small amount about how computers are built. If you were to take apart your computer or cell phone and look deep inside, you would find the following parts:

Next?

Network Input

Software

Output Devices

What

Central Processing Unit

Main Memory SecondaryMemory

The high-level definitions of these parts are as follows:

  • The Central Processing Unit (or CPU) is that part of the computer that is built to be obsessed with “what is next?”. If your computer is rated at 3. Gigahertz, it means that the CPU will ask “What next?” three billion times per second. You are going to have to learn how to talk fast to keep up with the CPU.
  • The Main Memory is used to store information that the CPU needs in a hurry. The main memory is nearly as fast as the CPU. But the information stored in the main memory vanishes when the computer is turned off.
  • The Secondary Memory is also used to store information, but it is much slower than the main memory. The advantage of the secondary memory is that it can store information even when there is no power to the computer. Examples of secondary memory are disk drives or flash memory (typically found in USB sticks and portable music players).
  • The Input and Output Devices are simply our screen, keyboard, mouse, microphone, speaker, touchpad, etc. They are all of the ways we interact with the computer.
  • These days, most computers also have a Network Connection to retrieve information over a network. We can think of the network as a very slow place to store and retrieve data that might not always be “up”. So in a sense, the network is a slower and at times unreliable form of Secondary Memory

1.4. Words and sentences 5

  • Second you need to “tell a story”. In writing a story, you combine words and sentences to convey an idea to the reader. There is a skill and art in constructing the story and skill in story writing is improved by doing some writing and getting some feedback. In programming, our program is the “story” and the problem you are trying to solve is the “idea”.

Once you learn one programming language such as Python, you will find it much easier to learn a second programming language such as JavaScript or C++. The new programming language has very different vocabulary and grammar but once you learn problem solving skills, they will be the same across all programming languages.

You will learn the “vocabulary” and “sentences” of Python pretty quickly. It will take longer for you to be able to write a coherent program to solve a brand new problem. We teach programming much like we teach writing. We start reading and explaining programs and then we write simple programs and then write in- creasingly complex programs over time. At some point you “get your muse” and see the patterns on your own and can see more naturally how to take a problem and write a program that solves that problem. And once you get to that point, programming becomes a very pleasant and creative process.

We start with the vocabulary and structure of Python programs. Be patient as the simple examples remind you of when you started reading for the first time.

1.4 Words and sentences

Unlike human languages, the Python vocabulary is actually pretty small. We call this “vocabulary” the “reserved words”. These are words that have very special meaning to Python. When Python sees these words in a Python program, they have one and only one meaning to Python. Later as you write programs you will make your own words that have meaning to you called variables. You will have great latitude in choosing your names for your variables, but you cannot use any of Python’s reserved words as a name for a variable.

In a sense, when we train a dog, we would use special words like, “sit”, “stay”, and “fetch”. Also when you talk to a dog and don’t use any of the reserved words, they just look at you with a quizzical look on their faces until you say a reserved word. For example, if you say, “I wish more people would walk to improve their overall health.”, what most dogs likely hear is, “blah blah blah walk blah blah blah blah.” That is because “walk” is a reserved word in dog language. Many might suggest that the language between humans and cats has no reserved words^1.

The reserved words in the language where humans talk to Python incudes the following:

(^1) http://xkcd.com/231/

6 Chapter 1. Why should you learn to write programs?

and del for is raise assert elif from lambda return break else global not try class except if or while continue exec import pass yield def nally in print

That is it, and unlike a dog, Python is already completely trained. When you say “try”, Python will try every time you say it without fail.

We will learn these reserved words and how they are used in good time, but for now we will focus on the Python equivalent of “speak” (in human to dog lan- guage). The nice thing about telling Python to speak is that we can even tell it what to say by giving it a message in quotes:

print ' Hello world!'

And we have even written our first syntactically correct Python sentence. Our sentence starts with the reserved word print followed by a string of text of our choosing enclosed in single quotes.

1.5 Conversing with Python

Now that we have a word and a simple sentence that we know in Python, we need to know how to start a conversation with Python to test our new language skills.

Before you can converse with Python, you must first install the Python software on your computer and learn how to start Python on your computer. That is too much detail for this chapter so I suggest that you consult www.pythonlearn.com where I have detailed instructions and screencasts of setting up and starting Python on Macintosh and Windows systems. At some point, you will be in a terminal or command window and you will type python and the Python interpreter will start executing in interactive mode: and appear somewhat as follows:

Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49) [GCC 4.2.1 (Apple Inc. build 5646)] on darwin Type "help", "copyright", "credits" or "license" for more information.

The >>> prompt is the Python interpreter’s way of asking you, “What do you want me to do next?”. Python is ready to have a conversation with you. All you have to know is how to speak the Python language and you can have a conversation.

Lets say for example that you did not know even the simplest Python language words or sentences. You might want to use the standard line that astronauts use when they land on a far away planet and try to speak with the inhabitants of the planet: