Due: March 09 by 11:59pm
Submit: To submit this assignment, create a zip file of all the files in your R project folder for this assignment. Name the zip file
hw8-netID.zip
, replacingnetID
with your netID (e.g.,hw8-jph.zip
). Use this link to submit your file.Weight: This assignment is worth 5% of your final grade.
Purpose: The purposes of this assignment are:
- To practice the same problem-solving skills we’ve learning thus far, but in Python.
- To practice running Python scripts from R.
Assessment: Each question indicates the % of the assignment grade, summing to 100%. The credit for each question will be assigned as follows:
- 0% for not attempting a response.
- 50% for attempting the question but with major errors.
- 75% for attempting the question but with minor errors.
- 100% for correctly answering the question.
The reflection portion is always worth 10% and graded for completion.
Rules:
- Problems marked SOLO may not be worked on with other classmates, though you may consult instructors for help.
- For problems marked COLLABORATIVE, you may work in groups of up to 3 students who are in this course this semester. You may not split up the work – everyone must work on every problem. And you may not simply copy any code but rather truly work together and submit your own solutions.
Using the autograder
- You can check your solutions to problems 2 - 7 by logging into the autograder and uploading your
hw8.R
file.- The file must be named
hw8.R
or it won’t work.- Your user name is your netID, and your password is inside the
readme.txt
file in the Box folder I shared with you.
Download and use this template for your assignment. Inside the “hw8” folder, open and edit the R script called “hw8.py” and fill out your name, GW Net ID, and the names of anyone you worked with on this assignment.
Writing test functions
For each of the following functions, write a test function first, and then write the function. Your test functions will count for half of the available credit for each problem. Think carefully about the test cases to include in your test functions.
Using good style
For this assignment, you must use good style to receive full credit. Follow the best practices described in this style guide.
kthDigit(x, k)
[SOLO, 10%]Given two integers, x
and k
, return the kth
digit of x
, counting from the right. So:
kthDigit(789, 1)
returns 9
kthDigit(789, 2)
returns 8
kthDigit(789, 3)
returns 7
kthDigit(789, 4)
returns 0
Negative numbers should work, too, so kthDigit(-789, 1)
returns 9
.
isEvenPositiveInt(x)
[SOLO, 15%]Given an arbitrary value x
, return True
if
it is an integer, and it is positive, and it is even (all 3 must be
true), or False
otherwise. If the value x
is
not an integer, the function should return False
rather
than error. So, isEvenPositiveInt("yikes!")
returns
False
, and isEvenPositiveInt(123456)
returns
True
.
getTheCents(n)
[SOLO, 15%]Write the function getTheCents(n)
which takes a value
n
that represents a payment in US dollars and returns the
number of cents in the payment. For example, if n
is
2.45
, the function should return 45
. If
n
is an integer, the function should return 0
,
as it has 0
cents; if it isn’t a number, it should return
None
, because a non-number payment make no cents (ha!). If
the payment has partial cents (for example, 3.953
), it
should be rounded to the nearest cent (in this case, 95
cents).
isPrime(n)
[COLLABORATIVE, 15%]Write the function isPrime(n)
which takes a non-negative
integer, n
, and returns True
if it is a prime
number and False
otherwise.
numDigits(n)
[SOLO, 15%]Write the function numDigits(n)
that takes a
possibly-negative integer and returns the number of digits in
it. So, numDigits(12345)
returns 5
,
numDigits(0)
returns 1
, and
numDigits(-111)
returns 3
. One way you could
solve this is to convert n
to a string and use
str_length()
, but you cannot do that since you may not use
strings here.
reverseString(s)
[COLLABORATIVE, 15%]Write a function that returns the string in reverse order. So if
s
equals "abcde"
,
reverseString(s)
should equal "edcba"
. You may
assume that s
only contains upper and/or lower case
letters, but your solution must correctly return capital letters in
their appropriate order. For example,
reverseString("aWordWithCaps")
should return
"spaChtiWdroWa"
.
When we come back from spring break, we’ll be shifting the focus of
the class to working with data. Read and reflect on the readings to get
started with this topic, including the data analysis prelude chapter
and the chapter on data
frames. Afterwards, in a comment (#
) in your R file,
write a short reflection on what you’ve learned and any questions or
points of confusion you have about what we’ve covered thus far. This can
just few a few sentences related to this assignment, next week’s
readings, things going on in the world that remind you something from
class, etc. If there’s anything that jumped out at you, write it
down.