Найти - Пользователи
Полная версия: Результат != ожидания при обработке через функцию
Начало » Python для новичков » Результат != ожидания при обработке через функцию
1 2
moist
Здравствуйте. Есть функция
 def len_check(x):
    x= str(x).strip()
    if x.isdigit() == True and len(x) <= 8:
        return False 
    elif len(x) < 8 or len(x) > 12:
        return False
    return True
Ожидаю, что при подстановке аргумента в функцию, получу только числа от 9 символов и наборы символов кроме чисел от 8 до 12, в итоге получаю результаты даже из 5 цифр или символов, при этом не все, а только некоторые. Часть успешно отсеевается. Где я ошибся? В мейне вызывается так:
 if len_check(abstr) == True:
    print(abstr)

vic57
 >>> '123'.isdigit()
True
>>> '123qwe'.isdigit()
False
>>> '123qwe'.isalpha()
False
>>> 'qwe'.isalpha()
True
>>> 
moist
vic57, простите, не понял, что вы хотели сказать.
papuas
moist
vic57, простите, не понял, что вы хотели сказать.
Наверное vic57 хотел до вас донести, что методы isdigit() isalpha() и так возвращают True или False.

moist
Здравствуйте. Есть функция
Функцию нужно было назвать
 def oil_inside_the_oil(x):





moist
papuas
теперь понял, спасибо. Однако проблема все еще стоит. Даже переписав
  if x.isdigit() and len(x) <= 8:
результат не изменился.
vic57
moist
простите, не понял, что вы хотели сказать.
 >>> 
def f(x):
	if x.isdigit() and len(x) > 8 : return True
	elif x.isalpha() and len(x) > 8 and len(x) < 12: return True
	return False
FishHook
moist
результат не изменился.
elif замените на if
moist
vic57
не сработало.
FishHook
 def len_check(x):
    x= str(x).strip()
    if x.isdigit() and len(x) <= 8:
        return False 
    if len(x) < 8 or len(x) > 12:
        return False
    return True
так тоже… Все еще получаю наборы меньше 8.

Вроде должно быть все просто, но я уже часа 3 как баран в ворота бьюсь и в упор не вижу, как может тут проскакивать меньше 8.
vic57
moist
if len(x) < 8 or len(x) > 12:
ты неправильно используешь and/or
 >>> 1 > 8
False
>>> 1 < 12
True
>>> 1 > 8 or 1 < 12
True
>>> 1 > 8 and 1 < 12
False
>>> 
moist
vic57
спасибо большое, мысль я понял
 >>> True and False
False
>>> False and True
False
Однако… Разделив на 2 конструкции:
 def len_check(x):
    x= str(x).strip()
    if x.isdigit() and len(x) <= 8:
        return False 
    if len(x) < 8:
        return False
    if len(x) > 12:
        return False    
    return True
я все еще получаю меньше 8.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB