diff --git a/.gitignore b/.gitignore index edce8452bf..6f97f3570a 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,5 @@ bin/configlet bin/configlet.exe .idea/ .cache +.pytest_cache __pycache__ diff --git a/exercises/high-scores/.meta/HINTS.md b/exercises/high-scores/.meta/HINTS.md index d1d5af1196..b1de85b183 100644 --- a/exercises/high-scores/.meta/HINTS.md +++ b/exercises/high-scores/.meta/HINTS.md @@ -1,5 +1,5 @@ -In this exercise you're going to create a **class** and use lists to organize scores. _Don't worry, it's not as complicated as you think!_ +In this exercise, you're going to use and manipulate lists. Python lists are very versatile, and you'll find yourself using them again and again in problems both simple and complex. -- [**A First Look at Classes**](https://docs.python.org/3/tutorial/classes.html#a-first-look-at-classes) from the Python 3 documentation. -- [**How to Define a Class in Python**](https://realpython.com/python3-object-oriented-programming/#how-to-define-a-class-in-python) from the Real Python website. -- [**Data Structures in Python**](https://docs.python.org/3/tutorial/datastructures.html) from the Python 3 documentation. +- [**Data Structures (Python 3 Documentation Tutorial)**](https://docs.python.org/3/tutorial/datastructures.html) +- [**Lists and Tuples in Python (Real Python)**](https://realpython.com/python-lists-tuples/) +- [**Python Lists (Google for Education)**](https://developers.google.com/edu/python/lists) diff --git a/exercises/high-scores/README.md b/exercises/high-scores/README.md index 6b08db6eb9..fa7934d4d3 100644 --- a/exercises/high-scores/README.md +++ b/exercises/high-scores/README.md @@ -4,11 +4,11 @@ Manage a game player's High Score list. Your task is to build a high-score component of the classic Frogger game, one of the highest selling and addictive games of all time, and a classic of the arcade era. Your task is to write methods that return the highest score from the list, the last added score and the three highest scores. -In this exercise you're going to create a **class** and use lists to organize scores. _Don't worry, it's not as complicated as you think!_ +In this exercise, you're going to use and manipulate lists. Python lists are very versatile, and you'll find yourself using them again and again in problems both simple and complex. -- [**A First Look at Classes**](https://docs.python.org/3/tutorial/classes.html#a-first-look-at-classes) from the Python 3 documentation. -- [**How to Define a Class in Python**](https://realpython.com/python3-object-oriented-programming/#how-to-define-a-class-in-python) from the Real Python website. -- [**Data Structures in Python**](https://docs.python.org/3/tutorial/datastructures.html) from the Python 3 documentation. +- [**Data Structures (Python 3 Documentation Tutorial)**](https://docs.python.org/3/tutorial/datastructures.html) +- [**Lists and Tuples in Python (Real Python)**](https://realpython.com/python-lists-tuples/) +- [**Python Lists (Google for Education)**](https://developers.google.com/edu/python/lists) diff --git a/exercises/high-scores/example.py b/exercises/high-scores/example.py index 0c77d73af8..fd168ffc52 100644 --- a/exercises/high-scores/example.py +++ b/exercises/high-scores/example.py @@ -1,12 +1,10 @@ -class HighScores(object): - def __init__(self, scores): - self.scores = scores +def latest(scores): + return scores[-1] - def latest(self): - return self.scores[-1] - def personal_best(self): - return max(self.scores) +def personal_best(scores): + return max(scores) - def personal_top_three(self): - return sorted(self.scores, reverse=True)[:3] + +def personal_top_three(scores): + return sorted(scores, reverse=True)[:3] diff --git a/exercises/high-scores/high_scores.py b/exercises/high-scores/high_scores.py index 3bfba4d0b5..0d24cdb1c1 100644 --- a/exercises/high-scores/high_scores.py +++ b/exercises/high-scores/high_scores.py @@ -1,3 +1,10 @@ -class HighScores(object): - def __init__(self, scores): - pass +def latest(scores): + pass + + +def personal_best(scores): + pass + + +def personal_top_three(scores): + pass diff --git a/exercises/high-scores/high_scores_test.py b/exercises/high-scores/high_scores_test.py index 17d69c0e15..40bd76c5ed 100644 --- a/exercises/high-scores/high_scores_test.py +++ b/exercises/high-scores/high_scores_test.py @@ -1,51 +1,47 @@ import unittest -from high_scores import HighScores +from high_scores import latest, personal_best, personal_top_three # Tests adapted from `problem-specifications//canonical-data.json` @ v4.0.0 class HighScoreTest(unittest.TestCase): - def test_list_of_scores(self): - scores = [30, 50, 20, 70] - expected = [30, 50, 20, 70] - self.assertEqual(HighScores(scores).scores, expected) def test_latest_score(self): scores = [100, 0, 90, 30] expected = 30 - self.assertEqual(HighScores(scores).latest(), expected) + self.assertEqual(latest(scores), expected) def test_personal_best(self): scores = [40, 100, 70] expected = 100 - self.assertEqual(HighScores(scores).personal_best(), expected) + self.assertEqual(personal_best(scores), expected) def test_personal_top_three_from_a_long_list(self): scores = [10, 30, 90, 30, 100, 20, 10, 0, 30, 40, 40, 70, 70] expected = [100, 90, 70] - self.assertEqual(HighScores(scores).personal_top_three(), expected) + self.assertEqual(personal_top_three(scores), expected) def test_personal_top_three_highest_to_lowest(self): scores = [20, 10, 30] expected = [30, 20, 10] - self.assertEqual(HighScores(scores).personal_top_three(), expected) + self.assertEqual(personal_top_three(scores), expected) def test_personal_top_three_when_there_is_a_tie(self): scores = [40, 20, 40, 30] expected = [40, 40, 30] - self.assertEqual(HighScores(scores).personal_top_three(), expected) + self.assertEqual(personal_top_three(scores), expected) def test_personal_top_three_when_there_are_less_than_3(self): scores = [30, 70] expected = [70, 30] - self.assertEqual(HighScores(scores).personal_top_three(), expected) + self.assertEqual(personal_top_three(scores), expected) def test_personal_top_three_when_there_is_only_one(self): scores = [40] expected = [40] - self.assertEqual(HighScores(scores).personal_top_three(), expected) + self.assertEqual(personal_top_three(scores), expected) if __name__ == "__main__":