如何在 Python 中检查字符串是否仅包含数字

PythonBeginner
立即练习

介绍

在这个实验中,你将学习如何在 Python 中检查一个字符串是否只包含数字。本实验将探讨数字字符串,并介绍 isdigit() 方法,这是 Python 的一个内置函数,用于判断字符串中的所有字符是否都是数字(0 - 9)。

你将创建一个 Python 文件 digit_strings.py,并使用 isdigit() 方法来测试只包含数字的字符串和包含非数字字符的字符串。通过使用不同的字符串示例运行脚本,你将观察到 TrueFalse 的输出,从而了解如何在 Python 中有效地识别数字字符串。

探索数字字符串

在这一步中,你将了解 Python 中的数字字符串以及如何识别它们。数字字符串是仅包含数字字符(0 - 9)的字符串。Python 提供了一个名为 isdigit() 的内置方法,可让你轻松检查字符串是否仅由数字组成。

首先,使用 VS Code 编辑器在你的 ~/project 目录中创建一个名为 digit_strings.py 的 Python 文件。

## 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。它是验证用户输入或处理仅应包含数字的数据的简单而强大的工具。

让我们继续使用你 ~/project 目录中的 digit_strings.py 文件。我们将修改脚本,用各种字符串来测试 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() 方法仅对 ASCII 数字(0 - 9)返回 True,而对其他表示数字的 Unicode 字符不返回 True

检查非数字字符

在这一步中,你将学习如何识别字符串中是否包含任何非数字字符。虽然 isdigit() 方法可用于检查字符串中的 所有 字符是否都是数字,但有时你需要知道字符串中是否至少存在一个非数字字符。

我们可以通过遍历字符串并逐个检查每个字符来实现这一点。让我们修改你 ~/project 目录中的 digit_strings.py 文件来实现这一功能。

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。这展示了该方法验证字符串并确定其是否完全由数字组成的能力。