Помогите вывести минимальное число (ошибку выдает:TypeError: 'int' object is not iterable)

Пишу программу, которая в последовательности натуральных чисел определяет минимальное число, кратное 3.

Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется число, кратное 3. Количество чисел не превышает 1000. Введённые числа не превышают 30 000. Программа должна вывести одно число — минимальное число, кратное 3.

n = int(input())
k = 0
for i in range(n):
    a = int(input())
    if a%3 == 0:
        minimum = min(a)
print(minimum)

Ответы (3 шт):

Автор решения: gil9red

Например, так:

n = int(input())
items = []

for i in range(n):
    a = int(input())
    if a % 3 == 0:
        items.append(a)

print(min(items))

или так:

n = int(input())
min_num = None

for i in range(n):
    a = int(input())
    if a % 3 == 0:
        if min_num is None:
            min_num = a
        else:
            min_num = min(min_num, a)

print(min_num)
→ Ссылка
Автор решения: Евгений

Проблема вашего кода вот в этой строке:

...
        minimum = min(a)
...

Функция min возвращает минимальное число из списка (кортежа/словаря/множества) чисел, а вы пытаетесь передать ей просто число.

Вариант валидного использования функции min для решения вашей задачи:

n = int(input())
data = [int(input()) for _ in range(n)]

divided = [elem for elem in data if not elem%3]
print(min(divided))
→ Ссылка
Автор решения: Alex

Если вы пишите n = 10 for i in range(n) Это означает, что вы берете числа от 1 до 9 А for i in range(n + 1) это уже от 1 до 10.

Теперь если вы решаете через функцию range вам не нужно использовать функцию min , а просто вернуть первое значение, которое нацело делится на 3.

n = int(input('ЧИСЛО: '))
    for i in range(n+1):
        if i == 0: # Если не добавить это вернется 0
            continue # так же, чтобы не вернуло 0 можно написать for i in range(1, n)
        if i % 3 == 0:
            print(i)
            break

вывод:

$ python test.py
ЧИСЛО: 55555555
3

Если вы решаете через список рандомных чисел, то нужно будет воспользоватся min

l1 = [47851, 819289, 51778, 5878, 145256, 145587, 2456, 1456, 915, 879, 37895, 1, 5, 
     7, 8, 99999999, 891]

def min_div_by_three(num_list):
    return min([i for i in num_list if i % 3 == 0])

print(min_div_by_three(l1))

вывод:

$ python test.py
879

Вот ещё код с генерированием списка на десерт)

from random import randint

def min_div_by_three(num_list: list):
    return min([i for i in num_list if i % 3 == 0])

def gen_list(start: int = 111, end: int = 9999999, range_var: int = 1001):
    num = []
    for _ in range(range_var):
        num.append(randint(start, end))
    return num

print(min_div_by_three(gen_list()))
→ Ссылка