Add default args and type hints for Project Euler problem 7
diff --git a/project_euler/problem_07/sol1.py b/project_euler/problem_07/sol1.py
index 373915f886e1..727d7fb7fac6 100644
--- a/project_euler/problem_07/sol1.py
+++ b/project_euler/problem_07/sol1.py
@@ -1,4 +1,6 @@
 """
+Problem 7: https://projecteuler.net/problem=7
+
 By listing the first six prime numbers:
 
     2, 3, 5, 7, 11, and 13
@@ -8,20 +10,21 @@
 from math import sqrt
 
 
-def is_prime(n):
-    if n == 2:
+def is_prime(num: int) -> bool:
+    """Determines whether the given number is prime or not"""
+    if num == 2:
         return True
-    elif n % 2 == 0:
+    elif num % 2 == 0:
         return False
     else:
-        sq = int(sqrt(n)) + 1
+        sq = int(sqrt(num)) + 1
         for i in range(3, sq, 2):
-            if n % i == 0:
+            if num % i == 0:
                 return False
     return True
 
 
-def solution(n):
+def solution(nth: int = 10001) -> int:
     """Returns the n-th prime number.
 
     >>> solution(6)
@@ -36,18 +39,20 @@ def solution(n):
     229
     >>> solution(100)
     541
+    >>> solution()
+    104743
     """
-    i = 0
-    j = 1
-    while i != n and j < 3:
-        j += 1
-        if is_prime(j):
-            i += 1
-    while i != n:
-        j += 2
-        if is_prime(j):
-            i += 1
-    return j
+    count = 0
+    number = 1
+    while count != nth and number < 3:
+        number += 1
+        if is_prime(number):
+            count += 1
+    while count != nth:
+        number += 2
+        if is_prime(number):
+            count += 1
+    return number
 
 
 if __name__ == "__main__":
diff --git a/project_euler/problem_07/sol2.py b/project_euler/problem_07/sol2.py
index ec182b835c84..62806e1e2e5d 100644
--- a/project_euler/problem_07/sol2.py
+++ b/project_euler/problem_07/sol2.py
@@ -1,4 +1,6 @@
 """
+Problem 7: https://projecteuler.net/problem=7
+
 By listing the first six prime numbers:
 
     2, 3, 5, 7, 11, and 13
@@ -7,14 +9,15 @@
 """
 
 
-def isprime(number):
+def isprime(number: int) -> bool:
+    """Determines whether the given number is prime or not"""
     for i in range(2, int(number ** 0.5) + 1):
         if number % i == 0:
             return False
     return True
 
 
-def solution(n):
+def solution(nth: int = 10001) -> int:
     """Returns the n-th prime number.
 
     >>> solution(6)
@@ -29,34 +32,38 @@ def solution(n):
     229
     >>> solution(100)
     541
+    >>> solution()
+    104743
     >>> solution(3.4)
     5
     >>> solution(0)
     Traceback (most recent call last):
         ...
-    ValueError: Parameter n must be greater or equal to one.
+    ValueError: Parameter nth must be greater or equal to one.
     >>> solution(-17)
     Traceback (most recent call last):
         ...
-    ValueError: Parameter n must be greater or equal to one.
+    ValueError: Parameter nth must be greater or equal to one.
     >>> solution([])
     Traceback (most recent call last):
         ...
-    TypeError: Parameter n must be int or passive of cast to int.
+    TypeError: Parameter nth must be int or passive of cast to int.
     >>> solution("asd")
     Traceback (most recent call last):
         ...
-    TypeError: Parameter n must be int or passive of cast to int.
+    TypeError: Parameter nth must be int or passive of cast to int.
     """
     try:
-        n = int(n)
+        nth = int(nth)
     except (TypeError, ValueError):
-        raise TypeError("Parameter n must be int or passive of cast to int.")
-    if n <= 0:
-        raise ValueError("Parameter n must be greater or equal to one.")
+        raise TypeError(
+            "Parameter nth must be int or passive of cast to int."
+        ) from None
+    if nth <= 0:
+        raise ValueError("Parameter nth must be greater or equal to one.")
     primes = []
     num = 2
-    while len(primes) < n:
+    while len(primes) < nth:
         if isprime(num):
             primes.append(num)
             num += 1
diff --git a/project_euler/problem_07/sol3.py b/project_euler/problem_07/sol3.py
index 602eb13b623d..1182875c05c9 100644
--- a/project_euler/problem_07/sol3.py
+++ b/project_euler/problem_07/sol3.py
@@ -1,4 +1,6 @@
 """
+Project 7: https://projecteuler.net/problem=7
+
 By listing the first six prime numbers:
 
     2, 3, 5, 7, 11, and 13
@@ -9,7 +11,8 @@
 import math
 
 
-def primeCheck(number):
+def prime_check(number: int) -> bool:
+    """Determines whether a given number is prime or not"""
     if number % 2 == 0 and number > 2:
         return False
     return all(number % i for i in range(3, int(math.sqrt(number)) + 1, 2))
@@ -18,12 +21,12 @@ def primeCheck(number):
 def prime_generator():
     num = 2
     while True:
-        if primeCheck(num):
+        if prime_check(num):
             yield num
         num += 1
 
 
-def solution(n):
+def solution(nth: int = 10001) -> int:
     """Returns the n-th prime number.
 
     >>> solution(6)
@@ -38,8 +41,10 @@ def solution(n):
     229
     >>> solution(100)
     541
+    >>> solution()
+    104743
     """
-    return next(itertools.islice(prime_generator(), n - 1, n))
+    return next(itertools.islice(prime_generator(), nth - 1, nth))
 
 
 if __name__ == "__main__":

Continuing #2786 

- Add default argument values
- Add type hints
- Change one letter variable names to a more descriptive one
- Add doctest for `solution()`

### **Describe your change:**

* [x] Fix a bug or typo in an existing algorithm?

### **Checklist:**
* [x] I have read [CONTRIBUTING.md](https://github.com/TheAlgorithms/Python/blob/master/CONTRIBUTING.md).
* [x] This pull request is all my own work -- I have not plagiarized.
* [x] I know that pull requests will not be merged if they fail the automated tests.