Programming for Engineers in Python Recitation 1
Plan Administration: Course site Homework submission guidelines Working environment Python: Variables Editor vs. shell Homework 0 Python Cont. Conditional Statements (if/else) Discuss Homework 1
Administration Yoav Ram Email: yoavram@post.tau.ac.il Office hours: by appointment only Location: Room 409, Britannia building Noga Levy Email: noga@post.tau.ac.il Office hours: by appointment only Location: Room 405a, Shenkar building
Course Site - Moodle http://moodle.tau.ac.il All relevant material: Slides for the lectures + recitations, homework, solutions, code examples. Automatic homework submission, (manual) grades. Forum anything you want to clarify from the lecture, recitations and homework. Announcements Instructions (how to set a working environment at home)
Homework Very important when learning to program! Therefore: Weekly hands-on assignments. Strict submission dates. 15-20% of the final grade. Note that: Grades: 0 / 60 / 80 / 100. No appeals. Where can I work? Computer lab 06, open: 8:00 20:00, use email/disk-on-key
Submission Guidelines Submission in singles! Should work on Python 2.7 No cheating! Guidelines in the course site. How to handle doesn t work situation: Go over the code Consult course slides Google (a useful and legitimate source) Check the forum in moodle Submit a question to forum (reply within 48 hours)
Working Environment Install (at home): Windows 32 bit: http://www.python.org/ftp/python/2.7.2/python- 2.7.2.msi Continue as in class Open: Start Menu All Programs Python 2.7 IDLE (Python GUI)
IDLE Editor We want to save a sequence of commands and run it later in a new Python session. The Editor: - Write Python commands - Execute them in one key-press. Open the editor from the Shell: File New Window
IDLE Editor Cont. The new window is Untitled. First choose a title: In the new window: File Save as Chose a folder and a name. The name must end with.py
IDLE Editor Cont. Run Python: The output appears in the Shell window (a new Shell might open)
What are Variables? A location in the computer s memory. A variable - has a name (for access) - holds a value - has type according to its value - This is how data is handled
Numbers and their Types >>> 4 4 >>> type(4) <class 'int'> # integers type >>> 3.14159 3.14159 >>> type(3.14159) <class 'float'> # floating point ("reals") type Arithmetic operations: +, -, *, /, % (modulo), ** (power) What type is 8/5? And 8/5.0? Let s check
Variables and Assignments >>> n = 10 >>> m=(10+4)*5 The left hand side is a variable. The right hand side is an expression. The interpreter evaluates the expression and assigns its value to the variable. The variable's name is a sequence of letters and digits, starting with a letter. n m 10 70
Variables and Assignments: An Example Changing the value of a variable: >>> n=11 >>> n 11 Changing the type of a variable: >>> n=1.3141 >>> n 1.3141 Variables can be used in expressions: >>> pi = 3.14159 >>> pi*2 + 1 7.28318
Variables and Assignments Cont. Referring to undefined variables leads to runtime error >>> check_this Traceback (most recent call last): File "<pyshell#16>", line 1, in <module> check_this NameError: name 'check_this' is not defined
Documentation and Variable Names Real computer programs include thousands of code lines, lots of variables. Readability is very important for code maintenance, it is a requirement in this course! Hence: Choose informative variable names: Not informative: i, j, m, n, astring, doessomething Informative: sumofexpenses, studentname, countwords Documentation add remarks ( # ) before: Functions Logical units of code complex implementation
Strings We already met Strings in class. Strings are text sequences. They are actually an ordered list of characters
Strings Cont. >>> mssg1="let there" >>> mssg2=" be light" >>> mssg1+mssg2 'Let there be light What will the next expression print? >>> mssg1 + mssg2*2
Strings Access - Reminder >>> a= Hello >>> a[1:3] 'el' >>> a[1:] 'ello' >>> a[-4:-2] 'el' >>> a[:-3] 'He' >>> a[-3:] 'llo H 0-5 e 1-4 l 2-3 l 3-2 o 4-1
Homework 0 Let the work begin: Download Homework 0 from the course website. Follow instructions Submit the file [your_name]_a0_q1.py through the course website.
Boolean Variables Comparison : Numbers by their order Strings by lexicographical order Returns boolean variabels: True or False. Comparison types: =!= > < >= <=
Python Comparison Operators >>> 5.0 == 5 True >>> 6!= 2*3 False >> not(-2 >= 1) True >>> (-2 >= 1) or (-2 <= -1) True >>> (-2 >= 1) and (-2 <= -1) False
Variables - Status We saw the classes int, 'float', 'str, bool. Some operations allow mixing" variables of different types. Assignments: variable name = expression Subsequent assignments to the same variable can change its value and even its type. int integer numbers, float real numbers. True and False are Boolean constants
Conditional Statements if <condition>: do something [else: do something else]
Conditional Statements - Examples >>> if 54% 18 == 0: # the remainder of 54 divided by 18 print 54 is divisible by 18" else: print 54 is not divisible by 18" 54 is not divisible by 18 Indentation: Following the if statement: Open a new scope = one tab to the right. Indicates the commands within the scope of this if. else - outside that scope. Note: tab!= four spaces, even if it looks identical!
Functions - Reminder def function_name(input1, input2, ): command1 command2
Exercise Donuts: Input: count - an int representing the number of donuts Output: a string of the form 'Number of donuts: <count>. However, if the count is 10 or more, use the word 'many instead of the actual count. Examples: >>> donuts(5) Number of donuts: 5 >>> donuts(23) Number of donuts: many Function prototype: def donuts(count): # +++your code here+++
Solution def donuts(count): if count < 10: return 'Number of donuts:,str(count) else: return 'Number of donuts: many Return instead of print explanation in the next slide.
Exercise Unit Testing Test (1) Run my code with some input (2) Check the output My Code
Exercise Unit Testing Use the given implementation: - Download hw1.py - Fill in the necessary code instead of the remarks # +++your code here+++ - Instead of printing the code to the shell, return it to the testing function. - Run Module Example s output: OK got: 'Number of donuts: 4' expected: 'Number of donuts: 4' OK got: 'Number of donuts: 9' expected: 'Number of donuts: 9' OK got: 'Number of donuts: many' expected: 'Number of donuts: many' OK got: 'Number of donuts: many' expected: 'Number of donuts: many'