Plutonic Rainbows

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.

Erasing and Writing to a Text File

This looks quite complicated but that's only because a lot of the lines can be condensed. The script opens the file, erases the contents and then allows the user to write in new data. Used with other scripts, it's quite a powerful few lines of code.

from sys import argv

script, filename = argv

print "We are going to erase %r." % filename
print "If you don't want that, press ctrl-c."
print "Otherwise, hit Return."

raw_input("?")

print "Opening the file..."
target = open(filename, 'w')

print "Truncating the file...Goodbye"
target.truncate()

print "Now I am going to ask you for three lines."

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

print "I am going to write these to the file."

target.write(line1)
target.write("\n")

target.write(line2)
target.write("\n")

target.write(line3)
target.write("\n")

print "And finally, we close it."
target.close()