#python #python-3.x
Вопрос:
Скрипт на Python:
def any_lowercase2(s):
for c in s:
if 'c'.islower():
return 'True'
else:
return 'False'
print(any_lowercase2('Ansar'))
print(any_lowercase2('ansar'))
Я ожидал, что произойдет ошибка, но вместо этого я получаю вывод как True
для того, так и для другого.
Комментарии:
1. ‘c’ удалить кавычки => c
Ответ №1:
Этот код всегда будет возвращаться True
, потому что он проверяет, является ли строка 'c'
строчной, а не переменной с именем c
.
Измените условие на:
if c.islower():
Функция также вернется после проверки только первой буквы во входной строке. Вы можете исправить это, переместив else
корпус так, чтобы он возвращался только после завершения цикла.
def any_lowercase2(s):
for c in s:
if 'c'.islower():
return 'True'
return 'False'
Это будет возвращено 'False'
, если все входные данные написаны в верхнем регистре.
Ответ №2:
В этом случае, если бы я был на вашем месте, я бы предпочел написать однострочное, как:
def any_lowercase2(s):
return s[0].islower()
Или, если вам нужна петля:
def any_lowercase2(s):
for c in s:
return c.islower()
Это приведет к прямой печати логических значений, так islower
как функция выдает True
, если она в нижнем регистре, и false, если она прописная или не алфавитная.