Python syntax

Simple examples of the language's syntax. If you need a more complete description of the language, you should use python.org.

Important

The indentation is a part of the language. The indentation determines where the body of a loop or function ends.

Branching:

if x+y > 5:
    alert("The sum x + y is enormous!")
elif x<0 or y<0:
    error("Invalid x and y values")
else:
    message("The sum x + y is okay: %i" % (x+y)) 

Loops:

for i in range(5):
    message(i+1)
message("A rabbit went for a walk")

i = 10
while i>=0:
    message(i)
    i -= 1
alert("Start!") 

Functions:

def f1():
    alert("Function without parameters")

def f2(x, y):
    alert("Function with parameters x=%s, y=%s" % (x,y))
    if x > 5:
        alert("Come on, x is greater than 5!")

f1()
f2(3, 4) 

Lists:

lst = ["pastries", "ice cream", "cookies"]
lst.append("candies")
for x in lst:
    alert("I want %s!" % x)
lst.pop(1)
lst += ["cucumbers", "tomatoes"]
alert("And %s!" % lst[4])
first = lst[0]
last = lst[-1]
first_three = lst[:3]
last_three = lst[-3:]
middle = lst[2:3]

lst = [x for x in range(1,5)]
squared = [y*y for y in lst]
file = [x.strip() for x in open("readme.txt")]
words = "we use spaces to split a string into words".split(" ") 

Strings:

x = "Vasily"
y = "Pupkin"
z = x+y
alert(z)
z = " ".join( [x,y] )
alert(z) 

Formatting strings:

pi = 3.1415926
alert("PI accurate to 2 decimal places: %0.2f" % pi)
s = "PI accurate to 3 decimal places: %0.3f" % pi
alert(s)
name = "Vasya"
age = 25
s = "Hi, %s. You're probably %i" % (name, age)
alert(s) 

Formatting time:

import time
message(time.strftime("%H:%M:%S %d.%m.%Y", time.localtime())) 

The lambda expressions let you construct a function call using local variables. The function call can then be returned to be used later. This approach is helpful when interacting with the user and during long operations:

def hello(name, answer, correct):
    if answer==correct: message("Correct, %s!" % name)
    else: message("Actually, it's %s!" % correct)
def check_user_math(name):
    ask("Dear %s, what is 5 x 5?" % name,
        lambda x: hello(name, x, "25"),
        lambda: message("Again nobody wants to talk to a robot."))
ask("What's your name?", check_user_math, None) 

Global variables are easier to understand than lambda expressions:

def hello(answer):
    global name
    if answer==25: message("Correct, %s!" % name)
    else: message("Actually, it's 25!")
def check_user_math(n):
    global name
    name = n
    ask("Dear %s, what is 5 x 5?" % name,
        hello,
        None)
ask("What's your name?", check_user_math, None)