Мне нужна помощь в написании функции, которая считает цифры и буквы отдельно, а затем возвращает результат в формате словаря. - PullRequest
0 голосов
/ 01 августа 2020

Я работал над контрольным вопросом python и какое-то время застрял на нем. Ниже приведен вопрос.

Напишите функцию, которая принимает строку и вычисляет количество букв и цифр в ней. Вернуть результат в словарь.

Примеры:

count_all("Hello World") ➞ { "LETTERS":  10, "DIGITS": 0 }

count_all("H3ll0 Wor1d") ➞ { "LETTERS":  7, "DIGITS": 3 }

count_all("149990") ➞ { "LETTERS": 0, "DIGITS": 6 }

Примечания:

  • Тесты содержат только буквенно-цифровые c символы.
  • Пробелы не являются буквами.
  • Все тесты содержат допустимые строки.
  • Функция должна возвращать словарь

Я написал код для его решения, но получаю a 'Слишком много позиционных аргументов для вызова функции.

def count_all(string):
 
    d = 0
    l = 0    
    for c in string:
        if c.isdigit():
            d=d+1
        elif c.isalpha():
            l=l+1
        else:
            pass


print(count_all("string", "l"))
print(count_all("string", "d"))

что именно я сделал не так?

Ответы [ 2 ]

0 голосов
/ 01 августа 2020

Попробовать

def countStuff(argString = None):
    resultDict = {"Letters" : 0, "Numbers" : 0}
    if argString is None:
        print("-_-")
    for i in argString:
        if i.isdigit():
            resultDict["Numbers"] += 1
        elif i.lower().islower():
            resultDict["Letters"] += 1
        else:
            pass
    print(resultDict)
0 голосов
/ 01 августа 2020

Практически все, что вам нужно сделать, это сделать так, чтобы вы передавали только 1 строку в вашу функцию, например: print(count_all("letters and numbers 12345")). Во-вторых, вам нужно изменить вывод так, чтобы он возвращал dict, например: return {"letters": l, "digits": d}.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...