Python: проверьте, что кортеж содержит только целые числа с while - PullRequest
0 голосов
/ 01 ноября 2019

У меня есть задача определить функцию contains_only_integers, которая принимает кортеж в качестве аргумента и возвращает True, если каждый элемент кортежа является целым числом, и false в противном случае. Я немного застрял на том, почему я ложусь каждый раз.

Я бы использовал цикл for, но задача специально запрашивает цикл while.

def contains_only_integers(tup):
    while isinstance(tup, int)==True:
        return True
    else:
        return False

Чего мне не хватает?

Ответы [ 2 ]

1 голос
/ 01 ноября 2019

Mthrsj рассказал о вашей проблеме и о том, как ее исправить, но альтернативный, возможно, более питонический, способ сделать это - использовать встроенную функцию all.

def contains_only_integers(tup):
    return all(isinstance(v, int) for v in tup)
1 голос
/ 01 ноября 2019

Когда вы делаете while isintance(tup,int), функция оценивает кортеж, а не каждый элемент. Чтобы достичь того, что вы хотите, вам нужно перебрать кортеж. Пример ниже:

def contains_only_integers(tup):
    for item in tup:
        if not isinstance(item, int):
            return False
    return True

Если код найдет любой элемент в кортеже, который не является целочисленным экземпляром, он вернет False. В противном случае он вернет True.

EDIT

Как вы сказали, вам нужно использовать цикл while, вот оно:

def contains_only_integers(tup):
    i = 0
    while i < len(tup):
        if isinstance(tup[i], int)==False:
            return False
        i+=1
    return True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...