Приведите пример аргумента, который приводит к неверным результатам

#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, если она прописная или не алфавитная.