форматирование инструкции печати для разных значений и вызова функции

#python #function #dictionary #printing

#python #функция #словарь #печать

Вопрос:

Я практикую свой python и пытаюсь отформатировать инструкцию печати приведенного ниже кода для match_string, чтобы он печатался в этом формате:

 There are 5 numbers, 4 letters and 2 other characters. 
  

Я пытался сделать:

 print("There are:",   x.nums,   "numbers",  x.letters, "letter",   x.other,  "other characters")
  

и я получаю сообщение об ошибке:

 AttributeError: 'tuple' object has no attribute 'nums'
  

Я также думаю, что у меня также есть проблема с частью getDupes, но я не могу понять, что именно, оно просто печатает то же самое, что и.

Вот мой код:

 def match_string(words):
    nums = 0
    letter = 0
    other = 0
    for i in words :
        if i.isalpha():
            letter =1
        elif i.isdigit():
            nums =1
        else:
            other =1
    return nums,letter,other


def getDupes(x):
    d = {}
    for i in x:
        if i in d:
            if d[i]:
                yield i
                d[i] = False
        else:
            d[i] = True

x = match_string(input("enter a sentence"))
c = getDupes(x)
print(x)
#print("There are:",   str(x.nums),   "numbers",  x.letters, "letter",   x.other,  "other characters")
print("PRINT",x)
  

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

1. return nums,letter,other возвращает кортеж, а не объект с nums атрибутами , letters , или other .

2. есть ли способ преобразовать его, чтобы он мог возвращать то, что я хочу??

Ответ №1:

функция match_string возвращает кортеж, следовательно, доступ к нему невозможен с помощью x.nums вместо этого попробуйте приведенный ниже код

 nums,letter,other = match_string(input("enter a sentence"))
print("There are:",   nums,   "numbers",   letters, "letter",   other,  "other characters")
  

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

1. Я удалил из инструкции печати, и это исправило ситуацию. Спасибо