Sign in to save your place.

Assignment 4 — Solutions

Functions

The ten practice questions, with type hints for Python 3.12+

Practice without these answers is on student-assignments.html#assignment4. Hints stay there. Solutions stay here.

1Return the sum, difference, and product of two numbers.
def combine(left: int, right: int) -> tuple[int, int, int]:
    return left + right, left - right, left * right

added, subtracted, multiplied = combine(8, 3)
print(added, subtracted, multiplied)  # 11 5 24
2Factorial of 10.
def factorial(n: int) -> int:
    if n < 0:
        raise ValueError("factorial is defined here for n >= 0")
    result = 1
    for value in range(2, n + 1):
        result *= value
    return result

print(factorial(10))  # 3628800
3Sort a list of integers descending, without changing the input list.
def descending(values: list[int]) -> list[int]:
    return sorted(values, reverse=True)

print(descending([3, 1, 2]))  # [3, 2, 1]
4Count vowels in a string.
def vowel_count(text: str) -> int:
    return sum(1 for char in text.lower() if char in "aeiou")

print(vowel_count("Data"))  # 2
5Say whether a number is even or odd.
def even_or_odd(number: int) -> str:
    return "Even" if number % 2 == 0 else "Odd"

print(even_or_odd(10))
6Sum the even numbers in [12, 2, 33, 11, 45, 8].
def sum_evens(values: list[int]) -> int:
    return sum(number for number in values if number % 2 == 0)

print(sum_evens([12, 2, 33, 11, 45, 8]))  # 22
7Remove duplicates and keep the first-seen order.
def unique(values: list[int]) -> list[int]:
    return list(dict.fromkeys(values))

print(unique([1, 2, 1, 3]))  # [1, 2, 3]
8Reverse a string.
def reverse_text(text: str) -> str:
    return text[::-1]

print(reverse_text("data"))  # atad
9greet_user prints Hello, [Name]! and Hello, Guest! when no name is passed.
def greet_user(name: str = "Guest") -> None:
    print(f"Hello, {name}!")

greet_user("Asha")
greet_user()
10Return the cube of an integer.
def cube(number: int) -> int:
    return number ** 3

print(cube(3))  # 27

Knowledge check

Question 1 asks for three results. What does the return line actually hand back?