-
Notifications
You must be signed in to change notification settings - Fork 2
/
hw8-python.Rmd
71 lines (51 loc) · 4.13 KB
/
hw8-python.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
---
title: "Homework 8 - Python"
output:
html_document:
number_sections: false
toc: no
---
> **Due**: 02 November by 11:00 pm
>
> **Weight**: This assignment is worth **4%** of your final grade.
>
> **Purpose, Skills, & Knowledge**: 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.
>
> **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.
> - Even though you work collaboratively, you still must submit your own solutions.
### 1) Staying organized [SOLO, 5%]
Download and use [this template](templates/hw8.zip) 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.
### 2) `kthDigit(x, k)` [SOLO, 15%]
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`.
### 3) `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`.
### 4) `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).
#### 5) `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.
### 6) `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.
### 7) `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"`.
### 8) Submit your files [SOLO, 5%]
Create a zip file of all the files in your R project folder for this assignment and submit the zip file on Blackboard.