Как проверить, является ли строка числом в Python

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

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

Введение

В этом практическом занятии (лабораторной работе) вы узнаете, как определить, представляет ли строка в Python число. Мы начнем с определения различных строк, некоторые из которых похожи на числа, в скрипте Python с именем numeric_strings.py. Этот скрипт выведет эти строки в консоль, подготовив основу для последующего анализа.

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/ErrorandExceptionHandlingGroup(["Error and Exception Handling"]) python/BasicConceptsGroup -.-> python/strings("Strings") python/BasicConceptsGroup -.-> python/type_conversion("Type Conversion") python/FunctionsGroup -.-> python/build_in_functions("Build-in Functions") python/ErrorandExceptionHandlingGroup -.-> python/catching_exceptions("Catching Exceptions") subgraph Lab Skills python/strings -.-> lab-559573{{"Как проверить, является ли строка числом в Python"}} python/type_conversion -.-> lab-559573{{"Как проверить, является ли строка числом в Python"}} python/build_in_functions -.-> lab-559573{{"Как проверить, является ли строка числом в Python"}} python/catching_exceptions -.-> lab-559573{{"Как проверить, является ли строка числом в Python"}} end

Определение числовых строк

На этом этапе мы рассмотрим, как Python обрабатывает строки, представляющие числа. Такие строки называются "числовыми строками". Понимание того, как их идентифицировать и работать с ними, является важным аспектом валидации и обработки данных.

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

Начнем с создания скрипта Python для рассмотрения некоторых примеров.

  1. В редакторе VS Code создайте новый файл с именем numeric_strings.py в директории ~/project.

  2. Добавьте следующий код в файл numeric_strings.py:

## Define some strings
string1 = "123"
string2 = "3.14"
string3 = "-42"
string4 = "0"
string5 = "  56  "
string6 = "abc"
string7 = "123.45.67"
string8 = "1e10"

## Print the strings
print(f"String 1: {string1}")
print(f"String 2: {string2}")
print(f"String 3: {string3}")
print(f"String 4: {string4}")
print(f"String 5: {string5}")
print(f"String 6: {string6}")
print(f"String 7: {string7}")
print(f"String 8: {string8}")
  1. Сохраните файл numeric_strings.py.

  2. Теперь запустите скрипт из терминала:

python numeric_strings.py

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

String 1: 123
String 2: 3.14
String 3: -42
String 4: 0
String 5:   56
String 6: abc
String 7: 123.45.67
String 8: 1e10

Как вы можете видеть, мы определили несколько строк, некоторые из которых похожи на числа. В следующих шагах мы узнаем, как определить, какие из этих строк могут быть безопасно преобразованы в числовые типы.

Использование метода isdigit() для целых чисел

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

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

Давайте модифицируем наш предыдущий скрипт, чтобы использовать метод isdigit():

  1. Откройте файл numeric_strings.py в редакторе VS Code.

  2. Измените код, добавив метод isdigit() следующим образом:

## Define some strings
string1 = "123"
string2 = "3.14"
string3 = "-42"
string4 = "0"
string5 = "  56  "
string6 = "abc"
string7 = "123.45.67"
string8 = "1e10"

## Check if the strings are digits
print(f"String 1 '{string1}' isdigit(): {string1.isdigit()}")
print(f"String 2 '{string2}' isdigit(): {string2.isdigit()}")
print(f"String 3 '{string3}' isdigit(): {string3.isdigit()}")
print(f"String 4 '{string4}' isdigit(): {string4.isdigit()}")
print(f"String 5 '{string5}' isdigit(): {string5.isdigit()}")
print(f"String 6 '{string6}' isdigit(): {string6.isdigit()}")
print(f"String 7 '{string7}' isdigit(): {string7.isdigit()}")
print(f"String 8 '{string8}' isdigit(): {string8.isdigit()}")
  1. Сохраните файл numeric_strings.py.

  2. Запустите скрипт из терминала:

python numeric_strings.py

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

String 1 '123' isdigit(): True
String 2 '3.14' isdigit(): False
String 3 '-42' isdigit(): False
String 4 '0' isdigit(): True
String 5 '  56  ' isdigit(): False
String 6 'abc' isdigit(): False
String 7 '123.45.67' isdigit(): False
String 8 '1e10' isdigit(): False

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

Этот метод полезен для проверки того, может ли строка быть безопасно преобразована в целое число без возникновения ошибки. Однако важно помнить, что метод isdigit() работает только для неотрицательных целых чисел. Для других числовых типов нам придется использовать другие подходы, как мы увидим на следующем этапе.

Попытка преобразования в тип float

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

Функция float() - это встроенная функция в Python, которая пытается преобразовать свой аргумент в число с плавающей точкой. Если аргумент является строкой, то она должна быть корректным представлением числа с плавающей точкой.

Давайте снова модифицируем наш скрипт, чтобы использовать функцию float() и посмотрим, как она обрабатывает разные строки:

  1. Откройте файл numeric_strings.py в редакторе VS Code.

  2. Измените код, добавив функцию float() и обработку возможных ошибок:

## Define some strings
string1 = "123"
string2 = "3.14"
string3 = "-42"
string4 = "0"
string5 = "  56  "
string6 = "abc"
string7 = "123.45.67"
string8 = "1e10"

## Try converting the strings to floats
strings = [string1, string2, string3, string4, string5, string6, string7, string8]

for s in strings:
    try:
        float_value = float(s)
        print(f"String '{s}' can be converted to float: {float_value}")
    except ValueError:
        print(f"String '{s}' cannot be converted to float")
  1. Сохраните файл numeric_strings.py.

  2. Запустите скрипт из терминала:

python numeric_strings.py

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

String '123' can be converted to float: 123.0
String '3.14' can be converted to float: 3.14
String '-42' can be converted to float: -42.0
String '0' can be converted to float: 0.0
String '  56  ' can be converted to float: 56.0
String 'abc' cannot be converted to float
String '123.45.67' cannot be converted to float
String '1e10' can be converted to float: 10000000000.0

Как вы можете видеть, функция float() может успешно преобразовать строки, которые представляют целые числа, десятичные числа и числа в научной нотации. Она также автоматически удаляет начальные и конечные пробелы (как показано на примере string5). Однако, если строка не может быть интерпретирована как корректное число с плавающей точкой, функция вызывает исключение ValueError (как показано на примерах string6 и string7).

Использование блоков try-except позволяет нам элегантно обрабатывать эти возможные ошибки и предотвратить аварийное завершение программы. Это распространенная и важная практика при работе с пользовательским вводом или данными из внешних источников.

Резюме

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

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