Plutonic Rainbows

Introduction to Loops

A simple script for displaying how loops work.

i = 0

numbers = []

while i < 8:
    print "At the top i is now %d" % i
    numbers.append(i)

    i = i + 1
    print "Numbers now:", numbers
    print "Number at the bottom is now: %d" % i

print "The numbers:"

for num in numbers:
    print num

Salary Calculator 2

Here is a slightly modified script for the Salary Calculator. This time we are writing the result to a text file. Some folks over on the Python forum helped me with target.write(str(round(total, 2)).encode()) as I could not figure a way to round the decimal place correctly.

# -*- encoding: utf-8 -*-

from sys import argv
script, answer = argv

def salary(weeks, payments):
    return (weeks * payments)

weeks = (float(raw_input("Weeks: ")))
payments = (float(raw_input("Payments: ")))

total = salary(weeks, payments)

target = open(answer, 'w')
target.truncate()

target.write(str(round(total, 2)).encode())

target.close()

Salary Calculator

This script uses quite a few new things including a function. It calculates two user input values and then gives an answer depending on the outcome. The user is asked for the number of weeks and the payment each week.

# -*- encoding: utf-8 -*-

def salary(weeks, payments):
    return (weeks * payments)

weeks = (float(raw_input("Weeks: ")))
payments = (float(raw_input("Payments: ")))

total = salary(weeks, payments)

print "\nThe total is {0:.2f}".format (total)

if total < 7999 or total == 7999:
    print "That's not good enough.\n"

else:
    print "You are on target.\n"

The script also uses float and format for currencies and values that use decimal places. Don't forget to declare -*- encoding: utf-8 -*- at the beginning of the script.

Data Length

These few lines of code are useful to calculate the size of a file. Later, we'll combine it with another script.

from sys import argv
script, filename = argv

a1 = open(filename)
data = a1.read()

print "The size of the file is %r bytes." % len (data)

Condensing

In the last script, I mentioned about condensing the lines down. It's actually very simple to do. Just insert a semi-colon between lines.

For example:

from sys import argv script, filename becomes from sys import argv;script, filename

If you apply this in your scripts, things become much more manageable to read. Here is the previous script with the new additions.

from sys import argv;script, file_name = argv

print "Hello. let's erase the contents of the file called: '%s'." % file_name
print "If you do not want this, hit CTRL-C."

raw_input("?")

print "Opening file..."

target = open(file_name, 'w');target.truncate()

print "Contents now erased."

line1 = raw_input("Line 1: ");line2 = raw_input("Line 2: ");line3 = raw_input("Line 3: ")

print "Writing three lines..."

target.write(line1);target.write("\n");target.write(line2);target.write("\n");target.write(line3);target.write("\n")

print "Done.";print "Let's close the file."

target.close()

print "All finished."

As you can see, most of the time is saved with the part where the script asks for raw_input and when using target.write.