Найти - Пользователи
Полная версия: Помогите проверить входят ли числа от 0-9 в строку
Начало » Python для новичков » Помогите проверить входят ли числа от 0-9 в строку
1 2 3 4
DMM
Добрый день всем!!
Нужно проверить входят ли числа от 0 до 9 в строку «Земля-2023»???

Делаю через метод isalnum из-за того что есть - Оно выдает False ((

 print("земля-2023".isalnum())
ZerG
Ну так это же логично.
Давайте посмотрим на сам оператор даже без его описания
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

DMM
ZerG
Ну так это же логично.Давайте посмотрим на сам оператор даже без его описанияisalnum - это сокращенно IS ALL NUMBERSЧто означает - все симоволы числаВ вашем примере“земля-2023” не все символы числа - но числа среди них есть. По этому просто нужно пройтись по каждому символу - и если это число - вернуть “True”

А без цикла нельзя? Я просто еще не проходил функции. Задача с теми о строках.
DMM
Есть ли более простой метод? Или только через функцию и циклы?
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")

Но вы должны понимать что всеравно внутри это будут циклы. Более того я не уверен что с вашим уровнем знаний на данный момент вы можете понять что данный код делает.
Фнкции же тут - совершенно не причем ибо можно обойтись и без них

 txt = "0Company X-! 1"
for letter in txt:
    if letter.isdigit():
        print("Has numbers")
        break
xam1816
DMM
А без цикла нельзя? Я просто еще не проходил функции. Задача с теми о строках.
 print(len("земля") != len("земля".strip('123456789')))
DMM
ZerG
Да есть конечно. Методов то море.https://www.w3schools.com/python/python_ref_string.aspНо в данной простейшей задаче сделать проверку без циклов ПРОЩЕ не получится.Возможность сама есть, ну например хотябы и так:

Спасибо за пояснение)) Читаю как раз о цыклах, да логичней и правильней делать конечно через них, но просто задача еще с теми о строках и как бы предполагает решение только методом строк. Просто думал что такой метод сушествуе.
DMM
xam1816

Если так то всегда будет возвращать True, а если к примеру строка не имеет чисел тогда как проверить вхождение если результат всегда один и тот же???
DMM
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")

А можете хочь немного рассказать о методе translate и maketranslate, а то почитал в инете и не очень понимаю как они работают, какие у них обизательные параметры?
DMM
ZerG
Да есть конечно. Методов то море.https://www.w3schools.com/python/python_ref_string.aspНо в данной простейшей задаче сделать проверку без циклов ПРОЩЕ не получится.Возможность сама есть, ну например хотябы и так:

 if (len(txt) - result) != 0:
    

Еще хотел спросить по поводу вот этой записи не очень понимаю что значит здесь знак - между переменными ?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB