Python | Проверьте, содержит ли строка только цифры или нет
По заданной строке напишите программу на Python, чтобы определить, содержит ли строка только цифры или нет. Давайте рассмотрим несколько способов решения вышеуказанной задачи.
Метод № 1: Использование метода isdigit()
# Python3 код для демонстрации
# как проверить, содержит ли строка
# только цифры или нет
# печать исходной строки
print ( «String1 contains all numbers» )
print ( «String1 doesn’t contains all numbers» )
print ( «String2 conatins all numbers» )
print ( «String2 doesn’t contains all numbers» )
Метод № 2: Использование регулярных выражений
# Python3 код для демонстрации
# как проверить, содержит ли строка
# только цифры или нет
# печать исходной строки
print ( «String1 contains all numbers» )
print ( «String1 doesn’t contains all numbers» )
print ( «String2 conatins all numbers» )
print ( «String2 doesn’t contains all numbers» )
Способ № 3: Использование try / exception
# Python3 код для демонстрации
# как проверить, содержит ли строка
# только цифры или нет
# печать исходной строки
# Использование try / exception:
num = int (ini_string1)
print ( «String1 contains only digits» )
print ( «String1 doesn’tcontains only digits» )
num = int (ini_string2)
print ( «String2 contains only digits» )
print ( «String2 doesn’t contains only digits» )
Проверка на число
Достаточно часто требуется узнать: записано ли в переменной число. Такая ситуация может возникнуть при обработке введенных пользователем данных. При чтении данных из файла или при обработке полученных данных от другого устройства.
В Python проверка строки на число можно осуществить двумя способами:
Рассмотрим как применяются эти способы на практике.
isdigit, isnumeric и isdecimal
У строк есть метод isdigit, который позволяет проверить, являются ли символы, являются ли символы, из которых состоит строка цифрами. С помощью этого метода мы можем проверить, записано ли в строку целое положительное число или нет. Положительное — это потому, что знак минус не будет считаться цифрой и метод вернет значение False.
Если в строка будет пустой, то функция возвратит False.
Методы строки isnumeric и isdecimal работают аналогично. Различия в этих методах только в обработке специальных символов Unicode. А так как пользователь будет вводить цифры от 0 до 9, а различные символы, например, дробей или римских цифр нас не интересуют, то следует использовать функцию isdigit.
Проверка с помощью исключения
Что же делать, если требуется проверить строку на отрицательное число. В Python с помощью isdigit не удастся определить отрицательное число или число с плавающей точкой. В этом случае есть универсальный и самый надежный способ. Надо привести строку к вещественному числу. Если возникнет исключение, то значит в строке записано не число.
Приведем функцию и пример ее использования:
Для целых чисел
Аналогично можно сделать и проверку на целое число:
Python-найти цифры в строке
выше-это код, который я использовал, и проблема в том, что он возвращает только первый символ из строки. Для этого я должен сохранить оба оператора for loop и return. Кто знает как исправить?
6 ответов
ваш отступ немного borked (отступ в Python довольно важен). Лучше:
более короткое и быстрое решение с использованием выражений генератор:
как говорили другие, у вас есть семантическая проблема в вашем отступе, но вам не нужно писать такую функцию, чтобы сделать это, более питонический способ сделать это:
совет
всегда проверяйте вещи самостоятельно, когда люди показывают «более быстрые» методы:
это потому, что ваш return оператор находится внутри цикла for, поэтому он возвращается после первого true if состояние и останавливается.
конечно, он возвращает только первую цифру, вы явно говорите Python вернуться, как только у вас есть цифра.
изменить отступ return заявление и он должен работать:
существует проблема отступа, которая возвращается, когда она находит первую цифру, как и в текущем отступе, она интепретируется как оператор внутри if заявление, он должен быть параллельным for заявление быть рассмотренным вне for заявление.
фигурные скобки, эквивалентные вашему неправильному коду:
ранее, ваша функция возвращала только первая цифра, потому что, когда он нашел один if заявление было выполнено, как и return (заставляя вас возвращаться из функции, которая означала вы не продолжали смотреть через строку).
пробелы/отступы действительно вопросы в Python, как вы можете видеть (в отличие от многих других языков).
Как проверить, что строка содержит только цифры и / в Python?
Я пытаюсь проверить, что строка содержит только / и цифры, чтобы использовать в качестве формы проверки, однако я не могу найти и способ сделать оба. Банкомат у меня такой:
Это работает для цифр, но я не нашел способ проверить также для слэшей.
6 ответов
Есть много вариантов, как показано здесь. Хороший был бы список понимания.
Мы можем проверить, совпадает ли их символ, используя isdigit() и сравнение:
Но мы хотим знать, совпадают ли все символы. Мы можем получить список результатов с помощью списочных представлений:
Поскольку мы хотим, чтобы все символы совпадали, мы можем использовать all() функция. Ожидается список значений; если хотя бы один из них является ложным, то он возвращает ложное:
Бонусные очки
Поставить на функцию
Вам бы лучше поставить это на функцию:
Генератор выражений
выражения генератора имеют тенденцию быть более эффективными:
Но в вашем случае это, вероятно, незначительно в любом случае.
Обратите внимание, что это только один из вариантов. К сожалению, ваша проблема не справилась с этой рекомендацией Zen of Python ( <
Должен быть один, а лучше всего один, очевидный способ сделать это.
Но это нормально, теперь вы можете выбрать все, что вы предпочитаете 🙂
Вы можете использовать цикл for для проверки за символом
41 вопрос о работе со строками в Python
Я начал вести список наиболее часто используемых функций, решая алгоритмические задачи на LeetCode и HackerRank.
Быть хорошим программистом — это не значит помнить все встроенные функции некоего языка. Но это не означает и того, что их запоминание — бесполезное дело. Особенно — если речь идёт о подготовке к собеседованию.
Хочу сегодня поделиться со всеми желающими моей шпаргалкой по работе со строками в Python. Я оформил её в виде списка вопросов, который использую для самопроверки. Хотя эти вопросы и не тянут на полноценные задачи, которые предлагаются на собеседованиях, их освоение поможет вам в решении реальных задач по программированию.

1. Как проверить два объекта на идентичность?
Оператор is возвращает True в том случае, если в две переменные записана ссылка на одну и ту же область памяти. Именно об этом идёт речь при разговоре об «идентичности объектов».
Обратите внимание на то, что animals и even_more_animals не идентичны, хотя и равны друг другу.
2. Как проверить то, что каждое слово в строке начинается с заглавной буквы?
3. Как проверить строку на вхождение в неё другой строки?
4. Как найти индекс первого вхождения подстроки в строку?
5. Как подсчитать количество символов в строке?
Функция len() возвращает длину строки.
6. Как подсчитать то, сколько раз определённый символ встречается в строке?
7. Как сделать первый символ строки заглавной буквой?
8. Что такое f-строки и как ими пользоваться?
9. Как найти подстроку в заданной части строки?
Метод index() можно вызывать, передавая ему необязательные аргументы, представляющие индекс начального и конечного фрагмента строки, в пределах которых и нужно осуществлять поиск подстроки.
10. Как вставить содержимое переменной в строку, воспользовавшись методом format()?
11. Как узнать о том, что в строке содержатся только цифры?
Используя этот метод, учитывайте то, что знаки препинания он цифрами не считает.
12. Как разделить строку по заданному символу?
13. Как проверить строку на то, что она составлена только из строчных букв?
Метод islower() возвращает True только в том случае, если строка составлена исключительно из строчных букв.
14. Как проверить то, что строка начинается со строчной буквы?
Сделать это можно, вызвав вышеописанный метод islower() для первого символа строки.
15. Можно ли в Python прибавить целое число к строке?
16. Как «перевернуть» строку?
Для того чтобы «перевернуть» строку, её можно разбить, представив в виде списка символов, «перевернуть» список, и, объединив его элементы, сформировать новую строку.
17. Как объединить список строк в одну строку, элементы которой разделены дефисами?
Метод join() умеет объединять элементы списков в строки, разделяя отдельные строки с использованием заданного символа.
18. Как узнать о том, что все символы строки входят в ASCII?
Метод isascii() возвращает True в том случае, если все символы, имеющиеся в строке, входят в ASCII.
19. Как привести всю строку к верхнему или нижнему регистру?
20. Как преобразовать первый и последний символы строки к верхнему регистру?
Тут, как и в одном из предыдущих примеров, мы будем обращаться к символам строки по индексам. Строки в Python иммутабельны, поэтому мы будем заниматься сборкой новой строки на основе существующей.
21. Как проверить строку на то, что она составлена только из прописных букв?
22. В какой ситуации вы воспользовались бы методом splitlines()?
Метод splitlines() разделяет строки по символам разрыва строки.
23. Как получить срез строки?
Для получения среза строки используется синтаксическая конструкция следующего вида:
24. Как преобразовать целое число в строку?
25. Как узнать о том, что строка содержит только алфавитные символы?
Метод isalpha() возвращает True в том случае, если все символы в строке являются буквами.
26. Как в заданной строке заменить на что-либо все вхождения некоей подстроки?
27. Как вернуть символ строки с минимальным ASCII-кодом?
Если взглянуть на ASCII-коды элементов, то окажется, например, что прописные буквы имеют меньшие коды, чем строчные. Функция min() возвращает символ строки, имеющий наименьший код.
28. Как проверить строку на то, что в ней содержатся только алфавитно-цифровые символы?
29. Как удалить пробелы из начала строки (из её левой части), из её конца (из правой части), или с обеих сторон строки?
30. Как проверить то, что строка начинается с заданной последовательности символов, или заканчивается заданной последовательностью символов?
31. Как закодировать строку в ASCII?
32. Как узнать о том, что строка включает в себя только пробелы?
33. Что случится, если умножить некую строку на 3?
Будет создана новая строка, представляющая собой исходную строку, повторённую три раза.
34. Как привести к верхнему регистру первый символ каждого слова в строке?
35. Как объединить две строки?
36. Как пользоваться методом partition()?
Метод partition() разбивает строку по заданной подстроке. После этого результат возвращается в виде кортежа. При этом подстрока, по которой осуществлялась разбивка, тоже входит в кортеж.
37. Строки в Python иммутабельны. Что это значит?
При конкатенации ‘Rise each day before the sun’ и ‘ if its a weekday’ в памяти создаётся новый объект, имеющий новый идентификатор. Если бы исходный объект менялся бы, тогда у объектов был бы один и тот же идентификатор.
38. Если объявить одну и ту же строку дважды (записав её в 2 разные переменные) — сколько объектов будет создано в памяти? 1 или 2?
В качестве примера подобной работы со строками можно привести такой фрагмент кода:
При таком подходе в памяти создаётся лишь один объект. Когда я столкнулся с этим в первый раз, мне это не показалось интуитивно понятным. Но этот механизм помогает Python экономить память при работе с длинными строками.
39. Как пользоваться методами maketrans() и translate()?
Метод maketrans() позволяет описать отображение одних символов на другие, возвращая таблицу преобразования.
Метод translate() позволяет применить заданную таблицу для преобразования строки.
40. Как убрать из строки гласные буквы?
Один из ответов на этот вопрос заключается в том, что символы строки перебирают, пользуясь механизмом List Comprehension. Символы проверяют, сравнивая с кортежем, содержащим гласные буквы. Если символ не входит в кортеж — он присоединяется к новой строке.
41. В каких ситуациях пользуются методом rfind()?
Итоги
Я часто объясняю одному продакт-менеджеру, человеку в возрасте, что разработчики — это не словари, хранящие описания методов объектов. Но чем больше методов помнит разработчик — тем меньше ему придётся гуглить, и тем быстрее и приятнее ему будет работаться. Надеюсь, теперь вы без труда ответите на рассмотренные здесь вопросы.
Уважаемые читатели! Что, касающееся обработки строк в Python, вы посоветовали бы изучить тем, кто готовится к собеседованию?


