Я пытаюсь создать функцию, в которой заданное значение (переданное в виде строки) проверяется, чтобы увидеть, равно ли количество цифр 4 или 6, и что это число.
Моим первым импульсом было использовать этот код:
def number(x):
if (len(x) == (4 or 6)) and x.isdigit():
print "True"
else:
print "False"
Этот код выше проходит только первый тест ниже... Я не понимаю, почему он проходит это, но ни один из других тестов:
number("1234")
Только когда я отделю функции len(), все будет работать правильно.
def number(x):
if (len(x) == 4 or len(x) == 6) and x.isdigit():
print "True"
else:
print "False"
## Checks
number("1234")
number("123456")
number("abcd")
number("abcdef")
number("1")
number("a")
Приведенный выше код проходит все тесты.
Итак, мои вопросы:
- Что тут происходит?
- Любой способ написать более чистый код для этого?
Спасибо за помощь!
** Не повторяющийся вопрос, потому что, хотя этот вопрос имеет те же основные концепции, касающиеся логических операторов, сама проблема отличается из-за использования len(), isdigit() и дополнительного вопроса о том, как лучше всего его улучшить (кто-то прокомментировал использование возврата). Тем не менее, определенно добавляет другую точку зрения на другой вопрос.
(4 or 6)
сам по себе?len(x)
равно этому? - person OneCricketeer   schedule 20.07.2016