Как проверить, состоит ли строка только из цифр в Python

PythonPythonBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы научитесь проверять, состоит ли строка только из цифр на Python. В рамках практики будут рассмотрены строки, состоящие из цифр, и будет представлен метод isdigit(), встроенная функция Python, которая определяет, являются ли все символы в строке цифрами (от 0 до 9).

Вы создадите файл Python с именем digit_strings.py и используете метод isdigit() для проверки строк, состоящих только из цифр, и строк, содержащих нецифровые символы. Запустив скрипт с разными примерами строк, вы увидите вывод True или False, что продемонстрирует, как эффективно определять строки, состоящие из цифр, на Python.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python/BasicConceptsGroup -.-> python/strings("Strings") python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/ControlFlowGroup -.-> python/for_loops("For Loops") python/FunctionsGroup -.-> python/build_in_functions("Build-in Functions") subgraph Lab Skills python/strings -.-> lab-559568{{"Как проверить, состоит ли строка только из цифр в Python"}} python/conditional_statements -.-> lab-559568{{"Как проверить, состоит ли строка только из цифр в Python"}} python/for_loops -.-> lab-559568{{"Как проверить, состоит ли строка только из цифр в Python"}} python/build_in_functions -.-> lab-559568{{"Как проверить, состоит ли строка только из цифр в Python"}} end

Исследование строк, состоящих из цифр

На этом этапе вы узнаете о строках, состоящих из цифр, в Python и как их определять. Строка, состоящая из цифр, - это просто строка, содержащая только цифровые символы (от 0 до 9). Python предоставляет встроенный метод isdigit(), который позволяет легко проверить, состоит ли строка только из цифр.

Сначала создадим файл Python с именем digit_strings.py в каталоге ~/project с помощью редактора VS Code.

## Create a string containing only digits
digit_string = "12345"

## Use the isdigit() method to check if the string contains only digits
is_digit = digit_string.isdigit()

## Print the result
print(is_digit)

Сохраните файл. Теперь запустим скрипт с помощью команды python:

python ~/project/digit_strings.py

Вы должны увидеть следующий вывод:

True

Это означает, что строка digit_string содержит только цифры.

Теперь попробуем с строкой, содержащей нецифровые символы:

## Create a string containing digits and letters
non_digit_string = "123abc"

## Use the isdigit() method to check if the string contains only digits
is_digit = non_digit_string.isdigit()

## Print the result
print(is_digit)

Замените содержимое файла digit_strings.py приведенным выше кодом и сохраните его. Запустите скрипт еще раз:

python ~/project/digit_strings.py

Вы должны увидеть следующий вывод:

False

Это означает, что строка non_digit_string содержит символы, которые не являются цифрами.

Использование метода isdigit()

На предыдущем этапе вы узнали основы строк, состоящих из цифр, и как использовать метод isdigit(). На этом этапе мы более подробно рассмотрим метод isdigit() и увидим, как его можно использовать с разными типами строк.

Метод isdigit() - это строковый метод в Python, который возвращает True, если все символы в строке являются цифрами, и False в противном случае. Это простой, но мощный инструмент для валидации пользовательского ввода или обработки данных, которые должны содержать только числа.

Продолжим использовать файл digit_strings.py в каталоге ~/project. Мы изменим скрипт, чтобы протестировать метод isdigit() с различными строками.

Сначала протестируем с пустой строкой:

## Create an empty string
empty_string = ""

## Use the isdigit() method to check if the string contains only digits
is_digit = empty_string.isdigit()

## Print the result
print(is_digit)

Замените содержимое файла digit_strings.py приведенным выше кодом и сохраните его. Запустите скрипт еще раз:

python ~/project/digit_strings.py

Вы должны увидеть следующий вывод:

False

Пустая строка не содержит ни одной цифры, поэтому isdigit() возвращает False.

Далее протестируем с строкой, содержащей только пробелы:

## Create a string containing only spaces
space_string = "   "

## Use the isdigit() method to check if the string contains only digits
is_digit = space_string.isdigit()

## Print the result
print(is_digit)

Замените содержимое файла digit_strings.py приведенным выше кодом и сохраните его. Запустите скрипт еще раз:

python ~/project/digit_strings.py

Вы должны увидеть следующий вывод:

False

Строка, содержащая только пробелы, не считается строкой, состоящей из цифр, поэтому isdigit() возвращает False.

Наконец, протестируем с строкой, содержащей цифры Unicode:

## Create a string containing Unicode digits
unicode_digit_string = "一二三" ## These are Chinese numerals

## Use the isdigit() method to check if the string contains only digits
is_digit = unicode_digit_string.isdigit()

## Print the result
print(is_digit)

Замените содержимое файла digit_strings.py приведенным выше кодом и сохраните его. Запустите скрипт еще раз:

python ~/project/digit_strings.py

Вы должны увидеть следующий вывод:

False

Метод isdigit() возвращает True только для ASCII - цифр (от 0 до 9), а не для других символов Unicode, представляющих числа.

Проверка на наличие нецифровых символов

На этом этапе вы узнаете, как определить, содержит ли строка какие-либо нецифровые символы. Хотя метод isdigit() полезен для проверки, являются ли все символы цифрами, иногда вам нужно узнать, есть ли в строке хотя бы один нецифровой символ.

Мы можем достичь этого, перебрав все символы строки и проверив каждый из них отдельно. Изменим файл digit_strings.py в каталоге ~/project, чтобы реализовать это.

def has_non_digit(input_string):
  """
  Checks if a string contains any non-digit characters.
  """
  for char in input_string:
    if not char.isdigit():
      return True  ## Found a non-digit character
  return False  ## No non-digit characters found


## Test cases
string1 = "12345"
string2 = "123abc"
string3 = "  123"

print(f"'{string1}' has non-digit characters: {has_non_digit(string1)}")
print(f"'{string2}' has non-digit characters: {has_non_digit(string2)}")
print(f"'{string3}' has non-digit characters: {has_non_digit(string3)}")

Замените содержимое файла digit_strings.py приведенным выше кодом и сохраните его. Теперь запустим скрипт с помощью команды python:

python ~/project/digit_strings.py

Вы должны увидеть следующий вывод:

'12345' has non-digit characters: False
'123abc' has non-digit characters: True
'  123' has non-digit characters: True

В этом скрипте мы определяем функцию has_non_digit(), которая перебирает каждый символ входной строки. Если она находит символ, который не является цифрой, используя not char.isdigit(), она сразу возвращает True. Если цикл завершается без нахождения нецифровых символов, функция возвращает False.

Этот подход позволяет быстро определить, содержит ли строка какие-либо нецифровые символы, что может быть полезно для валидации данных и других задач.

Резюме

В этом практическом занятии (лабораторной работе) вы изучили, как проверить, состоит ли строка только из цифр в Python. Вы узнали, что строка, состоящая из цифр, содержит только числовые символы (от 0 до 9), и что Python предоставляет встроенный метод isdigit() для простой проверки.

Вы попрактиковались в использовании метода isdigit() с строками, содержащими только цифры (в этом случае метод возвращает True), и строками, содержащими нецифровые символы (в этом случае метод возвращает False). Это показало способность метода валидировать строки и определять, состоят ли они полностью из цифр.