Нахождение количества прописных и строчных букв в строке в python

#python #string #function #uppercase #lowercase

#python #строка #функция #верхний регистр #нижний регистр

Вопрос:

когда я запускаю код, он всегда показывает 0 в качестве результата…. код:

 def case_counter(string):
    lower=0
    upper=0
    for char in string:  
        if (string.islower()):
            lower=lower 1
        
        elif (string.isupper()):
            upper=upper 1
        
    print('the no of lower case:',lower)
    print('the no of upper case',upper)
string='ASDDFasfds'        
case_counter(string)
  

Результат:
номер в нижнем регистре: 0
номер в верхнем регистре 0
ОЖИДАЕМЫЙ:
номер в нижнем регистре: 5
номер в верхнем регистре 5

Комментарии:

1. вы тестируете string, но хотите протестировать char

2. итак, что мне делать??

3. вы меняете строку на символ в предложениях if.

4. понял ….. использовал char.islower() и char.isupper() в соответствии с предложениями… результат — это то, что я ожидал ….. спасибо

Ответ №1:

При сравнении меньшего и большего значения для вашей цели вы должны использовать переменную «char», как в примере в этом коде

 def case_counter(string):
    lower=0
    upper=0
    for char in string:  
        if (char.islower()):
            lower=lower 1
        
        elif (char.isupper()):
            upper=upper 1
        
    print('the no of lower case:',lower)
    print('the no of upper case',upper)
string='ASDDFasfds'        
case_counter(string)
  

Комментарии:

1. просто сделал и получил ожидаемый результат …. спасибо …. но тогда, когда я должен использовать string.islower() или string.isuuper() ???

2. Я рад, что это помогло вам. В вашем примере переменная «string» будет содержать всю строку, т.Е. asdfasfds, поэтому, если вы хотите проверить, что вся строка написана в нижнем или верхнем регистре, вы используете строковую переменную. Посмотрите на условный цикл for в python, чтобы узнать больше

3. можно ли решить эту проблему с помощью метода string.count()???/

4. string.count() будет полезен, если вы хотите подсчитать повторение подстроки. Например:string=»ABABcdef» затем используйте string.count(«AB»,0,len(строка)) . Это вернет 2. Для получения дополнительной информации: https://www.tutorialspoint.com/python/string_count.htm

Ответ №2:

Я думаю, вам нужно использовать char.islower() вместо string.islower() и вы можете сделать lower =1 вместо lower=lower 1 и то же самое для upper

Ответ №3:

Ваши условия неверны. Обновить string.islower() и string.isupper() до char.islower() и char.isupper()

Ответ №4:

Вам нужно прочесть каждый символ по отдельности. Теперь ваша программа проверяет, записана ли вся строка в верхнем или нижнем регистре.

Это означает, что ваш код должен выглядеть примерно так:

 def upper_lower(text):
    upper = 0
    lower = 0
    for i in text:
        if i.isupper():
            upper  = 1
        else:
            lower  =1
    print('the no of lower case:',lower)
    print('the no of upper case',upper)