Institute of Computer Science
  1. Courses
  2. 2020/21 spring
  3. Computer Programming (LTAT.03.001)
ET
Log in

Computer Programming 2020/21 spring

  • Home

Homework for Week 8

Files

Watch lecture videos:

Slides in English

Textbook in English

Quiz

Go to Moodle and solve the quiz on files.

Examples

NB! Make sure that the text files (.txt) are in the same folder with your Python code. Otherwise Python will not find the files.

Example 1. Shoe size

The file footlengths.txt contains data about foot lengths. The following program reads the data from the file, calculates the suitable shoe size for each foot length and prints the result. If the foot length cannot be converted into a number for some reason, then the program prints Invalid input and proceeds to the next line in the file.

def shoe_size(length):
    return round(1.5 * length + 2)

ffile = open("footlengths.txt")

for foot in ffile:
    try:
        f = float(foot)
        s = shoe_size(f)
        print("Foot length:", f, "Suitable shoe size is", s)
    except:
        print("Invalid input")

ffile.close()

Example 2. Uppercase

The following program prompts the user for filename, reads the file and prints the content of the file (line by line) in uppercase. The program finishes its work nicely regardless of whether the file exists in the folder or not.

fname = input("Please enter the file name: ")

try:
    ffile = open(fname)
except:
    print("File cannot be opened:", fname)
else:
    for line in ffile:
        print(line.strip().upper())
    ffile.close()

Exercises

1. Numbered lines

Write a program that prompts the user for filename and outputs all lines from the file, numbering them with consecutive integers. The program should finish nicely regardless of whether the file exists in the folder or not (use try-except).

For example, if we have the file names.txt with the following content:

 Jon Snow
 Arya Stark
 Tyrion Lannister
 Eddard Stark
 Melisandre

then the program should output:

 Enter filename: names.txt
 1. Jon Snow
 2. Arya Stark
 3. Tyrion Lannister
 4. Eddard Stark
 5. Melisandre

2. Sale

A shop sells different kinds of products. The shop owner has written the prices of all products in the file prices.txt. For example, bananas cost 1 euro per kilogram, tomatoes cost 3 euros, etc. For each product, the file has two lines: product name on one line and its price on the next line. For example, the content of the file may be:

 bananas
 1
 tomatoes
 3
 avocados
 three
 walnuts
 18-19
 yellow plums
 4.5

For a sale, the shop owner wants to lower all prices by 10%. Write a program that reads the products and prices from the file, computes the new prices, if possible, and prints them on the screen, rounded to two decimal places.

The output should contain one line for each product. If price conversion is successful, then the line contains the name of the product and its new price. If price conversion is not successful, then the program should inform the user that the price for that product couldn't be computed.

 New price for bananas is 0.9 euros.
 New price for tomatoes is 2.7 euros.
 Cannot convert the price for avocados.
 Cannot convert the price for walnuts.
 New price for yellow plums is 4.05 euros.

Autochecker. The program doesn't prompt the user for anything, the data will always be read from the text file prices.txt. In the output, the data for each product must be on a separate line.

3. Taxi prices

The party ended and everybody starts to go home. The file taxiprices.txt contains information about taxi prices, where each line consists of taxi name, kilometer price, and starting fee, separated by commas. The program should ask for distance to home in kilometers and output the name of the cheapest taxi, according to the prices in the taxi price file.

Example

Content of the file taxiprices.txt:

 Maxitaxi,0.6,2.0
 Friendshare,0,10
 Waldo takso,1.0,1.0

The output of the program:

 Enter distance in kilometers: 7
 Maxitaxi is the cheapest.

Taxi fare is computed by the formula kilometer price × distance in kilometers + starting fee.

The program should not ask for a filename. It can assume that the file taxiprices.txt exists.

Hint

>>> s = 'xx,yy,zz'.split(',')
>>> s
['xx', 'yy', 'zz']
>>> s[1]
'yy'

Submit your solutions

Submit your solutions of exercises 1, 2, and 3 in Moodle under the names home1.py, home2.py, and home3.py.

  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment