Refresher: Tuples + Strings 1¶
Introduction to Tuples¶
Introduction¶
We delve into the fundamentals of Tuples and Strings in Python, two powerful data types that play a crucial role in various programming scenarios. Let's start by understanding the essence of Tuples.
Planets Example¶
Let's start with an example using an array to store the names of all the planets in our solar system.
planets = ["Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune"]
Adding the Sun¶
Now, imagine we someone is trying to include the Sun in our list of planets. Since arrays in Python are mutable, someone might be tempted to do this:
planets.append("Sun")
However, this is where mutability can lead to errors. While the code above will add "Sun" to the list, it's not accurate to consider the Sun a planet. This illustrates a potential problem with mutable structures when trying to maintain data integrity.
Tuples¶
Definition¶
Now, let's explore tuples - a different kind of data structure. Tuples are similar to arrays but are immutable. This immutability provides certain advantages, especially in situations where data integrity is crucial.
Creating Tuples with Numbers¶
We can create a tuple with numbers like this:
# Definition
a = (1, 2, 3, 4)
print(type(a)) # Output: <class 'tuple'>
# Exception
b = (1,)
print(type(b)) # Output: <class 'tuple'>
c = (1, 2)
print(type(c)) # Output: <class 'tuple'>
d = ()
print(type(d)) # Output: <class 'tuple'>
Explanation¶
- In the first example,
a
is a tuple containing the numbers 1 through 4. Thetype
function confirms that it's indeed a tuple. - The second example,
b
, demonstrates the need for a comma even when creating a tuple with a single element. Without the comma, Python interprets it as a different data type. - The third example,
c
, is a tuple with two elements. - The fourth example,
d
, is an empty tuple.
Creating Tuples with the range Keyword¶
Tuples can also be created using the range
keyword:
a = tuple(range(10))
print(type(a)) # Output: <class 'tuple'>
print(a) # Output: (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
Explanation¶
In this example, a
is a tuple created using the tuple
constructor with the range(10)
function, resulting in a tuple with the numbers 0 through 9.
Tuples in Functions¶
Consider the following function that swaps the values of two variables:
def swap(a, b):
return b, a
a, b = swap(2, 3)
Explanation¶
In this example, the swap
function takes two parameters a
and b
. Then the function creates and returns a tuple. When the function is called with swap(2, 3)
, it returns a tuple containing the values of b
and a
. This tuple is then unpacked into the variables a
and b
on the left side of the assignment statement.
After this line executes, a
will have the value 3
, and b
will have the value 2
. This is a powerful and elegant way to swap the values of two variables without needing a temporary variable.
Partially Immutable Tuples¶
Consider the following example of a partially immutable tuple:
# Partially Immutable
a = (1, 2, 3, ['a', 'b'])
a[3].append('c')
print(a)
Output¶
The output of this code will be:
(1, 2, 3, ['a', 'b', 'c'])
Explanation¶
Tuples themselves are immutable, but the elements within them may be mutable. In this case, the list inside the tuple is mutable. The line a[3].append('c')
accesses the fourth element of the tuple (which is a list) and appends the string 'c' to it. Even though the tuple is partially immutable, the list inside it can be modified.
Question¶
What will be the output of the following?
t = (1, 2, 3)
t[0] = 4
print(t)
Choices
- (4, 2, 3)
- (1, 2, 3)
- Error
Tuples in Python are immutable, meaning their elements cannot be modified after creation. In the given code, attempting to assign a new value (4
) to the first element of the tuple (t[0]
) will result in an error.
Question¶
What will be the output of the following?
a = 23
t = (a)
print(type(t))
Choices
- tuple
- list
- str
- int
The code assigns the value 23 to the variable 'a' and then creates a tuple 't' with a single element, which is the value of 'a'. When the type of 't' is printed, it will output 'int' because the tuple contains only one integer element.
Question¶
What will be the output of the following?
t = (10, 20, 30, 40)
print(t[1:-1])
Choices
- 10, 20, 30
- Nothing
- 20, 30, 40
- 20, 30
The slice t[1:-1]
extracts elements from index 1 to one position before the last index (-1) in the tuple t
, resulting in the elements 20 and 30 being printed.
Strings in Python¶
Strings¶
String Literals¶
Strings in Python can be created using single quotes ('
) or double quotes ("
). Both forms are equivalent, and you can choose the one that suits your preference. Here's an example:
a = "abc"
b = 'abc'
print(type(a))
print(type(b))
Output¶
<class 'str'>
<class 'str'>
Explanation¶
In this example, both a
and b
are strings with the content "abc." The type
function confirms that they are indeed string objects. Python treats single and double quotes as equivalent for defining strings.
ASCII and Related Functions¶
ASCII (American Standard Code for Information Interchange) is a character encoding standard that represents each character with a unique number. Python provides ord
and chr
functions to work with ASCII values.
print(ord('A'))
print(ord('0'))
print(ord('9'))
print(chr(129))
Output¶
65
48
57
ü
Explanation¶
ord('A')
returns the ASCII value of the character 'A', which is 65.ord('0')
returns the ASCII value of the digit '0', which is 48.ord('9')
returns the ASCII value of the digit '9', which is 57.chr(129)
returns the character corresponding to the ASCII value 129, which is 'ü'.
These functions are useful for working with character encodings and converting between characters and their ASCII representations. Keep in mind that ASCII values are integers representing characters in the ASCII table.
Properties of Strings¶
Strings in Python possess several important properties, including mutability, homogeneity, iterability, and case sensitivity.
# Variable
a = 'Robin Dhole'
Mutability¶
Strings in Python are immutable, meaning their values cannot be changed after creation.
# Attempt to modify a character in the string
a[0] = 'r'
Output¶
TypeError: 'str' object does not support item assignment
Explanation¶
The attempt to modify the first character of the string a
raises a TypeError
. This demonstrates the immutability of strings.
Homogeneity¶
Strings are homogeneous, meaning they can only contain characters of the same type.
# Concatenating string and integer
result = a + 42
Output¶
TypeError: can only concatenate str (not "int") to str
Explanation¶
Attempting to concatenate a string (a
) with an integer (42
) raises a TypeError
, emphasizing the homogeneity requirement of strings.
Iterability¶
Strings are iterable, allowing you to loop through each character.
# Iterating through each character
for char in a:
print(char)
Output¶
r
o
b
i
n
D
h
o
l
e
Explanation¶
The for
loop iterates through each character in the string a
, printing them one by one.
Case Sensitivity¶
Strings are case-sensitive, distinguishing between uppercase and lowercase characters.
# Comparing strings
b = 'scaler academy'
print(a == b)
Output¶
False
Explanation¶
The comparison between a
and b
returns False
because of case sensitivity. The uppercase 'S' in a
is not equal to the lowercase 's' in b
.
Question¶
Which one of the following is a valid string?
Choices
- "ScaLer#'
- %adfa"
- "^&abc#"
- 'academy'
The correct answer is "^&abc#". This is a valid string because it is enclosed in double quotation marks, and its contents consist of a combination of letters, numbers, and symbols.
Question¶
What will be the output of the following?
print(ord('c'))
Choices
- 98
- 99
- 100
- 101
The correct answer is 99. The ord
function in Python returns the Unicode code point of a given character. In this case, it prints the Unicode code point of the character 'c', which is 99.
Question¶
What will be the output of the following?
print(chr(70))
Choices
- C
- E
- F
- G
The chr()
function in Python returns a string representing a character whose Unicode code point is the integer passed to it. In this case, chr(70)
returns the character with Unicode code point 70, which is 'F'.
Question¶
What will be the output of the following?
s = 'Scaler Academy'
print(s[0:5])
Choices
- Sae
- Scaler
- Scale
- cale
The code s[0:5]
extracts the substring from index 0 to 4 (5 exclusive) from the string 'Scaler Academy', resulting in the output 'Scale'.
Question¶
What will be the output of the following?
a = '1'
b = '2'
c = a + b
print(c)
Choices
- 3
- '3'
- 12
- 1 2
The correct answer is: 12
In Python, when you use the +
operator with two strings, it concatenates them. So, a + b
where a
is '1' and b
is '2' results in the string '12', and that is what will be printed.
Question¶
What will be the output of the following?
a = 'abcd'
a += 'e'
print(len(a))
Choices
- 3
- 4
- 5
- 6
The code initializes a string variable 'a' with the value 'abcd', then concatenates 'e' to it using the +=
operator. Finally, it prints the length of the modified string 'a', which is now 'abcde'. The length of 'abcde' is 5, so the output is 5.
Functions in Strings¶
capitalize()¶
The capitalize()
method in Python is used to capitalize the first letter of a string.
# Example
'john doe'.capitalize()
Output¶
'John doe'
Explanation¶
In this example, the capitalize()
function capitalizes the first letter of the string, transforming 'john doe' into 'John doe'.
title()¶
The title()
method capitalizes the first letter of each word in a string.
# Example
'sneha sudam'.title()
Output¶
'Sneha Sudam'
Explanation¶
The title()
function capitalizes the first letter of each word in the string, resulting in 'Sneha Sudam'.
count(substring)¶
The count(substring)
method counts the occurrences of a substring in the string.
# Example
'pooja nikam'.count('ni')
Output¶
2
Explanation¶
The count()
function counts the occurrences of the substring 'ni' in the string, returning the value 2
.
replace(old, new)¶
The replace(old, new)
method replaces occurrences of the old substring with the new substring.
# Example
'Vicky Sharma'.replace('a', 'e')
Output¶
'Vicky Sherme'
Explanation¶
The replace()
function replaces occurrences of 'a' with 'e' in the string, resulting in 'Vicky Sherme'.
replace(old, new, count)¶
The replace(old, new, count)
method replaces a specified number of occurrences of the old substring with the new substring.
# Example
'Vicky Sharma'.replace('a', 'e', 1)
Output¶
'Vicky Sherma'
Explanation¶
In this example, only the first occurrence of 'a' is replaced with 'e' in the string, resulting in 'Vicky Sherma'.
split(separator)¶
The split(separator)
method splits a string into a list of substrings based on the specified separator.
# Example
a = 'Aakar, Saurav, Kusum'
print(a.split(','))
Output¶
['Aakar', ' Saurav', ' Kusum']
Explanation¶
The split()
function divides the string into a list of substrings based on the specified separator (,
in this case), resulting in ['Aakar', ' Saurav', ' Kusum']
.
# Example
a = 'There——are—-many-—places——to——visit.'
print(a.split('——'))
Output¶
['There', 'are', 'many', 'places', 'to', 'visit.']
Explanation¶
The split()
function divides the string using the specified separator ('——'
in this case), resulting in ['There', 'are', 'many', 'places', 'to', 'visit.']
.
Print ASCII Letter¶
This example takes user input and prints the ASCII values of each letter in the input string.
# Example
s = input()
for char in s:
print(ord(char), end=' ')
Output (for input 'hello')¶
104 101 108 108 111
Explanation¶
The ord()
function is used to get the ASCII value of each character in the input string. The end=' '
parameter ensures that the values are printed with a space in between.
Formatted Strings¶
Formatted strings in Python provide a convenient way to embed variable values or expressions into a string, making it more readable and flexible.
# Example
name = 'Aakar'
gender = 'Mate'
age = 25
print('Name:—', name, 'gender:—', gender, 'age:—', age)
Output¶
Name:— Aakar gender:— Mate age:— 25
Explanation¶
In this example, a formatted string is created using the variables name
, gender
, and age
, resulting in the output Name:— Aakar gender:— Mate age:— 25
.
There are several ways to achieve string formatting in Python, but one commonly used method involves the format()
method.
# Example
template = 'Name:— {}, gender:— {}, age:— {}'
print(template.format(name, gender, age))
Output¶
Name:— Aakar, gender:— Mate, age:— 25
Explanation¶
The format()
method is used to insert the values of name
, gender
, and age
into the string template, resulting in the formatted output Name:— Aakar, gender:— Mate, age:— 25
.
# Example
template = 'Name:— {0}, gender:— {1}, age:— {2}'
print(template.format(name, gender, age))
Output¶
Name:— Aakar, gender:— Mate, age:— 25
Explanation¶
In this example, positional placeholders {0}
, {1}
, and {2}
are used in the template to indicate the positions of name
, gender
, and age
in the format()
method. The output is the same as the previous example.
Question¶
What will be the output of the following?
a = 'Scaler Academy'
print(a.count('a'))
Choices
- 2
- 3
- 4
- 0
The output of the given Python code will be 2. This is because the count()
method is used to count the number of occurrences of a specified substring (in this case, the letter 'a') within the given string 'Scaler Academy'.
Question¶
What will be the output of the following?
a = 'i-am-awesome'
b = a.split('-')
print(len(b))
Choices
- 2
- 3
- 4
- 5
The correct answer is 3. The code splits the string 'i-am-awesome' at each occurrence of the hyphen ('-') and creates a list b
with three elements: ['i', 'am', 'awesome']. The len(b)
then outputs 3, indicating the number of elements in the list.