5 coding challenges for beginners (with solutions in Python)
Tags: python, beginners, challenge, tutorial
Published: 2022-09-13 07:12:46

Here are some fun beginner-friendly coding problems that I came across recently. I hope that this article can help you improve your understanding and motivate you to learn.

**1. Number of integers in a string**

Given a string, return the number of integers present. For example, the string "My favourite number is 17 and 30" has 2 integers.

Tips:
+ Break the string down into individual words.
+ Use Python's built in functions to check for the type of each word.

Solution:

```python
def num_of_integers(str):

    count = 0 # initialise count

    str = str.split() # split the string into list of words

    for i in range(len(str)):
        if(str[i].isdigit()): #check if the word is an integer
            count += 1 # increment count

    return count

print(num_of_integers("My favourite number is 17 and 30"))
```

---

**2. Palindrome checker**
Write a function that checks is a given word is a palindrome(a word that is read the same forward and backward, for example, "bob", "abba", "radar"), assuming that input will be in lowercase letters.

Solution:

```python
# Method 1: Iterative solution
def palindrome(str):
    for i in range(int(len(str) / 2)):
        if (str[i] == str[len(str)-1]):
            return True
    return False

# Method 2: Using Python's built in function
def palindrome(str):
    return str == str[::-1] # compares the string and its reverse
```
---

**3. Zip two lists**

Write a custom zip function that replicates Python's built in `zip()` function.

![Python Zip](https://www.w3resource.com/w3r_images/built-in-function-zip-function-image-1.png)

Solution:
```python
def custom_zip(list1, list2):
    result = []
    for i in range(len(list1)):
        result.append((list1[i], list2[i]))
    return result
    
print(custom_zip([0, 1, 2, 3],[5, 6, 7, 8]))

```

---

**4. Print a staircase**
Given a positive integer n, print a staircase of height and width of n using "#" and spaces. An example is shown below:

```
n = 4
#
##
###
####
```
Tips: 
+ Use `for` loops
+ Think of how many "#" and white spaces you want in each row

Solution:

```python
def staircase(n):
    for i in range(n):
        for x in range(i+1):
            print("#", end = "") 
        for y in range(n-i-1):
            print(" ", end = "")
        print()

staircase(4)
```
Explanation: 
+ For the first row, you want 1 "#" and (n - 1) white spaces. For the second row, you want 2 "#" and (n - 2) white spaces and so on...
+ The nested for loop is used for displaying the "#" and white spaces for each line.
+ Once each line is completed, it will go to the outer loop then print the next line.

---

**5. Recursive Pascal's triangle**

Given a row and column number, write a recursive function that returns the corresponding value of the specified row and column in the Pascal's triangle as shown below:

![Pascal's triangle](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d61wc59l6ztr8tn7iihr.png)

Tips:
+ The values are formed by adding together the two numbers just above to the left and right of each position in the triangle.
+ There are a few base cases to consider.
+ Number of columns should not be larger than number of rows.

Solution:

```python
def pascal_triangle(row, col):
    if (row >= col):
        if (col == 0 or row == 0 or row == col):
            return 1
        else:
            return pascal_triangle(row-1, col-1) + pascal_triangle(row-1, col) 
    else:
        return 0

print(pascal_triangle(3,0))
print(pascal_triangle(3,1))
print(pascal_triangle(3,2))
print(pascal_triangle(3,3))
```
---
Hope you had fun trying out these challenges! Feel free to share your solutions and any comments regarding the post.