pdf to image converter in c# : A pdf password online software control cloud windows web page .net class HowToThinkLikeAComputerScientist_LearningWithPython38-part2026

5. Conditionals — How to Think Like a Computer Scientist: Learning with Python 3
http://openbookproject.net/thinkcs/python/english3e/conditionals.html[1/4/2012 9:37:12 PM]
It produces the following, which is more satisfying:
Mmm. Perhaps the bars should not be joined to each other at the bottom. We’ll need to pick up the
pen while making the gap between the bars. We’ll leave that as an exercise for you!
5.11. Glossary
block
A group of consecutive statements with the same indentation.
body
The block of statements in a compound statement that follows the header.
boolean expression
An expression that is either true or false.
boolean value
There are exactly two boolean values: True and False. Boolean values result when a boolean
expression is evaluated by the Python interepreter. They have type 
bool.
branch
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
t.left(90)
t.end_fill()             # added this line
t.forward(10)
wn = turtle.Screen()         # Set up the window and its attributes
wn.bgcolor("lightgreen")
tess = turtle.Turtle()       # create tess and set some attributes
tess.color("blue""red")
tess.pensize(3)
xs = [48,117,200,240,160,260,220]
for a in xs:
draw_bar(tess, a)
wn.mainloop()
A pdf password online - C# PDF Password Library: add, remove, edit PDF file password in C#.net, ASP.NET, MVC, WinForms, WPF
Help to Improve the Security of Your PDF Document by Setting Password
pdf print protection; pdf password remover online
A pdf password online - VB.NET PDF Password Library: add, remove, edit PDF file password in vb.net, ASP.NET, MVC, WinForms, WPF
Help to Improve the Security of Your PDF Document by Setting Password
adding a password to a pdf; a pdf password online
5. Conditionals — How to Think Like a Computer Scientist: Learning with Python 3
http://openbookproject.net/thinkcs/python/english3e/conditionals.html[1/4/2012 9:37:12 PM]
One of the possible paths of the flow of execution determined by conditional execution.
chained conditional
A conditional branch with more than two possible flows of execution. In Python chained
conditionals are written with 
if ... elif ... else statements.
comparison operator
One of the operators that compares two values: 
==
!=
>
<
>=, and 
<=.
condition
The boolean expression in a conditional statement that determines which branch is executed.
conditional statement
A statement that controls the flow of execution depending on some condition. In Python the
keywords 
if
elif, and 
else are used for conditional statements.
logical operator
One of the operators that combines boolean expressions: 
and
or, and 
not.
modulus operator
An operator, denoted with a percent sign ( 
%), that works on integers and yields the remainder
when one number is divided by another.
nesting
One program structure within another, such as a conditional statement inside a branch of another
conditional statement.
prompt
A visual cue that tells the user to input data.
type conversion
An explicit function call that takes a value of one type and computes a corresponding value of
another type.
wrapping code in a function
The process of adding a function header and parameters to a sequence of program statements is
often refered to as “wrapping the code in a function”. This process is very useful whenever the
program statements in question are going to be used multiple times. It is even more useful when
it allows the programmer to express their mental chunking, and how they’ve broken a complex
problem into pieces.
5.12. Exercises
1.  Evaluate the following numerical expressions in your head, then use the Python interpreter to
check your results:
1. 
>>> 5 % 2
2. 
>>> 9 % 5
3. 
>>> 15 % 12
4. 
>>> 12 % 15
5. 
>>> 6 % 6
6. 
>>> 0 % 7
Online Remove password from protected PDF file
Online Remove Password from Protected PDF file. Download Free Trial. Remove password from protected PDF file. Find your password-protected PDF and upload it.
create password protected pdf online; add password to pdf without acrobat
C# HTML5 PDF Viewer SDK to view PDF document online in C#.NET
RasterEdge. PRODUCTS: ONLINE DEMOS: Online HTML5 Document Viewer; Online XDoc.PDF PDF; Merge PDF Files; Split PDF Document; Remove Password from PDF; Change PDF
password on pdf; password protected pdf
5. Conditionals — How to Think Like a Computer Scientist: Learning with Python 3
http://openbookproject.net/thinkcs/python/english3e/conditionals.html[1/4/2012 9:37:12 PM]
7. 
>>> 7 % 0
What happened with the last example? Why? If you were able to correctly anticipate the
computer’s response in all but the last one, it is time to move on. If not, take time now to make
up examples of your own. Explore the modulus operator until you are confident you understand
how it works.
2.  You look at the clock and it is exactly 2pm. You set an alarm to go off in 51 hours. At what time
does the alarm go off?
3.  Write a Python program to solve the general version of the above problem. Ask the user for the
time now (in hours), and ask for the number of hours to wait. Your program should output what
the time will be on the clock when the alarm goes off.
4.  Assume the days of the week are numbered 0,1,2,3,4,5,6 from Sunday to Saturday. Write a
function which is given the day number, and it returns the day name (a string).
5.  You go on a wonderful holiday (perhaps to jail, if you don’t like happy exercises) leaving on day
number 3 (a Wednesday). You return home after 137 sleeps. Write a general version of the
program which asks for the starting day number, and the length of your stay, and it will tell you
the name of day of the week you will return on.
6.  Give the logical opposites of these conditions
1. 
a > b
2. 
a >= b
3. 
a >= 18  and  day == 3
4. 
a >= 18  and  day != 3
7.  What do these expressions evaluate to?
1. 
3 == 3
2. 
3 != 3
3. 
3 >= 4
4. 
not (3 < 4)
8.  Write a function which is given an exam mark, and it returns a string — the grade for that mark
— according to this scheme:
Mark
Grade
>= 75
First
[70-75) Upper Second
[60-70) Second
[50-60) Third
[45-50) F1 Supp
[40-45) F2
< 40
F3
The square and round brackets denote closed and open intervals. A closed interval includes the
number, and open interval excludes it. So 39.99999 gets grade F3, but 40 gets grade F2.
Assume
VB.NET PDF- View PDF Online with VB.NET HTML5 PDF Viewer
RasterEdge. PRODUCTS: ONLINE DEMOS: Online HTML5 Document Viewer; Online XDoc.PDF PDF; Merge PDF Files; Split PDF Document; Remove Password from PDF; Change PDF
break pdf password online; pdf password remover
C# HTML5 PDF Viewer SDK to view, annotate, create and convert PDF
document protection. Users are able to set a password to PDF online directly in ASPX webpage. C#.NET: Edit PDF Permission in ASP.NET.
add password to pdf file; pdf security password
5. Conditionals — How to Think Like a Computer Scientist: Learning with Python 3
http://openbookproject.net/thinkcs/python/english3e/conditionals.html[1/4/2012 9:37:12 PM]
index
next |
previous  |
How to Think Like a Computer Scientist: Learning with Python 3 »
Test your function by printing the mark and the grade for all the elements in this list.
9.  Modify the turtle bar chart program so that the pen is up for the small gaps between each bar.
10.  Modify the turtle bar chart program so that the bar for any value of 200 or more is filled with
red, values between [100 and 200) are filled with yellow, and bars representing values less than
100 are filled with green.
11.  In the turtle bar chart program, what do you expect to happen if one or more of the data values
in the list is negative? Try it out. Change the program so that when it prints the text value for
the negative bars, it puts the text below the bottom of the bar.
12.  Write a function 
find_hypot which, given the length of two sides of a right-angled triangle,
returns the length of the hypotenuse. (Hint: 
x ** 0.5 will return the square root.)
13.  Write a function 
is_rightangled which, given the length of three sides of a triangle, will
determine whether the triangle is right-angled. Assume that the third argument to the function
is always the longest side. It will return True if the triangle is right-angled, or False otherwise.
Hint: floating point arithmetic is not always exactly accurate, so it is not safe to test floating
point numbers for equality. If a good programmer wants to know whether 
x is equal or close
enough to 
y, they would probably code it up as
14.  Extend the above program so that the sides can be given to the function in any order.
© 
Copyright 2011, Peter Wentworth, Jeffrey Elkner, Allen B. Downey and Chris Meyers. Created using 
Sphinx 1.0.7.
xs = [83, 75, 74.9, 70, 69.9, 65, 60, 59.9, 55, 50,
49.9, 45, 44.9, 40, 39.9, 2, 0
if  abs(x-y) < 0.000001:    # if x is approximately equal to y
...
C# HTML5 PDF Viewer SDK to create PDF document from other file
RasterEdge. PRODUCTS: ONLINE DEMOS: Online HTML5 Document Viewer; Online XDoc.PDF PDF; Merge PDF Files; Split PDF Document; Remove Password from PDF; Change PDF
pdf protected mode; pdf password encryption
VB.NET PDF - Convert PDF Online with VB.NET HTML5 PDF Viewer
RasterEdge. PRODUCTS: ONLINE DEMOS: Online HTML5 Document Viewer; Online XDoc.PDF PDF; Merge PDF Files; Split PDF Document; Remove Password from PDF; Change PDF
password pdf; create password protected pdf from word
6. Fruitful functions — How to Think Like a Computer Scientist: Learning with Python 3
http://openbookproject.net/thinkcs/python/english3e/fruitful_functions.html[1/4/2012 9:37:16 PM]
index
next |
previous  |
How to Think Like a Computer Scientist: Learning with Python 3 »
6. Fruitful functions
6.1. Return values
The built-in functions we have used, such as 
abs
pow
int
max, and 
range, have produced results.
Calling each of these functions generates a value, which we usually assign to a variable or use as part
of an expression.
We also wrote our own function to return the final amount for a compound interest calculation.
In this chapter, we are going to write more functions that return values, which we will call 
fruitful
functions
, for want of a better name. The first example is 
area, which returns the area of a circle with
the given radius:
We have seen the 
return statement before, but in a fruitful function the 
return statement includes a
return value. This statement means: evaluate the return expression, and then return it immediately as
the result (the fruit) of this function. The expression provided can be arbitrarily complicated, so we
could have written this function like this:
On the other hand, temporary variables like 
b above often make debugging easier.
Sometimes it is useful to have multiple return statements, one in each branch of a conditional. We
have already seen the built-in 
abs, now we see how to write our own:
Another way to write the above function is to leave out the 
else and just follow the 
if condition by the
second 
return statement.
1
2
biggest = max(3725)
= abs(3 - 11+ 10
1
2
3
def area(radius):
= 3.14159 * radius**2
return b
1
2
def area(radius):
return 3.14159 * radius * radius
1
2
3
4
5
def absolute_value(x):
if x < 0:
return -x
else:
return x
VB.NET PDF - Create PDF Online with VB.NET HTML5 PDF Viewer
RasterEdge. PRODUCTS: ONLINE DEMOS: Online HTML5 Document Viewer; Online XDoc.PDF PDF; Merge PDF Files; Split PDF Document; Remove Password from PDF; Change PDF
password pdf files; adding password to pdf file
VB.NET PDF - Annotate PDF Online with VB.NET HTML5 PDF Viewer
VB.NET PDF - Annotate PDF Online with VB.NET HTML5 PDF Viewer. Explanation about transparency. VB.NET HTML5 PDF Viewer: Annotate PDF Online. This
convert password protected pdf files to word online; pdf password protect
6. Fruitful functions — How to Think Like a Computer Scientist: Learning with Python 3
http://openbookproject.net/thinkcs/python/english3e/fruitful_functions.html[1/4/2012 9:37:16 PM]
Think about this version and convince yourself it works the same as the first one.
Code that appears after a 
return statement, or any other place the flow of execution can never reach,
is called dead code, or unreachable code.
In a fruitful function, it is a good idea to ensure that every possible path through the program hits a
return statement. The following version of 
absolute_value fails to do this:
This version is not correct because if 
x happens to be 0, neither condition is true, and the function
ends without hitting a 
return statement. In this case, the return value is a special value called None:
All Python functions return None whenever they do not return another value.
It is also possible to use a return statement in the middle of a 
for loop, in which case control
immediately returns from the function. Let us assume that we want a function which looks through a
list of words. It should return the first 2-letter word. If there is not one, it should return the empty
string:
Single-step through this code and convince yourself that in the first test case that we’ve provided, the
function returns while processing the second element in the list: it does not have to traverse the
whole list.
6.2. Program development
At this point, you should be able to look at complete functions and tell what they do. Also, if you have
been doing the exercises, you have written some small functions. As you write larger functions, you
1
2
3
4
def absolute_value(x):
if x < 0:
return -x
return x
1
2
3
4
5
def bad_absolute_value(x):
if x < 0:
return -x
elif x > 0:
return x
>>> print(bad_absolute_value(0))
None
1
2
3
4
5
def find_first_2_letter_word(xs):
for wd in xs:
if len(wd) == 2:
return wd
return ''
>>> find_first_2_letter_word(['This' 'is''a''dead''parrot'])
'is'
>>> find_first_2_letter_word(["I",  "like" "cheese"])
''
6. Fruitful functions — How to Think Like a Computer Scientist: Learning with Python 3
http://openbookproject.net/thinkcs/python/english3e/fruitful_functions.html[1/4/2012 9:37:16 PM]
might start to have more difficulty, especially with runtime and semantic errors.
To deal with increasingly complex programs, we are going to suggest a technique called incremental
development. The goal of incremental development is to avoid long debugging sessions by adding
and testing only a small amount of code at a time.
As an example, suppose you want to find the distance between two points, given by the coordinates
(x
1
, y
1
) and (x
2
, y
2
). By the Pythagorean theorem, the distance is:
The first step is to consider what a 
distance function should look like in Python. In other words, what
are the inputs (parameters) and what is the output (return value)?
In this case, the two points are the inputs, which we can represent using four parameters. The return
value is the distance, which is a floating-point value.
Already we can write an outline of the function that captures our thinking so far:
Obviously, this version of the function doesn’t compute distances; it always returns zero. But it is
syntactically correct, and it will run, which means that we can test it before we make it more
complicated.
To test the new function, we call it with sample values:
We chose these values so that the horizontal distance equals 3 and the vertical distance equals 4; that
way, the result is 5 (the hypotenuse of a 3-4-5 triangle). When testing a function, it is useful to know
the right answer.
At this point we have confirmed that the function is syntactically correct, and we can start adding
lines of code. After each incremental change, we test the function again. If an error occurs at any
point, we know where it must be — in the last line we added.
A logical first step in the computation is to find the differences x
2
- x
1
and y
2
- y
1
. We will store those
values in temporary variables named 
dx and 
dy.
If we call the function with the arguments shown above, when the flow of execution gets to the return
statement, dx should be 3 and dy should be 4. We can check that this is the case in PyScripter by
putting the cursor on the return statement, and running the program to break execution when it gets
to the cursor (using the F4 key). Then we inspect the variables 
dx and 
dy by hovering the mouse above
1
2
def distance(x1, y1, x2, y2):
return 0.0
>>> distance(1246)
0.0
1
2
3
4
def distance(x1, y1, x2, y2):
dx = x2 - x1
dy = y2 - y1
return 0.0
6. Fruitful functions — How to Think Like a Computer Scientist: Learning with Python 3
http://openbookproject.net/thinkcs/python/english3e/fruitful_functions.html[1/4/2012 9:37:16 PM]
them, to confirm that the function is getting the right parameters and performing the first
computation correctly. If not, there are only a few lines to check.
Next we compute the sum of squares of 
dx and 
dy:
Again, we could run the program at this stage and check the value of 
dsquared (which should be 25).
Finally, using the fractional exponent 
0.5 to find the square root, we compute and return the result:
If that works correctly, you are done. Otherwise, you might want to inspect the value of 
result before
the return statement.
When you start out, you might add only a line or two of code at a time. As you gain more experience,
you might find yourself writing and debugging bigger conceptual chunks. Either way, stepping
through your code one line at a time and veryifying that each step matches your expectations can
save you a lot of debugging time. As you improve your programming skills you should find yourself
managing bigger and bigger chunks: this is very similar to the way we learnt to read letters, syllables,
words, phrases, sentences, paragraphs, etc., or the way we learn to chunk music — from indvidual
notes to chords, bars, phrases, and so on.
The key aspects of the process are:
1.  Start with a working skeleton program and make small incremental changes. At any point, if
there is an error, you will know exactly where it is.
2.  Use temporary variables to hold intermediate values so that you can easily inspect and check
them.
3.  Once the program is working, relax, sit back, and play around with your options. (There is
interesting research that links “playfulness” to better understanding, better learning, more
enjoyment, and a more positive mindset about what you can achieve — so spend some time
fiddling around!) You might want to consolidate multiple statements into one bigger compound
expression, or rename the variables you’ve used, or see if you can make the function shorter. A
good guideline is to aim for making code as easy as possible for others to read.
Here is another version of the function. It makes use of a square root function that is in the 
math
module (we’ll learn about modules shortly). Which do you prefer? Which looks “closer” to the
Pythagorean formula we started out with?
1
2
3
4
5
def distance(x1, y1, x2, y2):
dx = x2 - x1
dy = y2 - y1
dsquared = dx*dx + dy*dy
return 0.0
1
2
3
4
5
6
def distance(x1, y1, x2, y2):
dx = x2 - x1
dy = y2 - y1
dsquared = dx*dx + dy*dy
result = dsquared**0.5
return result
1
import math
6. Fruitful functions — How to Think Like a Computer Scientist: Learning with Python 3
http://openbookproject.net/thinkcs/python/english3e/fruitful_functions.html[1/4/2012 9:37:16 PM]
6.3. Debugging with 
print
Another powerful technique for debugging (an alternative to single-stepping and inspection of
program variables), is to insert extra 
print functions in carefully selected places in your code. Then,
by inspecting the output of the program, you can check whether the algorithm is doing what you
expect it to. Be clear about the following, however:
You must have a clear solution to the problem, and must know what should happen before you
can debug a program. Work on 
solving
the problem on a piece of paper (perhaps using a
flowchart to record the steps you take) 
before
you concern yourself with writing code. Writing a
program doesn’t solve the problem — it simply 
automates
the manual steps you would take. So
first make sure you have a pen-and-paper manual solution that works. Programming then is
about making those manual steps happen automatically.
Do not write chatterbox functions. A chatterbox is a fruitful function that, in addition to its
primary task, also asks the user for input, or prints output, when it would be more useful if it
simply shut up and did its work quietly.
For example, we’ve seen built-in functions like 
range
max and 
abs. None of these would be
useful building blocks for other programs if they prompted the user for input, or printed their
results while they performed their tasks.
So a good tip is to avoid calling 
print and 
input functions inside fruitful functions, 
unless the
primary purpose of your function is to perform input and output
. The one exception to this rule
might be to temporarily sprinkle some calls to 
print into your code to help debug and
understand what is happening when the code runs, but these will then be removed once you get
things working.
6.4. Composition
As you should expect by now, you can call one function from within another. This ability is called
composition.
As an example, we’ll write a function that takes two points, the center of the circle and a point on the
perimeter, and computes the area of the circle.
Assume that the center point is stored in the variables 
xc and 
yc, and the perimeter point is in 
xp and
yp. The first step is to find the radius of the circle, which is the distance between the two points.
Fortunately, we’ve just written a function, 
distance, that does just that, so now all we have to do is
use it:
2
3
4
def distance(x1, y1, x2, y2):
return math.sqrt( (x2-x1)**2 + (y2-y1)**2 )
>>> distance(1246)
5.0
1
radius = distance(xc, yc, xp, yp)
6. Fruitful functions — How to Think Like a Computer Scientist: Learning with Python 3
http://openbookproject.net/thinkcs/python/english3e/fruitful_functions.html[1/4/2012 9:37:16 PM]
The second step is to find the area of a circle with that radius and return it. Again we will use one of
our earlier functions:
Wrapping that up in a function, we get:
We called this function 
area2 to distinguish it from the 
area function defined earlier. There can only be
one function with a given name within a module.
The temporary variables 
radius and 
result are useful for development, debugging, and single-
stepping through the code to inspect what is happening, but once the program is working, we can
make it more concise by composing the function calls:
6.5. Boolean functions
Functions can return boolean values, which is often convenient for hiding complicated tests inside
functions. For example:
The name of this function is 
is_divisible. It is common to give boolean functions names that sound
like yes/no questions. 
is_divisible returns either True or False to indicate whether the 
x is or is not
divisible by 
y.
We can make the function more concise by taking advantage of the fact that the condition of the 
if
statement is itself a boolean expression. We can return it directly, avoiding the 
if statement
altogether:
This session shows the new function in action:
1
2
result = area(radius)
return result
1
2
3
4
def area2(xc, yc, xp, yp):
radius = distance(xc, yc, xp, yp)
result = area(radius)
return result
1
2
def area2(xc, yc, xp, yp):
return area(distance(xc, yc, xp, yp))
1
2
3
4
5
def is_divisible(x, y):
if x % y == 0:
return True
else:
return False
1
2
def is_divisible(x, y):
return x % y == 0
Documents you may be interested
Documents you may be interested