Помогите , пожалуйста. Я почти написала код к заданию . Проблема в том что нужно было что бы программа проверяла сколько цифр в коде
Визначити, чи задовольняє рядок наступній властивості: рядок містить (крім букв) тільки одну цифру, причому її числове значення дорівнює довжині рядка. Ето рабочий код , только он добавляет все цифры в коде и выполняет условие , а нужно что бы он определил сколько цифр в строке и если 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 шт):
Ошибка вашего кода в том как вы определяете число:
m = m + int(c)
т.е. если у вас в строке 123, то будет выполнен следующий код:
m = 1 + 2 + 3 = 6
что некорректно
по идее можно было бы выполнить код следующим образом:
- найти начало числа
- найти конец числа
- выделить число, первую и конечную часть строки соединить
- прогнать 1) и 2) для новой строки
- если найдено число - строка не удовлетворяет условию
- если не найдено число - сравнить получившееся число с длиной строки
Можно код сделать в лоб (чтобы не искать числа просто оставляем только цифры в строке и пробуем преобразовать все это в число, если будет несколько чисел или не будет чисел вовсе - вывалится исключение):
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("строка не соответствует формату")