Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 7, 2018 17:09:04

moist
Зарегистрирован: 2018-02-07
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Результат != ожидания при обработке через функцию

Здравствуйте. Есть функция

 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)

Офлайн

#2 Фев. 7, 2018 17:25:20

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Результат != ожидания при обработке через функцию

 >>> '123'.isdigit()
True
>>> '123qwe'.isdigit()
False
>>> '123qwe'.isalpha()
False
>>> 'qwe'.isalpha()
True
>>> 

Офлайн

#3 Фев. 7, 2018 17:27:42

moist
Зарегистрирован: 2018-02-07
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Результат != ожидания при обработке через функцию

vic57, простите, не понял, что вы хотели сказать.

Офлайн

#4 Фев. 7, 2018 17:55:59

papuas
Зарегистрирован: 2015-06-19
Сообщения: 159
Репутация: +  6  -
Профиль   Отправить e-mail  

Результат != ожидания при обработке через функцию

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

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





Отредактировано papuas (Фев. 7, 2018 18:01:09)

Офлайн

#5 Фев. 7, 2018 18:06:52

moist
Зарегистрирован: 2018-02-07
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Результат != ожидания при обработке через функцию

papuas
теперь понял, спасибо. Однако проблема все еще стоит. Даже переписав

  if x.isdigit() and len(x) <= 8:
результат не изменился.

Офлайн

#6 Фев. 7, 2018 18:21:56

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Результат != ожидания при обработке через функцию

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

Офлайн

#7 Фев. 7, 2018 18:22:33

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Результат != ожидания при обработке через функцию

moist
результат не изменился.
elif замените на if



Офлайн

#8 Фев. 7, 2018 18:29:37

moist
Зарегистрирован: 2018-02-07
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Результат != ожидания при обработке через функцию

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.

Отредактировано moist (Фев. 7, 2018 18:31:25)

Офлайн

#9 Фев. 7, 2018 18:38:37

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Результат != ожидания при обработке через функцию

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
>>> 

Офлайн

#10 Фев. 7, 2018 19:26:39

moist
Зарегистрирован: 2018-02-07
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Результат != ожидания при обработке через функцию

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.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version