Exercise 1

  • Read a string from the keyboard
  • Separate by spaces
  • Output negative numbers, name, prime numbers in order with no duplicates
import math
 
def is_prime(number: int) -> bool:
    if number < 2:
        return False
    if number == 2:
        return True
    if number % 2 == 0:
        return False
    for i in range(3, int(math.sqrt(number)) + 1, 2):
        if number % i == 0:
            return False
    return True
 
 
def is_capitalized(word: str) -> bool:
    return 'A' <= word[0] <= 'Z'
 
# 45 Anna has apples -13 17 23 23 Mary
line = input("Enter a string: ")
tokens = line.split(" ")
negative_numbers = []
prime_numbers = []
names = []
for token in tokens:
    try:
        int_token = int(token)
        if int_token < 0:
            negative_numbers.append(int_token)
        elif is_prime(int_token):
            prime_numbers.append(int_token)
    except ValueError:
        if is_capitalized(token):
            names.append(token)
print("Negative numbers:", negative_numbers)
prime_numbers = set(prime_numbers)
prime_numbers = list(prime_numbers)
prime_numbers.sort()
print("Prime numbers:", set(prime_numbers))
print("Names:", names)