Line Continuation, Output Formatting, and Decision Structures COSC 1301
Line Continuation What do you do if your line of Python code is too long? Use the line continuation character! the backslash character \ Place at the very end of the line Python interpreter will assume the next line is part of the same line Saw in Camus.py Show in interpreter
Line Continuation: Example >>> sum = 2.35 + 8 \ + 13.6 + \ 25 >>> sum 48.950000000000003 >>> print (“\t\nHello, my name is”, \ “Jarvis”) Hello, my name is Jarvis
Output Formatting We’ve seen this: print (“The temperature is”,temp,”degrees”) Now, we’ll see another way Better able to control how print displays values 88.33333333 -> 88.33 4 / 15 / 2010 -> 4/15/2010
Output Formatting: Format Operators print (“The temperature is %d degrees” % temp) String formatting operator: % NOT modulus: modulus operates on numbers Appears in strings Indicates how and where a value should be printed in a string
Output Formatting: Format Specifiers Value Type %d integer %f float %s string %e or %E exponential For each, you can also specify width and precision: %<width>.<precision><type character> print (“The average is %.2f” % avg) What about long? Precision mostly comes into play for floats, where it specifies places after the decimal place---rounds! but can be used for integers, where it pads with 0s Width is the total number of spaces the field should occupy Example: math.pi Modify average.py
Output Formatting: Embedded Operations You can calculate values in your print statement: print (“2+3 = %d” % (2+3)) print (“x/y = %.2f” % (x/y)) Do in IDLE
Formatting Example >>> import math # package containing pi >>> math.pi #display the value of pi 3.1415926535897931 >>> #Now display with 4 digits after decimal point >>> print (“Pi: %.4f” % math.pi) Pi: 3.1416 Notes: The f in the format string stands for float. The number appears in the output wherever the format string occurs. The number is rounded to the specified number of digits.
Formatting Example Can specify a minimum field width for the display of a value Minimum width comes before the decimal point in the format string >>> print (“Pi: %7.3f” % math.pi) Pi: 3.142 The field width is 7: digits and decimal point: width 5 2 blank spaces to left of number
Formatting: Two or More Values Enclose multiple values in parentheses Separate the values with commas print (“First name: %10s, Last Name: %12s” % (“Elvis”, “Presley”)) First name: Elvis, Last Name: Presley
Output Formatting: Examples Modify average.py to print 2 decimal places of the average Practice printing strings from input() Print using multiple values The values must be enclosed in parentheses
Question for you: Output Formatting What is the expected output? x = 5.7 y = 2.18 print (“%.1f” % (x+y)) A. 7 C. 7.9 B. 7.8 D. 8 C
Comparisons Allows you to compare two values Result in a True or False value type Boolean (bool) You can compare numbers or strings, literals, variables, or expressions Where have you seen this before?
How do you specify a comparison? Specify the condition using a relational operator Operator Meaning < Less than > Greater than <= Less than or equal >= Greater than or equal == Equality != Not equals
Comparisons: Examples test = 13 < 15 test = 101 >= 99 test = “a” < “b” test = 4 == 2+2 test = 15 != 16 test = 12 == 3*5
Lexicographic Order Strings are rated according to lexicographic order Orders words A-Za-z Capital letters first in alphabetical order Lower-case letters second in alphabetical order NOT in dictionary order
Decisions “Once you make a decision, the universe conspires to make it happen.” -- Ralph Waldo Emerson Gives you the ability to specify different instructions based on a condition The condition is typically a comparison if some comparison is true: do something Where have you seen this before?
Decisions: if Statement def main(): command if(<condition>): main() Commands not dependent on the condition Commands only executed if condition is true Indentation matters! (Again) Parentheses are optional in Python Do not want to duplicate code---you’ll have to correct mistakes twice The commands executed only if it is true is called the body or block of the if statement. Extend Average to say, “You passed!”
if examples number = 25 if number > 10: print (number, “is greater than 10!”) Output: 25 is greater than 10!
Decisions: if-else Statement if(<condition>): command else: Commands only executed if condition is True Extend average to say “You failed!” Commands only executed if condition is False
if-else exercise Write a program that asks the user to enter a number. If the number is 3, print a message indicating that they entered your favorite number, and otherwise, indicate that you don’t like the chosen number.
Decisions: if-elif-else Statement if(<condition>): command elif(<condition>): else: Commands only executed if condition is True You can used as many of these as you like Commands only executed if earlier conditions are False and this condition is True Elif is a contraction for else-if Extend average to say “You got a perfect score!” You can also nest the conditionals Commands only executed if EVERY condition is False
if-elif-else example number = int(input(“Please enter your number: “)) if number < 10: print number, “is small” elif number < 100: print number, “is pretty big” elif number < 500: print number, “is big” else: print “Wow, a really big number!” Sample Run: Please enter your number: 355 355 is big
Decisions: Nested ifs You can put if statements inside the body of the if (or elif or else) statement: if(<condition>): if(<some other condition>): command else: elif(<condition>): … Grade example: if-elif… : Print "A", "B", …, "F" Then nest if-else in body of first block: if grade >= 97, print "A+", else print "A".
Decisions: Gotchas Exactly ONE of the bodies in if-elif-else will be executed Only the first True condition THINK about the construction of your if statements before coding
Question for you: Decisions What is the expected output? if(125<140): print “first one” elif(156>=140): print (“second one”) else: print(“third one”) A. first one C. third one B. second one D. first one second one A