[SOLVED] CSC1010H Assignment 3-Python Selection and Iteration

35.00 $

Category:
Click Category Button to View Your Next Assignment | Homework

You will receive the following solution file(s) instantly after successful payment:

zip file icon Assignment3-srpswk.zip (1050.8 KB)
Assignment Instructions Updated Recently? Submit Below and we will provide new Solution!
Submit New Instructions
🔒 Securely Powered by:
Secure Checkout
5/5 - (2 votes)

CSC1010H Tutorial 3 – Python Selection and Iteration

Introduction

Learning outcomes

Skills

 Be able to construct and reason about Python solutions to programming problems involving selection and/or iteration.
Including,

o Constructing and reasoning about compound Boolean expressions involving the use of python comparison operators.

o Constructing and reasoning about data selection expressions that use of string slicing and casting.

Knowledge

  •   The forms of Python if, if-else and if-elif statements.
  •   Python comparison operators, the Boolean operators ‘and’, ‘not’ and ‘or’, and operator

    precedence.

  •   The form of the Python for loop, and the use of break and continue statements.
  •   The role of the range function in for loops.
  •   The distinction between definite and indefinite loop structures.
  •   Forms and possible uses of string slice and casting operations.

    Exercise One [25 marks]

    This exercise concerns decoding South African identity (ID) numbers.
    A South African ID number is a 13-digit number with the following format (courtesy Western Cape

    Government):

                             YYMMDDSSSSCAZ
    
  •   The first six digits are the person’s date of birth, with 2 digits for year, then 2 digits for month, then 2 digits for day e.g. 6th June 2017 is represented as 170606.
  •   The next four digits identify the person’s gender. Females are assigned numbers in the range 0000-4999. Males are assigned numbers in the range 5000-9999.
  •   The next digit indicates whether the person is South African citizen, or a permanent resident. A 0 denotes a South African citizen. A 1 denotes a permanent resident.
  •   The last digit is a checksum digit that is used to check that the number sequence is accurate.
  •   The second to last digit is not used.

    Part A [10 marks]
    Write a program called simpleparser.py that asks the user to input their ID number, and then decodes and prints out their date of birth, gender, and citizenship status.

    Sample I/O:

    Please enter your ID number:
    9202204720082
    

CONTINUED

Your date of birth is 20/02/92.
You are female.
You are a South African citizen.

Sample I/O:

Please enter your ID number:
1703295010174
Your date of birth is 29/03/17.
You are male.
You are a permanent resident.

The Luhn algorithm

The check digit at the end of an ID number is used to detect accidental mistakes, such a through misreading or mistyping. Given an ID, the validity (correctness) can be determined by recalculating the check digit and comparing it to that which is given.

A check digit is calculated by applying the Luhn algorithm to the first 12 digits: 𝑑11𝑑10𝑑9𝑑8𝑑7𝑑6𝑑5𝑑4𝑑3𝑑2𝑑1𝑑0𝑑𝑐

Essentially, the algorithm requires calculating the sum of the digits i.e.

𝑠𝑢𝑚 = 𝑑11+𝑑10+𝑑9+𝑑8+𝑑7+𝑑6+𝑑5+𝑑4+𝑑3+𝑑2+𝑑1+𝑑0

However, alternate digits are not added directly. For each of these, multiply by 2, obtain the modulus of 9, and add this to the total. (i.e for each 𝑑 in 𝑑10,𝑑8,𝑑6𝑑4𝑑2𝑑0, obtain (𝑑 ×
2) 𝑚𝑜𝑑𝑢𝑙𝑢𝑠 9).

The full summation is:

𝑠𝑢𝑚= 𝑑11+(𝑑10 ×2)𝑚𝑜𝑑𝑢𝑙𝑢𝑠9+𝑑9+⋯+𝑑1 +(𝑑0 ×2)𝑚𝑜𝑑𝑢𝑙𝑢𝑠9) Calculate the expected check digit by obtaining 𝑠𝑢𝑚 𝑚𝑜𝑑𝑢𝑙𝑢𝑠 10.
An ID number is valid if:

10 – (𝑠𝑢𝑚 𝑚𝑜𝑑𝑢𝑙𝑢𝑠 10) = 𝑑𝑐

Part B [15 marks]
Write a program called advancedparser.py that asks the user to input their ID number, and then does two things:

  1. (i)  using the check digit, it determines whether the number is valid;
  2. (ii)  (ii) if the number is valid then it decodes and prints out the user’s date of birth, gender,

    citizenship status.

Sample I/O:

Please enter your ID number:
9202204720082
Invalid ID number.

CONTINUED

Sample I/O:

Please enter your ID number:
1703295010174
Your date of birth is 29/03/17.
You are male.
You are a permanent resident.

Exercise Two [25 marks]

In South Africa, the department of transport issues different driving licenses depending on the category (or categories) of vehicle that the recipient wishes to drive (or learn to drive).

How is a vehicle classified? It depends on the Gross Vehicle Mass (GVM), and on whether the vehicle is ‘articulated’, or whether a trailer is being towed.

The GVM dictates the base class to which the vehicle belongs: B, C1, or C.

GVM≤3500 3500<GVM≤16000 16000<GVM

Class B Class C1 Class C

If, however, the vehicle is articulated, or is towing a trailer with a GVM greater than 750kg, then it belongs in an extended, ‘E’, version of the class: EB, EC1, or EC. (According to Wikipedia, an articulated vehicle is one “which has a permanent or semi-permanent pivoting joint in its construction”.)

Write a Python program called vehicleclassifier.py that can calculate the class to which a vehicle belongs.

Here are three examples of what should happen when the program runs:

What is the gross vehicle mass (in kg)?
2500
Does the vehicle have a trailer?
y
What is the gross vehicle mass of the trailer (in kg)?
400
This vehicle is class B.
What is the gross vehicle mass (in kg)?
4000
Does the vehicle have a trailer?
n
Is the vehicle articulated?
y
This vehicle is class EC1.
What is the gross vehicle mass (in kg)?
3000
Does the vehicle have a trailer?
y

The classification scheme does not allow for an articulated vehicle towing a trailer. It’s an ‘either-

or’ situation.

CONTINUED

What is the gross vehicle mass of the trailer (in kg)?
1000
This vehicle is class EB.

RECOMMENDATION: Develop your program in stages (as was done in exercise one). Start with a version that can determine the base class only:

What is the gross vehicle mass (in kg)?
2500
This vehicle is class B.

Extend your program with questions and tests to see if the vehicle belongs in an extended class. (HINT: Use string concatenation to add ‘E’ to the front of the base classification if it does.)

Exercise Three [25 marks]

This exercise concerns converting measurements in feet and inches (imperial system) to metres (metric system).

Part A [15 marks]
Write a program called feetmetres.py that displays a conversion table for measurements in feet to measurements in metres. The program should ask the user to enter the range of values that the table will hold. Here is an example of what should be output when the program runs:

Enter the minimum number of feet (not less than 0):
5
Enter the maximum number of feet (not more than 99):
10

5’| 6’| 7’| 8’| 9’|

10′ |

1.52m
1.83m
2.13m
2.44m
2.74m
3.05m

RECOMMENDATION: Develop your solution in parts. Try, for example, printing just the feet part before you start working on the conversion.

Enter the minimum number of feet (not less than 0):
5
Enter the maximum number of feet (not more than 99):
10
   5' |
   6' |
   7' |
   8' |
   9' |

10′ |

Leave out the feet symbol (“ ‘ “) initially, if it makes things easier.

CONTINUED

Part B [10 marks]
Write a program called inchesmetres.py that displays a conversion table for inches to metres. The program should ask the user to enter the range of values that the table will hold. Here is an example of what should be output when the program runs:

Enter the minimum number of inches (not less than 0):
1
Enter the maximum number of inches (not greater than 11): 6

Inches: 1 2 3 4 5 6 Metres: 0.03 0.05 0.08 0.10 0.13 0.15

Metre values are given to two decimal places.

RECOMMENDATION: Develop your solution in parts. Try, for example, printing just the inches line, then try printing the metres line. In each case you’ll need a loop that runs through the given range of values.

To discover how to keep all your numbers on one line, try entering and running the following python programs:

(a) (b)

      print('Hello')
      print('World')

Exercise Four [25 marks]

Consider the following flower pattern:

print('Hello', end='')
print('World')

It consists of 8 petals (polygons) on red stems (spokes). The petal colour alternates between green and blue.

Write a Python Turtle program called flowerpattern.py which allows the user to draw patterns of this sort. The program will ask the user to enter the number of petals, the length of stem, the sort of petal (triangle, square, or pentagon), the length of petal side, and the colours.

Here is a sample program execution:

Enter the number of petals (must be an even number): 6
Enter the length of stem: 50
Enter the petal type (triangle, square, or pentagon): triangle

CONTINUED

Enter the length of side: 100
Enter the stem colour: green
Enter the first petal colour: blue
Enter the second petal colour: yellow

RECOMMENDATION: As with other exercises, try breaking the problem down into simpler tasks and then building and combining solutions. For example,

  •   Write a program that obtains the required inputs (and translates petal type to the required number of polygon sides).
  •   Extend the program to draw the stems/spokes.
  •   Write a program that asks the user to enter 3, 4, or 5, and draws a polygon with that many

    sides.

    HINT: How do you centre a petal on its stalk? The turtle will turn a certain amount clockwise or a certain amount anti clockwise before drawing the polygon (depending on whether it is drawn anti clockwise or clockwise):

Facts: (i) a=360/(number of sides) and (ii) a+b=180.

 

  • Assignment3-srpswk.zip