# HG changeset patch # User Madhusudan.C.S # Date 1284753321 -19800 # Node ID 6537f447efc05344d44fd745bf9cd1178e316281 # Parent d12107cbe14b6ca017c89241331cd692e41675e6 Adding the script for the session on Python conditional constructs. diff -r d12107cbe14b -r 6537f447efc0 conditionals.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/conditionals.rst Sat Sep 18 01:25:21 2010 +0530 @@ -0,0 +1,176 @@ +Hello friends. Welcome to this spoken tutorial on Getting started with +strings. + +{{{ Show the slide containing the title }}} + +{{{ Show the slide containing the outline }}} + +In this tutorial, we will learn the basic conditional constructs +available in Python. We learn the if/else, if/elif/else and ternary +conditional constructs available in Python. + +{{{ Shift to terminal and start ipython }}} + +To begin with let us start ipython, by typing:: + + ipython + +on the terminal + +Whenever we have two possible states that can occur depending on a +whether a certain condition we can use if/else construct in +Python. Say for example we have a variable "a" which stores integers +and we are required to find out whether the value of the variable "a" +is an even number or an odd number. To test out conditional statements +as an example, let us say the value of the variable "a" is 5:: + + a = 5 + +In such a case we can write the if/else block as:: + + if a % 2 == 0: + print "Even" + else: + print "Odd" + +When the value of the variable "a" is divided by 2 and the remainder +is 0 i.e. the result of the operation "a modulo 2" is 0 the condition +"a % 2 == 0" evaluates to True, so the code within the if block gets +executed. This means that the value of "a" is Even. + +If the operation "a modulo 2" is not 0 the condition "a % 2 == 0" +evaluates to False and hence the code block within else gets executed +which means that the value of "a" is Odd. + +Note in such a case only one of the two blocks get executed depending +on whether the condition is True or False. + +There is a very important sytactic element to understand here. All the +statements which are inside a certain code block are indented by 4 +spaces. The statement which starts a new code block after it, i.e. the +if statement in this example ends with a colon (:). So the next +immediate line will be inside the if block and hence indented by 4 +spaces. To come out of the code block we have to come back to the +previous indentation level as shown in the else line here. Again the +line following else will be in a new block so else line ends with a +colon and the following block of code is indented by 4. + +As we use if/else statement when we have a condition which can take +one of the two states, we may have conditions which can take more than +two states. In such a scenario Python provides if/elif/else +statements. Let us take an example. We have a variable "a" which holds +integer values. We need to print "positive" if the value of a is +positive, "negative" if it is negative and "zero" if the value of the +variable "a" is 0. Let us use if/elif/else ladder for it. For the +purposes of testing our code let us assume that the value of a is -3:: + + a = -3 + + if a > 0: + print "positive" + elif a < 0: + print "negative" + else: + print "zero" + +This if/elif/else ladder is self explanatory. All the syntax and rules +as said for if/else statements hold. The only addition here is the +elif statement which can have another condition of its own. + +Here, exactly one block of code is executed and that block of code +corresponds to the condition which first evaluates to True. Even if +there is a situation where multiple conditions evaluate to True all +the subsequent conditions other than the first one which evaluates to +True are neglected. Consequently, the else block gets executed if and +only if all the conditions evaluate to False. + +Also, the else block in both if/else statement and if/elif/else is +optional. We can have a single if statement or just if/elif statements +without having else block at all. Also, there can be any number of +elif's within an if/elif/else ladder. For example + +{{{ Show slide for this }}} + + if user == 'admin': + # Do admin operations + elif user == 'moderator': + # Do moderator operations + elif user == 'client': + # Do customer operations + +{{{ end of slide switch to ipython }}} + +is completely valid. Note that there are multiple elif blocks and there +is no else block. + +In addition to these conditional statements, Python provides a very +convenient ternary conditional operator. Let us take the following +example where we read the marks data from a data file which is +obtained as a string as we read a file. The marks can be in the range +of 0 to 100 or 'AA' if the student is absent. In such a case to obtain +the marks as an integer we can use the ternary conditional +operator. Let us say the string score is stored in score_str +variable:: + + score_str = 'AA' + +Now let us use the ternary conditional operator:: + + score = int(score_str) if score_str != 'AA' else 0 + +This is just the if/else statement block which written in a more +convenient form and is very helpful when we have only one statement +for each block. This conditional statement effectively means as we +would have exactly specified in the English language which will be +like score is integer of score_str is score_str is not 'AA' otherwise +it is 0. This means that we make the scores of the students who were +absent for the exam 0. + +Moving on, there are certain situations where we will have to no +operations or statements within the block of code. For example, we +have a code where we are waiting for the keyboard input. If the user +enters "s" as the input we would perform some operation nothing +otherwise. In such cases "pass" statement comes very handy:: + + a = raw_input("Enter 'c' to calculate and exit, 'd' to display the existing + results exit and 'x' to exit and any other key to continue: ") + + if a == 'c': + # Calculate the marks and exit + elif a == 'd': + # Display the results and exit + elif a == 'x': + # Exit the program + else: + pass + +In this case "pass" statement acts as a place holder for the block of +code. It is equivalent to a null operation. It literally does +nothing. So "pass" statement can be used as a null operation +statement, or it can used as a place holder when the actual code +implementation for a particular block of code is not known yet but has +to be filled up later. + +{{{ Show summary slide }}} + +This brings us to the end of the tutorial session on conditional +statements in Python. In this tutorial session we learnt + + * What are conditional statements + * if/else statement + * if/elif/else statement + * Ternary conditional statement - C if X else Y + * and the "pass" statement + +{{{ Show the "sponsored by FOSSEE" slide }}} + +This tutorial was created as a part of FOSSEE project, NME ICT, MHRD India + +Hope you have enjoyed and found it useful. +Thankyou + +.. Author : Madhu + Internal Reviewer 1 : [potential reviewer: Puneeth] + Internal Reviewer 2 : [potential reviewer: Anoop] + External Reviewer : +