#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. Я удалил из инструкции печати, и это исправило ситуацию. Спасибо