PYnative

Python Programming

  • Learn Python
  • Exercises
  • Quizzes
  • Code Editor
  • Tricks
Home » Python Exercises » Python String Exercise with Solutions

Python String Exercise with Solutions

Updated on: October 6, 2021 | 191 Comments

As you know, the stings are widely used to hold textual data. To perform any programming tasks in Python, a good understanding of string manipulation is necessary.

These string exercises will help Python developers to learn and practice string operations, manipulations, slicing, and string functions.

Also Read:

  • Python String Quiz

This String Exercise includes the following: –

  • It contains 18 Python string programs, questions, problems, and challenges to practice.
  • The solution is provided for all questions.
  • All string programs are tested on Python 3

Use Online Code Editor to solve exercise questions. Let us know if you have any alternative solutions in the comment section below.

Table of contents

  • Exercise 1A: Create a string made of the first, middle and last character
  • Exercise 1B: Create a string made of the middle three characters
  • Exercise 2: Append new string in the middle of a given string
  • Exercise 3: Create a new string made of the first, middle, and last characters of each input string
  • Exercise 4: Arrange string characters such that lowercase letters should come first
  • Exercise 5: Count all letters, digits, and special symbols from a given string
  • Exercise 6: Create a mixed String using the following rules
  • Exercise 7: String characters balance Test
  • Exercise 8: Find all occurrences of a substring in a given string by ignoring the case
  • Exercise 9: Calculate the sum and average of the digits present in a string
  • Exercise 10: Write a program to count occurrences of all characters within a string
  • Exercise 11: Reverse a given string
  • Exercise 12: Find the last position of a given substring
  • Exercise 13: Split a string on hyphens
  • Exercise 14: Remove empty strings from a list of strings
  • Exercise 15: Remove special symbols / punctuation from a string
  • Exercise 16: Removal all characters from a string except integers
  • Exercise 17: Find words with both alphabets and numbers
  • Exercise 18: Replace each special symbol with # in the following string

Exercise 1A: Create a string made of the first, middle and last character

Write a program to create a new string made of an input string’s first, middle, and last character.

Given:

str1 = "James"

Expected Output:

Jms
Show Hint
  • String index always starts with 0
  • Use string indexing to get the character present at the given index
  • Get the index of the middle character by dividing string length by 2
Show Solution
  • Use string indexing to get the character present at the given index.
  • Use str1[0] to get the first character of a string and add it to the result variable
  • Next, get the middle character’s index by dividing string length by 2. x = len(str1) /2. Use str1[x] to get the middle character and add it to the result variable
  • Use str1[len(str1)-1] to get the last character of a string and add it to the result variable
  • print result variable to display new string
str1 = 'James'
print("Original String is", str1)

# Get first character
res = str1[0]

# Get string size
l = len(str1)
# Get middle index number
mi = int(l / 2)
# Get middle character and add it to result
res = res + str1[mi]

# Get last character and add it to result
res = res + str1[l - 1]

print("New String:", res)

Exercise 1B: Create a string made of the middle three characters

Write a program to create a new string made of the middle three characters of an input string.

Given:

Case 1

str1 = "JhonDipPeta"

Output

Dip

Case 2

str2 = "JaSonAy"

Output

Son
Show Hint
  • First, get the middle index number by dividing string length by 2.
  • Use string slicing to get the middle three characters starting from the middle index to the next two character.
Show Solution
  • Get the middle character’s index using x = len(str1) /2.
  • Use string slicing to get the middle three characters starting from the middle index to the next two character str1[middle_index-1:middle_index+2]
def get_middle_three_chars(str1):
    print("Original String is", str1)

    # first get middle index number
    mi = int(len(str1) / 2)

    # use string slicing to get result characters
    res = str1[mi - 1:mi + 2]
    print("Middle three chars are:", res)

get_middle_three_chars("JhonDipPeta")
get_middle_three_chars("JaSonAy")

Exercise 2: Append new string in the middle of a given string

Given two strings, s1 and s2. Write a program to create a new string s3 by appending s2 in the middle of s1.

Given:

s1 = "Ault"
s2 = "Kelly"

Expected Output:

AuKellylt
Show Hint
  • Use built-in function len(s1) to get the string length.
  • Next, get the middle index number by dividing string length by 2.
Show Solution
  • First, get the middle index number of s1 by dividing s1’s length by 2
  • Use string slicing to get the character from s1 starting from 0 to the middle index number and store it in x
  • concatenate x and s2. x = x + s2
  • concatenate x and remeaning character from s1
  • print x
def append_middle(s1, s2):
    print("Original Strings are", s1, s2)

    # middle index number of s1
    mi = int(len(s1) / 2)

    # get character from 0 to the middle index number from s1
    x = s1[:mi:]
    # concatenate s2 to it
    x = x + s2
    # append remaining character from s1
    x = x + s1[mi:]
    print("After appending new string in middle:", x)

append_middle("Ault", "Kelly")

Exercise 3: Create a new string made of the first, middle, and last characters of each input string

Given two strings, s1 and s2, write a program to return a new string made of s1 and s2’s first, middle, and last characters.

Given:

s1 = "America"
s2 = "Japan"

Expected Output:

AJrpan
Show Hint
  • String index starts with index 0. The first character is present at index 0, and the last character is at the index string’s length -1
  • Use built-in function len(s1) to get the string length.
  • Next, get the middle index number by dividing string length by 2.
Show Solution
  • Get the first character from both strings, concatenate them, and store them in variable x
  • Get the middle character from both strings, concatenate them, and store them in variable y
  • Get the last character from both strings, concatenate them, and store them in variable x
  • In the end, join x, y, and z and save it in the result variable
  • print the result
def mix_string(s1, s2):
    # get first character from both string
    first_char = s1[0] + s2[0]

    # get middle character from both string
    middle_char = s1[int(len(s1) / 2):int(len(s1) / 2) + 1] + s2[int(len(s2) / 2):int(len(s2) / 2) + 1]

    # get last character from both string
    last_char = s1[len(s1) - 1] + s2[len(s2) - 1]

    # add all
    res = first_char + middle_char + last_char
    print("Mix String is ", res)

s1 = "America"
s2 = "Japan"
mix_string(s1, s2)

Exercise 4: Arrange string characters such that lowercase letters should come first

Given string contains a combination of the lower and upper case letters. Write a program to arrange the characters of a string so that all lowercase letters should come first.

Given:

str1 = PyNaTive

Expected Output:

yaivePNT
Show Hint

Iterate each character from a string and check if the current character is the lower or upper case using islower() string function

Show Solution
  • Create two lists lower and upper
  • Iterate a string using a for loop
  • In each loop iteration, check if the current character is the lower or upper case using the islower() string function.
  • If a character is the lower case, add it to the lower list, else add it to the upper list
  • to join the lower and upper list using a join() function.
  • convert list to string
  • print the final string
str1 = "PYnAtivE"
print('Original String:', str1)
lower = []
upper = []
for char in str1:
    if char.islower():
        # add lowercase characters to lower list
        lower.append(char)
    else:
        # add uppercase characters to lower list
        upper.append(char)

# Join both list
sorted_str = ''.join(lower + upper)
print('Result:', sorted_str)

Exercise 5: Count all letters, digits, and special symbols from a given string

Given:

str1 = "P@#yn26at^&i5ve"

Expected Outcome:

Total counts of chars, digits, and symbols 

Chars = 8 
Digits = 3 
Symbol = 4
Show hint

Use the following string functions

  • isalpha(): To check if a string/character is an alphabet
  • isdigit(): To check if a string/character is a digit.
Show Solution
  • Iterate each character from a string using a for loop
  • In each loop iteration, check if the current character is the alphabet using an isalpha() function. If yes, increase the character counter. Check if it is a digit using the isdigit() function and increase the digit counter; otherwise, increase the symbol counter.
  • Print the value of each counter
def find_digits_chars_symbols(sample_str):
    char_count = 0
    digit_count = 0
    symbol_count = 0
    for char in sample_str:
        if char.isalpha():
            char_count += 1
        elif char.isdigit():
            digit_count += 1
        # if it is not letter or digit then it is special symbol
        else:
            symbol_count += 1

    print("Chars =", char_count, "Digits =", digit_count, "Symbol =", symbol_count)

sample_str = "P@yn2at&#i5ve"
print("total counts of chars, Digits, and symbols \n")
find_digits_chars_symbols(sample_str)

Exercise 6: Create a mixed String using the following rules

Given two strings, s1 and s2. Write a program to create a new string s3 made of the first char of s1, then the last char of s2, Next, the second char of s1 and second last char of s2, and so on. Any leftover chars go at the end of the result.

Given:

s1 = "Abc"
s2 = "Xyz"

Expected Output:

AzbycX
Show Solution
s1 = "Abc"
s2 = "Xyz"

# get string length
s1_length = len(s1)
s2_length = len(s2)

# get length of a bigger string
length = s1_length if s1_length > s2_length else s2_length
result = ""

# reverse s2
s2 = s2[::-1]

# iterate string 
# s1 ascending and s2 descending
for i in range(length):
    if i < s1_length:
        result = result + s1[i]
    if i < s2_length:
        result = result + s2[i]

print(result)

Exercise 7: String characters balance Test

Write a program to check if two strings are balanced. For example, strings s1 and s2 are balanced if all the characters in the s1 are present in s2. The character’s position doesn’t matter.

Given:

Case 1:

s1 = "Yn"
s2 = "PYnative"

Expected Output:

True

Case 2:

s1 = "Ynf"
s2 = "PYnative"

Expected Output:

False
Show Hint

Iterate each character from a string s1 and check if the current character is present in the string s2.

Show Solution
def string_balance_test(s1, s2):
    flag = True
    for char in s1:
        if char in s2:
            continue
        else:
            flag = False
    return flag


s1 = "Yn"
s2 = "PYnative"
flag = string_balance_test(s1, s2)
print("s1 and s2 are balanced:", flag)

s1 = "Ynf"
s2 = "PYnative"
flag = string_balance_test(s1, s2)
print("s1 and s2 are balanced:", flag)

Exercise 8: Find all occurrences of a substring in a given string by ignoring the case

Write a program to find all occurrences of “USA” in a given string ignoring the case.

Given:

str1 = "Welcome to USA. usa awesome, isn't it?"

Expected Outcome:

The USA count is: 2
Show Hint

Use the string function count()

Show Solution
str1 = "Welcome to USA. usa awesome, isn't it?"
sub_string = "USA"

# convert string to lowercase
temp_str = str1.lower()

# use count function
count = temp_str.count(sub_string.lower())
print("The USA count is:", count)

Exercise 9: Calculate the sum and average of the digits present in a string

Given a string s1, write a program to return the sum and average of the digits that appear in the string, ignoring all other characters.

Given:

str1 = "PYnative29@#8496"

Expected Outcome:

Sum is: 38 Average is  6.333333333333333
Show Hint

Iterate each character from a string s1 and check if the current character is digit using the isdigit() function

Show Solution

Solution 1: Use string functions

  • Iterate each character from a string s1 using a loop
  • In the body of a loop, check if the current character is digit using the isdigit() function
  • If it is a digit, then add it to the sum variable
  • In the end, calculate the average by dividing the total by the count of digits
input_str = "PYnative29@#8496"
total = 0
cnt = 0
for char in input_str:
    if char.isdigit():
        total += int(char)
        cnt += 1

# average = sum / count of digits
avg = total / cnt
print("Sum is:", total, "Average is ", avg)

Solution 2: Use regular expression

import re

input_str = "PYnative29@#8496"
digit_list = [int(num) for num in re.findall(r'\d', input_str)]
print('Digits:', digit_list)

# use the built-in function sum
total = sum(digit_list)

# average = sum / count of digits
avg = total / len(digit_list)
print("Sum is:", total, "Average is ", avg)

Exercise 10: Write a program to count occurrences of all characters within a string

Given:

str1 = "Apple"

Expected Outcome:

{'A': 1, 'p': 2, 'l': 1, 'e': 1}
Show Hint

Use the string function count()

Show Solution
  • create an empty dictionary to store the result. character is the key, and the count is the value
  • Iterate each character from a string s1 using a loop
  • In the body of a loop, use the count() function to find how many times a current character appeared in a string
  • Add key-value pair in a dictionary
str1 = "Apple"

# create a result dictionary
char_dict = dict()

for char in str1:
    count = str1.count(char)
    # add / update the count of a character
    char_dict[char] = count
print('Result:', char_dict)

Exercise 11: Reverse a given string

Given:

str1 = "PYnative"

Expected Output:

evitanYP
Show Hint
  • Use negative slicing
  • Or use the built-in function reversed().
Show Solution

Solution 1: Negative String slicing

str1 = "PYnative"
print("Original String is:", str1)

str1 = str1[::-1]
print("Reversed String is:", str1)

Solution 2: Using the reversed() function

str1 = "PYnative"
print("Original String is:", str1)

str1 = ''.join(reversed(str1))
print("Reversed String is:", str1)

Exercise 12: Find the last position of a given substring

Write a program to find the last position of a substring “Emma” in a given string.

Given:

str1 = "Emma is a data scientist who knows Python. Emma works at google."

Expected Output:

Last occurrence of Emma starts at index 43
Show Hint

Use the string function rfind()

Show Solution
str1 = "Emma is a data scientist who knows Python. Emma works at google."
print("Original String is:", str1)

index = str1.rfind("Emma")
print("Last occurrence of Emma starts at index:", index)

Exercise 13: Split a string on hyphens

Write a program to split a given string on hyphens and display each substring.

Given:

str1 = Emma-is-a-data-scientist

Expected Output:

Displaying each substring

Emma
is
a
data
scientist
Show Hint

Use the string function split()

Show Solution
str1 = "Emma-is-a-data-scientist"
print("Original String is:", str1)

# split string
sub_strings = str1.split("-")

print("Displaying each substring")
for sub in sub_strings:
    print(sub)

Exercise 14: Remove empty strings from a list of strings

Given:

str_list = ["Emma", "Jon", "", "Kelly", None, "Eric", ""]

Expected Output:

Original list of sting
['Emma', 'Jon', '', 'Kelly', None, 'Eric', '']

After removing empty strings
['Emma', 'Jon', 'Kelly', 'Eric']
Show Hint
  • Use the built-in function filter() to remove empty strings from a list
  • Or use the for loop and if condition to remove the empty strings from a list
Show Solution

Solution 1: Using the loop and if condition

str_list = ["Emma", "Jon", "", "Kelly", None, "Eric", ""]
res_list = []
for s in str_list:
    # check for non empty string
    if s:
        res_list.append(s)
print(res_list)

Solution 2: Using the built-in function filter()

str_list = ["Emma", "Jon", "", "Kelly", None, "Eric", ""]

# use built-in function filter to filter empty value
new_str_list = list(filter(None, str_list))

print("After removing empty strings")
print(new_str_list)

Exercise 15: Remove special symbols / punctuation from a string

Given:

str1 = "/*Jon is @developer & musician"

Expected Output:

"Jon is developer musician"
Show Hint

Use string functions translate() and maketrans()

  • Use the translate() function to get a new string where specified characters are replaced with the character described in a dictionary or a mapping table.
  • Use the maketrans() function to create a mapping table.

Or Use the regex in Python. See Python regex replace.

Show Solution

Solution 1: Use string functions translate() and maketrans().

The string.punctuation constant contain all special symbols.

import string

str1 = "/*Jon is @developer & musician"
print("Original string is ", str1)

new_str = str1.translate(str.maketrans('', '', string.punctuation))

print("New string is ", new_str)

Solution 2: Using regex replace pattern in a string

import re

str1 = "/*Jon is @developer & musician"
print("Original string is ", str1)

# replace special symbols with ''
res = re.sub(r'[^\w\s]', '', str1)
print("New string is ", res)

Exercise 16: Removal all characters from a string except integers

Given:

str1 = 'I am 25 years and 10 months old'

Expected Output:

2510
Show Hint

Use the string function isdigit()

Show Solution
str1 = 'I am 25 years and 10 months old'
print("Original string is", str1)

# Retain Numbers in String
# Using list comprehension + join() + isdigit()
res = "".join([item for item in str1 if item.isdigit()])

print(res)

Exercise 17: Find words with both alphabets and numbers

Write a program to find words with both alphabets and numbers from an input string.

Given:

str1 = "Emma25 is Data scientist50 and AI Expert"

Expected Output:

Emma25
scientist50
Show Hint

Use the built-in function any() with the combination of string functions isalpha() and isdigit()

Show Solution
str1 = "Emma25 is Data scientist50 and AI Expert"
print("The original string is : " + str1)

res = []
# split string on whitespace
temp = str1.split()

# Words with both alphabets and numbers
# isdigit() for numbers + isalpha() for alphabets
# use any() to check each character

for item in temp:
    if any(char.isalpha() for char in item) and any(char.isdigit() for char in item):
        res.append(item)

print("Displaying words with alphabets and numbers")
for i in res:
    print(i)

Exercise 18: Replace each special symbol with # in the following string

Given:

str1 = '/*Jon is @developer & musician!!'

Expected Output:

##Jon is #developer # musician##
Show Hint

Use string function replace()

Show Solution
  • Use the string.punctuation constant to get the list of all punctuations
  • Iterate each symbol from a punctuations
  • Use string function replace() to replace the current special symbol in a string with #
import string

str1 = '/*Jon is @developer & musician!!'
print("The original string is : ", str1)

# Replace punctuations with #
replace_char = '#'

# string.punctuation to get the list of all special symbols
for char in string.punctuation:
    str1 = str1.replace(char, replace_char)

print("The strings after replacement : ", str1)

Filed Under: Python, Python Basics, Python Exercises

Did you find this page helpful? Let others know about it. Sharing helps me continue to create free Python resources.

TweetF  sharein  shareP  Pin

About Vishal

Founder of PYnative.com I am a Python developer and I love to write articles to help developers. Follow me on Twitter. All the best for your future Python endeavors!

Related Tutorial Topics:

Python Python Basics Python Exercises

Python Exercises and Quizzes

Free coding exercises and quizzes cover Python basics, data structure, data analytics, and more.

  • 15+ Topic-specific Exercises and Quizzes
  • Each Exercise contains 10 questions
  • Each Quiz contains 12-15 MCQ
Exercises
Quizzes

Posted In

Python Python Basics Python Exercises
TweetF  sharein  shareP  Pin

 Python Exercises

  • Python Exercises Home
  • Basic Exercise for Beginners
  • Input and Output Exercise
  • Loop Exercise
  • Functions Exercise
  • String Exercise
  • Data Structure Exercise
  • List Exercise
  • Dictionary Exercise
  • Set Exercise
  • Tuple Exercise
  • Date and Time Exercise
  • OOP Exercise
  • Python JSON Exercise
  • Random Data Generation Exercise
  • NumPy Exercise
  • Pandas Exercise
  • Matplotlib Exercise
  • Python Database Exercise

All Python Topics

Python Basics Python Exercises Python Quizzes Python File Handling Python OOP Python Date and Time Python Random Python Regex Python Pandas Python Databases Python MySQL Python PostgreSQL Python SQLite Python JSON

About PYnative

PYnative.com is for Python lovers. Here, You can get Tutorials, Exercises, and Quizzes to practice and improve your Python skills.

Explore Python

  • Learn Python
  • Python Basics
  • Python Databases
  • Python Exercises
  • Python Quizzes
  • Online Python Code Editor
  • Python Tricks

Follow Us

To get New Python Tutorials, Exercises, and Quizzes

  • Twitter
  • Facebook
  • Sitemap

Legal Stuff

  • About Us
  • Contact Us

We use cookies to improve your experience. While using PYnative, you agree to have read and accepted our Terms Of Use, Cookie Policy, and Privacy Policy.

Copyright © 2018–2023 pynative.com