I am trying to find the highest divisor of a integer N from a list D in python

Question:

I am a student who is beginner at programming and I have been asked to find the highest divisor of a integer N from a list D in python.

This I the code I have so far:

N = int(input("Enter the value N: "))
D = list(input("Enter the list D: "))

def highest_divisor(N, D):
    # Check if N is an integer and D is a list
    if not isinstance(N, int):
        print("Error: N must be an integer.")
        return
    if not isinstance(D, list):
        print("Error: D must be a list.")
        return
    
    # Find divisors of N in D
    divisors = [divisor for divisor in D if N % divisor == 0]
    
    # Check if there are any divisors
    if not divisors:
        print(f"No divisors of {N} found in the list D.")
        return
    
    # Return the highest divisor
    return max(divisors)

result = highest_divisor(N, D)
if result is not None:
    print(f"The highest divisor of {N} in the list D is: {result}")

This is what I get:

unsupported operand type(s) for %: 'int' and 'str'
Asked By: Alfred Lovesey

||

Answers:

The issue arises because input() function returns a string, not an integer. You need to convert the elements of list D into integers. Modify your code like this:

N = int(input("Enter the value N: "))
D = list(map(int, input("Enter the list D: ").split()))

def highest_divisor(N, D):
    # Check if N is an integer and D is a list
    if not isinstance(N, int):
        print("Error: N must be an integer.")
        return
    if not isinstance(D, list):
        print("Error: D must be a list.")
        return
    
    # Find divisors of N in D
    divisors = [divisor for divisor in D if N % divisor == 0]
    
    # Check if there are any divisors
    if not divisors:
        print(f"No divisors of {N} found in the list D.")
        return
    
    # Return the highest divisor
    return max(divisors)

result = highest_divisor(N, D)
if result is not None:
    print(f"The highest divisor of {N} in the list D is: {result}")
Answered By: TheHungryCub
Categories: questions Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.