mirror of https://github.com/01-edu/public.git
Michele Sessa
2 years ago
committed by
Michele
3 changed files with 77 additions and 0 deletions
@ -0,0 +1,14 @@ |
|||||||
|
import sys |
||||||
|
|
||||||
|
sys.path.append('/jail/app/student') |
||||||
|
|
||||||
|
from punishment import do_punishment |
||||||
|
|
||||||
|
def test_empty_lines(): |
||||||
|
assert do_punishment("", "", 3) == " .\n .\n .\n" |
||||||
|
|
||||||
|
def test_empty(): |
||||||
|
assert do_punishment("", "", 0) == "" |
||||||
|
|
||||||
|
def test_truncation(): |
||||||
|
assert do_punishment(" Test for ", " truncating strings ", 1) == "Test for truncating strings.\n" |
@ -0,0 +1,8 @@ |
|||||||
|
def do_punishment(first_part, second_part, nb_lines): |
||||||
|
first_part = first_part.strip() + " " |
||||||
|
second_part = second_part.strip() + ".\n" |
||||||
|
|
||||||
|
res = "" |
||||||
|
for _ in range(0, nb_lines): |
||||||
|
res += first_part + " " + second_part + "oiewoiew.\n" |
||||||
|
return res |
@ -0,0 +1,55 @@ |
|||||||
|
## Punishment |
||||||
|
|
||||||
|
### Instructions |
||||||
|
|
||||||
|
Often in schools we are asked to copy hundreds of sentences in order to better remember not to do something, this punishment is very old and quite boring! |
||||||
|
|
||||||
|
Hopefully we now have Python that can do the job for us. |
||||||
|
In order to do so create a file `punishment.py` which will contain a function `do_punishment` having 3 arguments: |
||||||
|
- `first_part`: which will be a string. |
||||||
|
- `second_part`: which will be also a string. |
||||||
|
- `nb_lines`: which will be a number. |
||||||
|
|
||||||
|
Here is the prototype of the function: |
||||||
|
```python |
||||||
|
def do_punishment(first_part, second_part, nb_lines): |
||||||
|
``` |
||||||
|
|
||||||
|
The function will concatenate `first_part` and `second_part`, adding a space in between them and a `.` at the end of `second_part`. It will repeat this process for `nb_lines` times. |
||||||
|
|
||||||
|
The function will return a single string containing all the repeated sentences. |
||||||
|
|
||||||
|
> In case `first_part` and `second_part` have empty spaces at the start or at the end those spaces should be trimmed (removed from the strings). |
||||||
|
|
||||||
|
### Usage |
||||||
|
|
||||||
|
Here is a possible `test.py` to test your functions: |
||||||
|
|
||||||
|
```python |
||||||
|
import punishment |
||||||
|
|
||||||
|
print(punishment.do_punishment(' The first half ', ' and the second ', 4), end='') |
||||||
|
print(punishment.do_punishment('Will not', 'show', 0), end='') |
||||||
|
print(punishment.do_punishment('', '', 3), end='') |
||||||
|
``` |
||||||
|
|
||||||
|
```bash |
||||||
|
$ python test.py |
||||||
|
The first half and the second. |
||||||
|
The first half and the second. |
||||||
|
The first half and the second. |
||||||
|
The first half and the second. |
||||||
|
. |
||||||
|
. |
||||||
|
. |
||||||
|
``` |
||||||
|
|
||||||
|
### Hints |
||||||
|
|
||||||
|
- Removing spaces at the start and end of a string is so common that almost all languages implement this feature. Here you can check for the `strip()` method. |
||||||
|
- Instead of using loops you can try the `string multiplication` operator, which is a very nice feature of Python and will make your code more readable. |
||||||
|
|
||||||
|
### References |
||||||
|
|
||||||
|
* [strip](https://www.w3schools.com/python/ref_string_strip.asp) |
||||||
|
* [string multiplication](https://www.geeksforgeeks.org/create-multiple-copies-of-a-string-in-python-by-using-multiplication-operator/) |
Loading…
Reference in new issue