Форум сайта python.su
Добрый день всем!!
Нужно проверить входят ли числа от 0 до 9 в строку «Земля-2023»???
Делаю через метод isalnum из-за того что есть - Оно выдает False ((
print("земля-2023".isalnum())
Офлайн
Ну так это же логично.
Давайте посмотрим на сам оператор даже без его описания
isalnum - это сокращенно IS ALL NUMBERS
Что означает - все симоволы числа
В вашем примере
“земля-2023” не все символы числа - но числа среди них есть. По этому просто нужно пройтись по каждому символу - и если это число - вернуть “True”
def chek_nums(string): for letter in string: if letter.isdigit(): return True return False s1 = "This is test" s2 = "земля-2023" print(chek_nums(s1)) # False print(chek_nums(s2)) # True
Офлайн
ZerG
Ну так это же логично.Давайте посмотрим на сам оператор даже без его описанияisalnum - это сокращенно IS ALL NUMBERSЧто означает - все симоволы числаВ вашем примере“земля-2023” не все символы числа - но числа среди них есть. По этому просто нужно пройтись по каждому символу - и если это число - вернуть “True”
Офлайн
Есть ли более простой метод? Или только через функцию и циклы?
Офлайн
Да есть конечно. Методов то море.
https://www.w3schools.com/python/python_ref_string.asp
Но в данной простейшей задаче сделать проверку без циклов ПРОЩЕ не получится.
Возможность сама есть, ну например хотябы и так:
txt = "0Company X-! 1" # вычислим количество символов в строке без цифр result = len(txt.translate(str.maketrans('', '', '0123456789'))) # Добавим простейшую проверку - если разница будет не 0 значит явно есть цифры if (len(txt) - result) != 0: print(f"{txt} has numbers") else: print(f"{txt} DON'T has numbers")
txt = "0Company X-! 1" for letter in txt: if letter.isdigit(): print("Has numbers") break
Офлайн
DMM
А без цикла нельзя? Я просто еще не проходил функции. Задача с теми о строках.
print(len("земля") != len("земля".strip('123456789')))
Офлайн
ZerG
Да есть конечно. Методов то море.https://www.w3schools.com/python/python_ref_string.aspНо в данной простейшей задаче сделать проверку без циклов ПРОЩЕ не получится.Возможность сама есть, ну например хотябы и так:
Офлайн
xam1816
Офлайн
ZerG
Да есть конечно. Методов то море.https://www.w3schools.com/python/python_ref_string.aspНо в данной простейшей задаче сделать проверку без циклов ПРОЩЕ не получится.Возможность сама есть, ну например хотябы и так:
txt = "0Company X-! 1" # вычислим количество символов в строке без цифр result = len(txt.translate(str.maketrans('', '', '0123456789'))) # Добавим простейшую проверку - если разница будет не 0 значит явно есть цифры if (len(txt) - result) != 0: print(f"{txt} has numbers") else: print(f"{txt} DON'T has numbers")
Офлайн
ZerG
Да есть конечно. Методов то море.https://www.w3schools.com/python/python_ref_string.aspНо в данной простейшей задаче сделать проверку без циклов ПРОЩЕ не получится.Возможность сама есть, ну например хотябы и так:
if (len(txt) - result) != 0:
Отредактировано DMM (Фев. 22, 2024 17:16:16)
Офлайн