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

Визначити, чи задовольняє рядок наступній властивості: рядок містить (крім букв) тільки одну цифру, причому її числове значення дорівнює довжині рядка. Ето рабочий код , только он добавляет все цифры в коде и выполняет условие , а нужно что бы он определил сколько цифр в строке и если 1 то выполнял условие задание. Я пыталась записать , но код не работал.

s1 = input('Введіть довільний 
рядок:  ')
m = 0
for c in s1:
    if c >= '0' and c <= '9':
        m = m + int(c)
if len(s1) == m:
    print('Довжина рядка -' + 
str(len(s1)))
    print("Так, рядок задовольняє 
умову")
else:
    print('Довжина рядка - ' + 
str(len(s1)))
    print("Ні, рядок не 
задовольняє умову")

Ответы (1 шт):

Автор решения: Zhihar

Ошибка вашего кода в том как вы определяете число:

m = m + int(c)

т.е. если у вас в строке 123, то будет выполнен следующий код:

m = 1 + 2 + 3 = 6

что некорректно

по идее можно было бы выполнить код следующим образом:

  1. найти начало числа
  2. найти конец числа
  3. выделить число, первую и конечную часть строки соединить
  4. прогнать 1) и 2) для новой строки
  5. если найдено число - строка не удовлетворяет условию
  6. если не найдено число - сравнить получившееся число с длиной строки

Можно код сделать в лоб (чтобы не искать числа просто оставляем только цифры в строке и пробуем преобразовать все это в число, если будет несколько чисел или не будет чисел вовсе - вывалится исключение):

text = "abcde12fghij"

nums = ''.join(i if i.isdigit() else ' ' for i in text)

try:
    size = int(nums)
except ValueError:
    print("треш")
else:
    if size == len(text):
        print("строка соответствует формату")
    else:
        print("строка не соответствует формату")
→ Ссылка