If-Statements

The if statement should be familiar to anyone with a passing knowledge of programming. The idea of an if is that you want your script to execute a block of statements only when a certain condition is true. Python's if is simple to use, and has some additional keywords to provide more flexibility.

Simple If-Statement Example

The syntax for if is as follows:

Pseudocode - If Statement
# Note that 'if' uses lowercase characters.
# Additionally, a colon is placed after the expression. 
if expression:
 
	# The statements that should execute when the expression is true
	# MUST be indented.
	statement
ExampleOutput
x = 5
z = 15 
if x < 10:
	# Since the condition "x < 10" is true, 
	# the following line will execute
	print "'x' is less than 10"
if z < 10:
	# This condition "z < 10" is false, 
	# so the following line will not execute
	print "this will never show"
'x' is less than 10

On this page ...

IULocgo


Control Flow Logic

If and Else

You can use the if...else  form of an if statement to do one thing if a condition is true, and something else if the condition is false. 

ExampleOutput
x = 15
if x < 10:
   print "x is less than 10"
else:
   print "x is not less than 10"
x is not less than 10

Elif (Else If)

Lastly, you can use the if...elif form. This form combines multiple condition checks. elif stands for "else if". This form can optionally have a catch-all else clause at the end. For example, this script will print out three:

ExampleOutput
x = 3
if x == 1:
   print "one"
elif x == 2:
   print "two"
elif x == 3:
   print "three"
else:
   print "not 1-3"
three

You can use as many elif items as you want, and the else is not required at the end.


For-Loops and While-Loops

For-Loop

Python's for loop may be a bit different than what you're used to if you've programmed any C. The for loop is specialized to iterate over the elements of any sequence, like a list. A for loop uses an iterator variable to reference each item as it steps through the sequence. This means it's very simple to write a loop! 

Note that the syntax of the for-loop requires use of the in-keyword. 

Pseudocode - For Loop
# In this example, "item" is a variable created specifically by the "for" loop to act as an iterator.
# The name "item" is not a keyword, and a different variable name may be used. 
# Additionally, note that "for" and "in" are lowercase, and a colon is present at the end of the line. 
for item in sequence:
	# All statements that should execute each iteration must be indented after the "for" statement
	statement

IULocgo


Control Flow Loops

ExampleOutput
listOfFruit = ['Apples', 'Oranges', 'Bananas']
for fruit in listOfFruit:
   print fruit
Apples
Oranges
Bananas


You don't need to manually create a sequence to repeat a task several times in a for loop. Instead, the built-in function range() function can generate a variable-size list of integers starting at zero. For example, calling range(4) will return the list [0, 1, 2, 3]. 

ExampleOutput
# Even though this example isn't using the value of "x", 
# the print statement will still be executed once for each item 
# in the list returned by range().
for x in range(4):
   print "this will print 4 times"
this will print 4 times
this will print 4 times
this will print 4 times
this will print 4 times

While-Loop

A while loop will repeat a block of statements as long as a condition is true. This code will print out the contents of the items in the list.

Pseudocode - While Loop
# A while loop simply needs the keyword "while", the condition that 
# determines when we should stop iterating, and a colon at the end of the line. 
while condition:
	# All statements that should be repeated each iteration must be indented after the "while" statement
	statement.


This code uses a function called len() , which is a built-in function that returns the length of a sequence.

ExampleOutput
listOfFruit = ['Apples', 'Oranges', 'Bananas']
x = 0
while x < len(listOfFruit):
   print listOfFruit[x]
   x = x + 1
Apples
Oranges
Bananas

The Break and Continue Statements

You can stop a loop from repeating in its tracks by using the break  statement. This code will print out " Loop " exactly  two  times, and then print " Finished ".

ExampleOutput
for x in range(10):
   if x >= 2:
      break
   print "Loop"
print "Finished"
Loop
Loop
Finished


You can use the continue statement to make a loop stop executing its current iteration and skip to the beginning of the next iteration. The following code will print out the numbers 0-9, skipping 4

ExampleOutput
for x in range(10):
   if x == 4:
      continue
   print x
0
1
2
3
5
6
7
8
9

Infinite Loops

It is incredibly easy to create an infinite loop when using a while statement. Depending where the infinite loop was created, it could cause you to lose your work in the Designer, or create a large amount of overhead on the Gateway.

Python - Infinite Loop Created by While Statement
x = 0
while x < 10:
	x += 1 # Forgetting to add a way to increment "x" will cause an infinite loop
	print x


In many cases, a for loop could be used instead of a while, but this is not always possible. When using while, the best way to avoid an infinite loop is to make sure you always have a way to exit the loop: a simple approach involves using a counter that can eventually trigger a break statement, or add the counter as an additional condition to the while.

Python - Preventing Infinite Loops Using the Break Keyword
###Example 1: using the break keyword
# The counter variable will be used as a guaranteed way out of the While.
counter = 0

# Normally, using True as a condition in a While would be a quick 
# way to generate an infinite loop, but the counter helps prevent that.
while (True):	

	# Increase the counter
	counter += 1

	# Check the value of the counter. If it's at the point where we can assume we're going to be looping indefinitely...
	if counter >= 1000:

		# Break out of the loop
		break
Python - Preventing Infinite Loops Using an Additional Condition
###Example 2: using an additional condition
# Again, the counter variable will be used as a guaranteed way out of the While.
counter = 0

# Instead of using nested logic, we can simply add counter's value as an additional condition with "and"
while (True and counter < 1000):	

	# Increase the counter. Once counter >= 1000, the while loop will be forced to end. 
	counter += 1


The Pass Keyword

When using conditional statements and loops, the pass keyword can be especially useful when writing a new script. When called, the pass keyword does nothing, which may seem useless. However it is great when you find yourself in a situation where you need a line of code to meet a syntax requirement, but don't want the code to do any additional work.

Python - Pass Keyword
myVar = system.tag.read(tagPath).value

if myVar == 0:
	firstFunction()
elif myVar == 1:
	secondFunction()
elif myVar == 2:
	# I haven't implemented the thirdFunction() yet, so I can use pass here as a placeholder
	pass.



  • No labels