Part A: Multiple Choice Questions. Circle the letter of each correct answer. Give an optional reason or show your work for each question. If your answer is correct, the reason will not be considered. 5 points each.
x = 5; y = 3; x = y; y = x;
print("{0:d} {1:d}\n".format(x, y)
a. 3 3 b.
3 5 c.
5 3 d.
5 5print format_string.format(name, gender, age)a. format_string = "{0:d} {1:d} {2:d}"
a. arr = [ Card.new(7, "S"), Card.new(8, "D"),
Card.new(8, "S"), Card.new(8, "H"),
Card.new(13, "D") ]
ph = PokerHand(arr)
b. arr = [ Card.new(7, "S"), Card.new(8, "D"),
Card.new(8, "S"), Card.new(10, "H"),
Card.new(13, "D") ]
ph = PokerHand(arr)
c. arr = [ Card.new(7, "S"), Card.new(8, "D"),
Card.new(8, "S"), Card.new(13, "H"),
Card.new(13, "D") ]
ph = PokerHand(arr)
d. arr = [ Card.new(8, "S"), Card.new(8, "D"),
Card.new(8, "S"), Card.new(13, "H"),
Card.new(13, "D") ]
ph = PokerHand(arr)
print(a) # Output: [KS, 3D, 10H, QS, 10C]a. __print__ b. __repr__ c. str d. __str__
class MyInt(int):
def __init__(self, val):
self = val
Which of the following
defines a method of the MyInt class that
returns the number of digits in a MyInt object? A minus sign
does not count as a digit.
a. def num_digits(self):
return len(str(abs(self)))
b. def num_digits(self):
return len(str(self.abs( )))
c. def num_digits(self):
return self.abs( ).str( ).len( )
d. def num_digits(self):
return str(abs(self)).len( )
b = sqlite3.connect('persons.db')
c = b.cursor( )
which statement is correct for adding a row to the persons table:
a. c.execute('insert into kids values(Alice, F, 11);')
b. c.execute('insert into kids values('Alice', 'F', 11);')
c. c.execute('insert into kids values("Alice", "F", 11);')
d. c.execute("insert into kids values('Alice', 'F', '11');")
import re print(re.sub(r"[aeiou]+", "#", "bcaietwaxyzfgeouubnw"))a. bctwxyzfgbnw b. bcatwaxyzfgebnw
a. public String toString {
return model + year;
}
b. public String toString( ) {
return model + " " + year;
}
c. public void toString {
return model + " " + year;
}
d. public void toString( ) {
return model + " " + year;
}
a. String str = new String[10]; b. String str = new String(10); c. String[ ] str = new String[10]; d. String str[ ] = new String(10);
Part B. Predict the Output. Construct the variable trace and predict the output. 15 points.
a = ["denver", "fort worth", "miami"]
b = [1, 2, 0, 1, 0, 1]
c = [5, 1, 2, 3, 4, 2]
for i in range(0, 6):
print(a[b[i]][c[i]], end="")
# Source code file appointment.py.
class Appointment:
def __init__(self, the_purpose, the_location, \
the_hour, the_minute):
self.purpose = the_purpose
self.location = the_location
self.hour = the_hour
self.minute = the_minute
def __str__(self):
return "{0:s} {1:s} {2:02d}:{3:02d}". \
format(self.purpose, self.location, \
self.hour, self.minute)
# Source code file monthlyappointment.py.
from appointment import Appointment
class MonthlyAppointment(Appointment):
def __init__(self, the_purpose, the_location, \
the_day, the_hour, the_minute):
self.purpose = the_purpose
self.location = the_location
self.day = the_day
self.hour = the_hour
self.minute = the_minute
def __str__(self):
return "{0:s}; {1:s} {2:d} {3:02d}:{4:02d}". \
format(self.purpose, self.location, \
self.day, self.hour, self.minute)
def occurs_on(self, the_year, the_month, the_day):
return self.day == the_day
# Source code file onetimeappointment.py.
from appointment import Appointment
class OneTimeAppointment(Appointment):
def __init__(self, the_purpose, the_location, \
the_year, the_month, the_day,
the_hour, the_minute):
self.purpose = the_purpose
self.location = the_location
self.year = the_year
self.month = the_month
self.day = the_day
self.hour = the_hour
self.minute = the_minute
def __str__(self):
return "{0:s}; {1:s} {2:d}/{3:d}/{4:d} {5:02d}:{6:02d}". \
format(self.purpose, self.location, \
self.month, self.day, self.year, \
self.hour, self.minute)
def occurs_on(self, the_year, the_month, the_day):
return self.year == the_year and \
self.month == the_month and \
self.day == the_day
# Source code file test1.py.
from monthlyappointment import MonthlyAppointment
from onetimeappointment import OneTimeAppointment
appt1 = MonthlyAppointment("Staff Meeting", "Room 105", 14, 20, 30)
appt2 = OneTimeAppointment("Poker Night", "Room 109", \
2018, 6, 15, 20, 30)
print(appt1)
print(appt2)
print(appt1.purpose, appt1.location)
print(appt2.purpose, appt2.location)
appt1.location = "Room 203"
print(appt1.location)
print(appt1.occurs_on(2018, 5, 15))
print(appt1.occurs_on(2018, 5, 17))
print(appt2.occurs_on(2018, 6, 15))
print(appt2.occurs_on(2018, 6, 17))
Part C: Convert Traditional Test to Unit Test. Convert the traditional test file test1.py to a unit test file test2.py.
from monthlyappointment import MonthlyAppointment
from onetimeappointment import OneTimeAppointment
import unittest
class MyUnitTestClass(unittest.TestCase):
def test_1(self):
appt1 = MonthlyAppointment("Staff Meeting", "Room 105", 15, 20, 30)
appt2 = OneTimeAppointment("Poker Night", "Room 109", \
2018, 6, 15, 20, 30)
# Sample assertEqual statement:
# self.assertEqual(computed, expected)
if __name__ == '__main__':
unittest.main( )
Part D. Correct the Errors. 15 points.
# Source code file person.py
class Person:
def __init_(self, the_last, the_first, the_gender)
self.last = the_last
self.first = the_first
gender = the_gender
def __str__(self):
return("{0:s} {1:s} {3:s}". \
format(self.last, self.first, self.gender)
# Source code file driver.py
from person import Person
Class Driver < Person:
def __init__(self, the_last, the_first, \
the_gender, the_lic_num):
self.last = the_last
self.first = the_first
self.gender = gender
self.license_number = theLicNum
def __str__(self):
return super( ).str(self) + /
"{0:s}\n".format(license_number)
def __repr__( ):
return self.license_number
# Source code file test.py
drivers = ( )
file = open("drivers.txt")
line = file.readline( )
while line:
f = line.strip(",")
d = Driver(f[0].strip( ), f[1].strip,
f[2].strip( ), f[3].strip( )
drivers.append d
for d in drivers:
if d.license_number[0] == "N" and d.gender = 'F':
print("{0:s} {1:s}".format(d.first, d.last))
# Contents of the input file drivers.csv:
Bowman,Julia,F,J230-7842-4219
Kern,Kendell,M,N212-3278-4839
Kerry,Cynthia,F,N319-3283-3289
Miller,Wayne,M,K237-2392-2139
Johnson,Carrie,F,N329-3229-3293
Chen,Maggie,F,N998-2918-5685
Part E: Find the errors in these Java programs. The equivalent Python scripts are shown for your reference.
# Java program with errors. There are about 10 errors:
import java.util.scanner;
public class Overtime
{
private void static main(String[ ] args)
{
Scanner s = new Scanner(System.out);
System.out.println("Enter the hours worked: ");
double hours = Double.parseDouble(s.nextLine( ));
System.out.println('Enter the hourly rate: ');
double rate = Double.parseDouble(s.nextLine( ));
if hours > 40
{
total_wages = (40.0 + (hours - 40.0) * 1.5) * rate;
}
else
{
total_wages = hours * rate
}
System.out.println('Total Wages: ', total_wages);
}
# Python script:
hours = input('Enter the hours worked: ')
rate = input('Enter the hourly rate: ')
if (hours > 40):
total_wages = (40.0 + (hours - 40.0) * 1.5) * rate;
else:
total_wages = hours * rate
print('Total Wages: ', total_wages)
// Java source code. There are about 10 errors.
import java.util.*;
public class Magic8Ball
{
public static void main(String[ ] arg)
{
// Instantiate random number generator
Random ranGen = Random( );
// Choose random number in range [0, 6).
int ansNum = ranGen.nextInt(6);
// Choose response.
if(ansNum == 0)
{
ans = "Yes -- definitely"
}
else if(ansNum = 1)
{
ans = "Most likely";
}
else if(ansNum == 2)
{
ans = "Reply hazy, try again";
elif(ansNum == 3)
{
ans = "Cannot predict now";
}
else if(ansNum == 4)
{
ans = "Don't count on it";
}
else
{
ans = "Very doubtful";
}
# Print answer.
System.out.println("Magic eight ball answer: ", ans, ".");
}
# Equivalent Python script
from random import randrange
ans_num = randrange(6)
if ans_num == 0:
ans = "Yes -- definitely"
elif ans_num == 1:
ans = "Most likely"
elif ans_num == 2:
ans = "Reply hazy, try again"
elif ans_num == 3:
ans = "Cannot predict now"
elif ans_num == 4:
ans = "Don't count on it"
else:
ans = "Very doubtful"
end
print("Magic eight ball answer:" + ans + ".")